
阅读其他语言版本:English, Español, Deutsch, Français, italiano, 简体中文.
Packet Sender 是一款开源工具,可用于发送和接收 TCP、UDP 以及 SSL(加密 TCP)数据包,同时支持 HTTP/HTTPS 请求和面板生成。主分支正式支持 Windows、Mac 和桌面 Linux(基于 Qt)。其他平台可能会重新编译并重新分发 Packet Sender。Packet Sender 完全免费,采用 GPL v2 或更高版本许可,可用于商业和个人用途。如果您觉得这款应用有用,请考虑捐赠或赞助,以便开发工作得以持续。
Packet Sender 感谢以下赞助商。
Eletiope 为展览馆、博物馆和企业展厅提供照明、视听和沉浸式空间安装服务。
John Huntington
作家、顾问、教育家、音响工程师、获奖摄影师和风暴追逐者。
注意: 如果在 Windows 上遇到问题,请尝试(临时)禁用防火墙。
Packet Sender 的官方发布版可从 PacketSender.com 下载。部分平台会重新分发 Packet Sender。

Packet Sender for iOS 是完全原生的,只包含最低权限,不收集任何数据。这是一款尊重用户的软件。感谢您支持这项工作。
iOS 版本位于 Apple App Store
Packet Sender 在所有桌面平台上的界面完全一致,仅主题会适配操作系统。

顶部字段可使用 CTRL+1、CTRL+2 … CTRL+8(发送按钮)进行导航。在 Mac 上快捷键为 Command。
快捷键与对应字段如下:
部分说明:
默认情况下,Packet Sender 启动时会在随机端口上启用 UDP、TCP 和 SSL 服务器(显示在右下角按钮)。您可以使用逗号分隔的端口号绑定任意数量端口,例如 0, 1000, 2000 将绑定“随机”端口以及 1000、2000 端口。

UDP 按钮现在显示已绑定 3 个端口,其中 1 个是随机的。

另一项设置是对所有请求回复响应。您也可以让响应包含宏。有一个字段用于输入响应(或加载已保存的数据包)。
默认情况下 Packet Sender 绑定到任意 IPv4 地址。在设置的该区域,您可以改为绑定任意 IPv6 地址或指定 IP 地址。
绑定到特定地址在有多张网卡时非常有用,可强制(如广播数据包)从指定网卡发出。

部分协议要求服务器在客户端发送前先发送数据(如许多 telnet 服务)。可通过“接收后再发送”启用此流程。
如果您的设备较慢(如处理器较弱的嵌入式服务器),建议启用“连接后延迟 500 ms”,让慢速服务器有时间启动处理程序。
Packet Sender 的内置服务器配置为同时支持 IPv4 或 IPv6,但不能同时支持两者。对于客户端,Packet Sender GUI 和 CLI 在发送时会自动无缝切换两种模式(IPv6 可能需要 scope ID)。点击右下角的 IPv4 / IPv6 切换按钮即可切换。
在设置中,您还可以强制 Packet Sender 的服务器绑定到自定义 IP 地址。这对拥有多网卡或复杂 IP 配置的系统非常有用。如果绑定的地址不存在,Packet Sender 会触发错误。

Packet Sender 内置子网计算器,位于“工具”菜单中。
Wake-On-LAN(或 WOL)是一种协议,用于将计算机从睡眠状态唤醒。它通过发送包含基于目标 MAC 地址的特殊数据的广播包来触发。更多信息请参阅 Wikipedia。
Packet Sender 内置 WOL 生成器,位于“工具”菜单。

填写选项后,主界面会自动填充正确的 WOL 格式数据。

此外还有 CLI 选项可帮助生成和发送 WOL 数据包
packetsender --wol f8:23:66:30:e5:30
Sending broadcast Wake-On-LAN to target: F8:23:66:30:E5:30 on port 7
UDP (60360)://255.255.255.255:7 ff ff ff ff ff ff f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30 f8 23 66 30 e5 30
Packet Sender 支持通过 SSL 建立加密连接。
此功能在图形界面(GUI)和命令行中均受支持。
Packet Sender 在 Windows 上捆绑了 OpenSSL。在 Mac 和 Linux 上,Packet Sender 将使用系统原生的 SSL 库。
SSL 注意事项:
Packet Sender 为 Windows 上的服务器模式捆绑了一个内部的“Snake Oil”证书。证书和密钥文件与数据包文件及设置文件位于同一位置。
注意:在设置中更改证书路径也会同时覆盖 snake-oil 证书。
如果发生 SSL 错误,Packet Sender 会将其记录到流量日志中。如果设置为“继续”(默认设置),则会继续进行加密协商;否则连接将以连接失败结束。

Packet Sender 的多播支持通过尝试向 IPv4 多播地址发送数据或从多播子菜单触发。该功能目前处于实验阶段,并存在以下已知问题:
目前尚不支持 IPv6 多播,但已列入开发路线图。希望获得 IPv6 多播支持的赞助商欢迎联系我。
当普通发送方式不足以满足需求时,您可以向目标 IP 疯狂发送数据包,测试您的设备能否承受高强度流量。
此功能位于图形界面工具栏的 工具 → Intense Traffic Generator。
请注意,此功能处于实验阶段,显示的指标尚未经过全面验证。如需更准确的测试,建议使用该工具的命令行版本。
使用免费的 Packet Sender Cloud 服务,您可以快速保存、获取和共享数据包集。
Cloud 也可用于公开展示和分发您的数据包(通过 URL),便于协作、编写教程、供最终用户使用等。Packet Sender 支持通过公开 URL 导入公共数据包集。
这样做有多种理由:

如果您正在发布网络 API,维护一个公开的 Cloud 页面比逐一痛苦地向用户说明(IP、端口、类型等)要轻松得多。而且更新页面也非常简单。
更多信息请访问
https://cloud.packetsender.com/help
Packet Sender 支持“便携”模式。启动时会查找 portablemode.txt 文件,并在当前运行目录中创建或使用缺失的设置文件。这些文件包括:
packets.ini、ps_settings.ini、ps.key 和 ps.pem。
您也可以删除 portablemode.txt 文件,让部分文件保持便携模式,而其他文件使用系统标准位置。
如果不需要图形界面,可以删除以下 DLL:
注意:文件名中带有 + 字符的 DLL 在 Windows 命令行复制时,如果不使用双引号 " 包围,可能会出现问题。
如果不使用 SSL,可以删除以下 DLL:
Windows 用户的运行目录与 .exe 文件所在位置相同。
Mac 用户的运行目录位于 PacketSender.app/Contents/MacOS。
如果在此位置找到 INI 文件,将优先使用它们,而非 %APPDATA% 或 Library/Application Support。
Packet Sender 支持最多 5 个智能响应。
要启用此功能,请在图形界面工具栏中进入 文件 → 设置,切换到 Smart Responses 选项卡,并勾选 Send a Smart Response 复选框。
Packet Sender 在发送响应时支持以下宏:
Packet Sender 会在实际发送前将宏替换为真实值。
Packet Sender 通过独立的图形窗口支持持久 TCP 和 SSL 连接。
可在主窗口复选框或设置窗口中启用该功能。
命令行模式不支持持久连接。
Packet Sender 支持发送 HTTP 和 HTTPS 的 POST/GET 请求。
协议下拉菜单包含以下选项:HTTP GET、HTTP POST、HTTPS GET、HTTPS POST。
选择 HTTP(S) 后,输入字段会更新为:名称、Request、Address、Data(POST 时显示)、Generate Data 按钮(POST 时显示)、Load File 按钮(POST 时显示)。
您也可以直接在 Request 字段粘贴完整 URL,Packet Sender 会自动解析并填充其他字段。
key=valuekey=value&key=value&key=value
Packet Sender 支持生成控制面板。面板由多个按钮组成,每个按钮关联脚本(数据包)。点击按钮将执行该按钮上引用的数据包。
面板可以通过以下两种方式创建:
Packet Sender 支持使用命令行参数 --starterpanel 以仅面板模式启动并加载启动面板
要开始为面板按钮编写脚本,请打开一个面板项目并切换到编辑界面。
打开项目后,检查右下角按钮:如果显示 “Viewing”,则处于查看模式;点击该按钮切换到编辑模式。
进入编辑界面后,即可添加按钮和脚本。
按钮脚本中填写要发送的数据包名称。
可为一个按钮设置多个数据包,每行填写一个名称。
面板生成器支持在多个数据包之间添加延迟,方法是在数据包之间插入 delay:_秒数_
面板生成器还支持加载新面板,方法是添加 panel:_面板ID_
面板生成器支持添加链接到本地文件或网络 URL 的按钮。
在编辑界面点击右下角的 + 按钮即可添加文件/URL 按钮。
粘贴完成后,系统会提示输入按钮名称。按钮将显示在面板底部。
在编辑界面点击这些按钮可修改链接和按钮名称,也可点击弹窗中的 X 删除按钮。
在查看界面点击这些按钮将:
在面板编辑界面会出现包含 File、Export、Settings、Help 的工具栏。
您可以通过此工具栏保存、导出、导入、加载面板项目并编辑当前项目。
在 Settings 菜单中可执行以下操作:
目前 DTLS 仅在 Windows 的图形界面中支持。其他操作系统可通过使用 Qt6 从源代码编译来启用。
此仓库包含 DTLS(数据报传输层安全)协议功能。该功能增加了图形界面,用于配置和管理 DTLS 连接,包括服务器验证和会话持久化选项。






使用 Wireshark 抓包:


Packet Sender 支持通过命令行在计算机上使用。
Windows 用户请使用 .com 扩展名(packetsender.com)进入命令行界面。
也可以不带扩展名直接使用 packetsender。使用 .exe 扩展名会启动图形界面。

Linux 用户的命令行遵循与其他 Linux 工具相同的模式:支持长选项(如 --version)和短选项(如 -v),选项顺序任意,Packet Sender 会正确解析。
最后三个参数是位置参数,必须放在最后:IP、端口、数据。
如果使用已保存的数据包,则这三个参数可选。
packetsender --help
Usage: C:\Program Files\PacketSender\packetsender.com [options] address port data
Packet Sender is a Network UDP/TCP/SSL/HTTP Test Utility by NagleCode
See https://PacketSender.com/ for more information.
Options:
-h, --help Displays help on commandline options.
--help-all Displays help including Qt specific options.
-v, --version Displays version information.
-q, --quiet Quiet mode. Only output received data.
-x, --hex Parse data-to-send as hex (default for
TCP/UDP/SSL).
-a, --ascii Parse data-to-send as mixed-ascii (default for http
and GUI).
-A, --ASCII Parse data-to-send as pure ascii (no \xx
translation).
-l, --listen Listen instead of send. Use bind options to specify
port/IP. Otherwise, dynamic/All.
-r, --response <ascii> Server mode response data in mixed-ascii. Macro
supported.
-w, --wait <ms> Wait up to <milliseconds> for a response after
sending. Zero means do not wait (Default).
-f, --file <path> Send contents of specified path. Max 10 MiB for
UDP, 100 MiB for TCP/SSL.
-b, --bind <port> Bind port. Default is 0 (dynamic).
-6, --ipv6 Force IPv6. Same as -B "::". Default is IP:Any.
-4, --ipv4 Force IPv4. Same as -B "0.0.0.0". Default is
IP:Any.
-B, --bindip <IP> Bind custom IP. Default is IP:Any.
-t, --tcp Send TCP (default).
-s, --ssl Send SSL and ignore errors.
-S, --SSL Send SSL and stop for errors.
-u, --udp Send UDP.
--http <http> Send HTTP. Allowed values are GET (default) and
POST
-n, --name <name> Send previously saved packet named <name>. Other
options overrides saved packet parameters.
--wol <mac> Send Wake-On-LAN / Magic Packet to <mac> and
(optional) <port>.
--bps <bps> Intense traffic. Calculate rate based on value of
bits per second.
--num <number> Intense traffic. Number of packets to send. Default
unlimited.
--rate <Hertz> Intense traffic. Rate. Ignored in bps option.
--usdelay <microseconds> Intense traffic. Resend delay. Used if rate is 0.
Ignored in bps option.
--max Intense traffic. Run as fast as possible.
Arguments:
address Destination address/URL. Optional for saved packet.
port Destination port/POST data. Optional for saved
packet.
data Data to send. Optional for saved packet.
CLI 在 Windows、Linux 和 Mac 上遵循相同的格式。
格式为:packetsender [options] address port data
packetsender -taw 500 mirrors.xmission.com 21 "USER anonymous\r\nPASS [email protected]\r\n"
TCP (65505)://mirrors.xmission.com:21 55 53 45 52 20 61 6e 6f 6e 79 6d 6f 75 73 0d 0a 50 41 53 53 20 63 68 72 6f 6d 65 40 65 78 61 6d 70 6c 65 2e 63 6f 6d 0d 0a
Response Time:5:51:37.042 pm
Response HEX:32 32 30 2D 57 65 6C 63 6F 6D 65 20...
Response ASCII:220-Welcome to XMission Internet...
使用现有的绑定选项来配置服务器:
-b 用于指定端口-B 用于指定 IP-t / -u / -s 用于 TCP、UDP 或 SSL-r 用于发送响应(支持 ASCII 格式的宏)绑定到动态端口使用 TCP
packetsender -l
TCP Server started on 0.0.0.0:52567
Use ctrl+c to exit server.
From: 127.0.0.1, Port:52568
Response Time:2024-06-04 19:01:53.198
Response HEX:48 65 6C 6C 6F
Response ASCII:Hello
From: 127.0.0.1, Port:52569
Response Time:2024-06-04 19:02:24.063
Response HEX:57 6F 72 6C 64
Response ASCII:World
绑定到端口 8080 使用 UDP
packetsender -l -u -b 8080
UDP Server started on 0.0.0.0:8080
Use ctrl+c to exit server.
From: ::ffff:127.0.0.1, Port:49500
Response Time:2024-06-04 19:04:28.890
Response HEX:48 65 6C 6C 6F 20 55 44 50 20 50 61 63 6B 65 74
Response ASCII:Hello UDP Packet
绑定到端口 8080 使用 UDP 并返回当前时间响应
packetsender -l -u -b 8080 -r "{{TIME}}"
Loading response packet.
UDP Server started on 0.0.0.0:8080
Use ctrl+c to exit.
From: ::ffff:127.0.0.1, Port:59594
Response Time:2024-06-05 20:48:18.180
Response HEX:68 65 6C 6C 6F 20 70 61 63 6B 65 74 20 73 65 6E 64 65 72
Response ASCII:hello packet sender
From: You (Response), Port:59594
Response Time:2024-06-05 20:48:18.182
Response HEX:30 38 3a 34 38 3a 31 38 20 70 6d
Response ASCII:08:48:18 pm
绑定到 IP 192.168.86.26,端口 54321 使用 SSL
packetsender -l -s -B 192.168.86.26 -b 54321
Binding to custom IP 192.168.86.26
Listening for SSL packets in server mode.
SSL Server started on 192.168.86.26:54321
Use ctrl+c to exit server.
From: 192.168.86.26, Port:52588
Response Time:2024-06-04 19:11:30.726
Error/Info:Encrypted with AESGCM(256)
From: 192.168.86.26, Port:52588
Response Time:2024-06-04 19:11:30.726
Error/Info:Authenticated with RSA
From: 192.168.86.26, Port:52588
Response Time:2024-06-04 19:11:30.726
Error/Info:Peer cert issued by
From: 192.168.86.26, Port:52588
Response Time:2024-06-04 19:11:30.726
Error/Info:Our Cert issued by SnakeOil
From: 192.168.86.26, Port:52588
Response Time:2024-06-04 19:11:30.747
Response HEX:43 6F 6F 6C 20 53 53 4C
Response ASCII:Cool SSL
Packet Sender 的命令行可以通过 -B 选项绑定自定义端口,以强制使用 IPv4/6 模式或指定多网卡(NIC)。
packetsender -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B 192.168.0.200 -taw 3000 192.168.0.201 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a%ethernet_32769 -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
packetsender -B fe80::a437:399a:3091:266a -taw 3000 fe80::c07b:d517:e339:5a08 5005 "Hello\r"
命令行支持选择忽略 SSL 错误或在出现错误时中止。默认行为是忽略。
-s 选项发送 SSL 并忽略错误。-S 选项发送 SSL 并在出现错误时停止。packetsender -saw 500 expired.packetsender.com 443 "GET / HTTP/1.0\r\n\r\n"
SSL Error: The certificate has expired
SSL (54202)://expired.packetsender.com:443 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 30 0d 0a 0d 0a
Cipher: Encrypted with AES(128)
Response Time:3:24:55.695 pm
Response HEX:48 54 54 50 2f 31 2e 31 20 34 32 31 20 0d 0a 53 65 72 76 65 72 3a 20 6e 67 69 6e 78 2f 31 2e 31 30 2e 30 20 28 55 62 75 6e 74 75 29 0d
Response ASCII:HTTP/1.1 421 \r\nServer: nginx/1.10.0 (Ubuntu)\r
注意:此示例使用内置的默认数据包。
packetsender --name "HTTPS POST Params"
packetsender --http GET "https://httpbin.org/get"
packetsender --http POST "https://httpbin.org/post" "{}"
命令行高强度流量生成器的工作方式与图形界面版本基本相同,但精度稍高、控制选项更多(强度也更高!)。
下面是一些使用示例。请注意,这些计算属于“尽力而为”(Best Effort)。它表现良好,但处理器峰值或网络抖动等因素可能会影响实际效果。线程不是实时线程,补偿机制也不够智能。
注意:Windows 用户请使用 ".com" 构建版本,因此每个示例中应使用 packetsender.com
packetsender --rate 20 --name "My Awesome Packet"
packetsender --bps 2000 --name "My Awesome Packet"
packetsender --rate 0 --name "My Awesome Packet"
packetsender --usdelay 2000000 --name "My Awesome Packet"
唯一依赖是 Qt SDK
Windows 和 Mac 版本使用 Qt 5.12 构建。Packet Sender 也支持 Qt 6,但不支持 cmake。
以下是 Ubuntu 16.04 的命令序列。请根据您的 Linux 发行版进行调整。Packet Sender 除了标准 Qt SDK 之外不需要任何额外库。据反馈,Fedora 原版存在编译问题。如果有 Fedora 高手有经验,请告诉我,我会添加您的说明。
如果您想冒险,可以从 master 分支编译。它包含最新的稳定版本。development 分支大概应该避免使用。
sudo apt-get update
sudo apt-get install qt5-default build-essential
wget https://github.com/dannagle/PacketSender/archive/(Version).tar.gz
tar -xzvf (Version).tar.gz
cd PacketSender-(Version)/src
qmake PacketSender.pro
make
运行方式:
./PacketSender
如果无法运行,您可能需要为其设置可执行权限
chmod a+x PacketSender
缺少某项功能?您可以雇佣我将其添加到 Packet Sender。
许可协议为 GPL v2 或更高版本。如果您需要其他许可,请联系我。 部分 Packet Sender 发行版可能会使用 OpenSSL。 最新的 VPAT 可在此仓库中找到。
Packet Sender 由 Dan Nagle 编写,由 © NagleCode, LLC 发布 - @NagleCode - PacketSender.com