我有一个 zigbee USB 加密狗,可以插入我的 Windows 笔记本电脑的 USB 端口。我需要能够捕获传入的数据包。
我正在尝试编写 ac 程序,该程序将通过监视与相应 USB 端口关联的总线来捕获传入的数据包。
是否有一些有助于这种监控的 c 库?如果不是,我如何访问总线的内容?
这就是硬件驱动程序为您所做的事情:它直接监视低级硬件,然后在更方便的界面中处理并将该数据公开给用户级程序。
我认为Telegesis和Adaptive提供 Windows 驱动程序供下载;如果您的 Zigbee 不兼容,那么制造您的 Zigbee 的人应该提供他们自己的驱动程序。
或者您可以编写自己的驱动程序,但这是一项非常困难和棘手的工作,不适合胆小的人。
您可以使用 libusb 轻松读取和写入 USB 数据包。通常我通过 python 包装器pyUSB使用 libusb
但是,您是否真的有关于如何编码/解码来自您的特定加密狗的数据包格式的文档?实际的 zigbee 数据包可能包含在您需要能够解码的某些专有协议中。
我还假设您的 USB 加密狗实际上是通过原始 USB 进行通信,而不是使用 FTDI 芯片通过 USB 创建虚拟串行端口。如果是这种情况,那么您不需要使用 USB,只需使用虚拟 COM 端口进行串行数据即可。
打开加密狗的外壳并查看使用的芯片会很有用(只有在易于打开并且您对这个想法感到满意的情况下才这样做)。
你说它是基于德州仪器的:那么它可能正在运行 TI 的 Z-Stack 固件。如果是这种情况,它很有可能正在运行 Z-Stack 监控和测试 API(搜索文档代码 SWRA198)。您可以轻松编写 C/C++ 与之交互。
但是,您的第一个障碍是能够读取/写入设备。如果它有一个 FTDI 芯片,那么这将很容易:它应该显示为一个虚拟通信端口,如前一篇文章中所述。像 CC2531 这样的芯片能够直接连接到 USB 总线。我不熟悉那个配置。我有一个这样的加密狗,他们使用一些奇怪的德州仪器串行 USB 协议。但是,如果您获得了正确的 Windows 驱动程序,它应该会显示为应用程序使用的常规通信端口。