最近接到一个摄像机定制私有协议功能的项目,需要以 TCP 方式向第三方厂家的服务器软件发送指定数据。但对方不方便提供软件安装包来联调,所以得先用模拟发包工具把协议跑通。
网上找了一圈,发现 xcap 用起来比较别扭,还得额外装 Npcap,配置项也偏多。后来参考了第三方厂家自己在用的 PacketSender,调试过程顺利很多,功能验证一次通过。这款工具操作简单、上手快,写篇记录存档,也给有类似需求的朋友一个参考。

Packet Sender 软件功能
- 以超越原始应用程序的方式控制基于网络的设备
- 测试自动化,支持命令行工具和/或热键
- 测试网络 API,使用内置的 TCP、UDP、SSL 客户端
- 恶意软件分析,使用内置的 UDP、TCP、SSL 服务器
- 对安全连接进行故障排除,使用 SSL
- 测试网络连接/防火墙,通过让两个数据包发送端互相通信
- 对设备进行压力测试,使用强大的网络生成器工具
- 技术支持场景,向客户发送携带预定义设置和数据包的便携式发端工具
- 使用 Packet Sender Cloud 服务进行共享、保存与协作
Packet Sender 软件特色
- 可以在指定端口上同时发送和接收 UDP、TCP 和 SSL 数据
- 所有服务器与客户端可以同时运行
- 100% 免费
- 开源
- 无广告、无捆绑
- 支持客户机/服务器模式
- 支持发送和接收
- 支持 UDP、TCP 或 SSL
- 支持 ASCII 或十六进制格式
- 可自定义任意数据内容
- 跨平台:Windows、Mac、Linux
- 支持命令行,便于自动化与脚本调用
- 内置 Packet Sender Cloud,可保存、分享与协作
这款工具使用起来确实省心,基本不需要额外配置网络环境之类的东西,只要填对协议类型、目标 IP、端口和发送数据,就能直接发包。有一点要提醒:图中红框标出的 Persistent TCP 需要勾选,否则 TCP 连接可能在发送完一条数据后就被关闭了。

提前把要发送的请求都配置好,填好目的 IP、端口、协议类型和数据内容即可。本次项目里涉及两条请求:一条是登录验证请求,另一条是发送业务数据请求。
点击第一条登录请求,会弹出对应的发送配置窗口。登录请求的原始消息内容如下:
49 4e 46 01 00 01 00 01 00 00 00 40 61 64 6d 69 6e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 74 79 61 6e 74 6f 70 32 30 31 32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

登录完成后,需要立刻发送下一条数据请求,否则 TCP 连接很快会断掉,后续发送就会失败。在弹出窗口中选择下一条请求并发送后,会看到对应的响应结果。请求数据的消息内容如下:
49 4e 46 03 00 01 00 01 00 00 00 18 04 08 06 00 c0 a8 01 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

这个工具还有一个很实用的地方:发送请求后,软件界面会直接显示设备端返回的数据,不用再跑到设备那边单独抓包确认。对于私有协议的快速验证来说,这确实能省不少来回排查的功夫。
在 网络/系统 调试这类场景里,像 PacketSender 这样的 开源 小工具往往能起到四两拨千斤的作用。如果你也正在折腾 TCP 私有协议对接,不妨把它加入工具箱。
|