Packet Sender Logo
阅读其他语言版本: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 感谢以下赞助商。
IWL
IWL 是一家位于加州的计算机网络产品制造商。
NagleCode
NagleCode 是一家软件发行商和开发工作室。
Eletiope
Eletiope 为展览馆、博物馆和企业展厅提供照明、视听和沉浸式空间安装服务。
John Huntington
作家、顾问、教育家、音响工程师、获奖摄影师和风暴追逐者。
注意: 如果在 Windows 上遇到问题,请尝试(临时)禁用防火墙。
Packet Sender 的官方发布版可从 PacketSender.com 下载。部分平台会重新分发 Packet Sender。
Windows Logo Mac Logo Linux Logo
Packet Sender for iOS 是完全原生的,只包含最低权限,不收集任何数据。这是一款尊重用户的软件。感谢您支持这项工作。
iOS 版本位于 Apple App Store
Packet Sender 在所有桌面平台上的界面完全一致,仅主题会适配操作系统。
Packet Sender screenshot
顶部字段可使用 CTRL+1、CTRL+2 ... CTRL+8(发送按钮)进行导航。在 Mac 上快捷键为 Command。
快捷键与对应字段如下:
部分说明:
默认情况下,Packet Sender 启动时会在随机端口上启用 UDP、TCP 和 SSL 服务器(显示在右下角按钮)。您可以使用逗号分隔的端口号绑定任意数量端口,例如 0, 1000, 2000 将绑定"随机"端口以及 1000、2000 端口。
Basic Network Settings
UDP 按钮现在显示已绑定 3 个端口,其中 1 个是随机的。
Bound UDP Example
另一项设置是对所有请求回复响应。您也可以让响应包含宏。有一个字段用于输入响应(或加载已保存的数据包)。
默认情况下 Packet Sender 绑定到任意 IPv4 地址。在设置的该区域,您可以改为绑定任意 IPv6 地址或指定 IP 地址。
绑定到特定地址在有多张网卡时非常有用,可强制(如广播数据包)从指定网卡发出。
Bound UDP Example
部分协议要求服务器在客户端发送前先发送数据(如许多 telnet 服务)。可通过"接收后再发送"启用此流程。
如果您的设备较慢(如处理器较弱的嵌入式服务器),建议启用"连接后延迟 500 ms",让慢速服务器有时间启动处理程序。
Packet Sender 的内置服务器配置为同时支持 IPv4 或 IPv6,但不能同时支持两者。对于客户端,Packet Sender GUI 和 CLI 在发送时会自动无缝切换两种模式(IPv6 可能需要 scope ID)。点击右下角的 IPv4 / IPv6 切换按钮即可切换。
在设置中,您还可以强制 Packet Sender 的服务器绑定到自定义 IP 地址。这对拥有多网卡或复杂 IP 配置的系统非常有用。如果绑定的地址不存在,Packet Sender 会触发错误。
IP Specific binding
Packet Sender 内置子网计算器,位于"工具"菜单中。 Packet Sender Subnet Calc
Wake-On-LAN(或 WOL)是一种协议,用于将计算机从睡眠状态唤醒。它通过发送包含基于目标 MAC 地址的特殊数据的广播包来触发。更多信息请参阅 Wikipedia。
Packet Sender 内置 WOL 生成器,位于"工具"菜单。
WOL Tool
填写选项后,主界面会自动填充正确的 WOL 格式数据。
WOL results
此外还有 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 库。
Packet Sender Direct TCP
SSL 注意事项:
Packet Sender 为 Windows 上的服务器模式捆绑了一个内部的"Snake Oil"证书。证书和密钥文件与数据包文件及设置文件位于同一位置。
注意:在设置中更改证书路径也会同时覆盖 snake-oil 证书。
如果发生 SSL 错误,Packet Sender 会将其记录到流量日志中。如果设置为"继续"(默认设置),则会继续进行加密协商;否则连接将以连接失败结束。
Packet Sender Direct TCP Expired
Packet Sender 的多播支持通过尝试向 IPv4 多播地址发送数据或从多播子菜单触发。该功能目前处于实验阶段,并存在以下已知问题:
目前尚不支持 IPv6 多播,但已列入开发路线图。希望获得 IPv6 多播支持的赞助商欢迎联系我。
当普通发送方式不足以满足需求时,您可以向目标 IP 疯狂发送数据包,测试您的设备能否承受高强度流量。
此功能位于图形界面工具栏的 工具 → Intense Traffic Generator。
请注意,此功能处于实验阶段,显示的指标尚未经过全面验证。如需更准确的测试,建议使用该工具的命令行版本。
IP Specific binding
使用免费的 Packet Sender Cloud 服务,您可以快速保存、获取和共享数据包集。
Cloud 也可用于公开展示和分发您的数据包(通过 URL),便于协作、编写教程、供最终用户使用等。Packet Sender 支持通过公开 URL 导入公共数据包集。
这样做有多种理由:
Packet Sender Cloud Import
如果您正在发布网络 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 Direct TCP
Packet Sender 在发送响应时支持以下宏:
Packet Sender 会在实际发送前将宏替换为真实值。
Packet Sender 通过独立的图形窗口支持持久 TCP 和 SSL 连接。
可在主窗口复选框或设置窗口中启用该功能。
Packet Sender Direct TCP and 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 连接,包括服务器验证和会话持久化选项。
Main Window
Cipher Suites Dropdown
Persistent Connection
Server Port
Network Tab
Smart Responses Tab
使用 Wireshark 抓包:
Regular Connection
Persistent Connection
Packet Sender 支持通过命令行在计算机上使用。
Windows 用户请使用 .com 扩展名(packetsender.com)进入命令行界面。
也可以不带扩展名直接使用 packetsender。使用 .exe 扩展名会启动图形界面。
Packet Sender CLI screenshot
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