开源硬件USB抓包及协议分析工具分享

开源硬件USB抓包及协议分析⼯具分享
USB抓包⼯具属于⼩众产品,开源的就更少了!!
USB抓包⼯具分为纯软件的和硬件的两种,纯软件usb抓包⼯具需要在系统能正确枚举usb设备的前提下才能让内核的钩⼦函数捕抓到数据,⽽后者在usb不正常时也能捕捉到链路数据(令牌包等),属于更底层的抓包⽅式。
⼀、我⽤过的并且好⽤的纯软件USB抓包⼯具有:
1.USBlyzer(能很⽅便的帮你分析出HID报告描述符等等)
下⾯⼏幅图简单介绍它的使⽤⽅法:
还有⼀个常⽤的USB properties界⾯,⽤于观看设备描述符、配置描述符、接⼝描述符以及端点描述符,对于HID设备,还能看到HID报告描述符,挺好⽤的:
2.Bus Hound(没有协议分析,但抓包很直观,⽽且允许你发送⼀些⾃定义的控制传输命令给设备,⽤于调试(如下图所⽰)。另外,Bus Hound不单能抓usb总线,包括串⼝、PCIE等都能抓)
很遗憾,他们都不是开源的,linux下倒是有开源的,如linux平台下“usbmon驱动+tcpdump”⽅式抓包。
3.linux使⽤usbmon驱动+tcpdump+wirshark调试:
需要编译linux加⼊usbmon驱动:
make  ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
Device Drivers -->
USB Support -->
USB Monitor --> Select "M"
modprobe usbmon
mount -t debugfs none_debugs /sys/kernel/debug
cat /sys/kernel/debug/usb/devices
选择包含有 P: Vendor=xxx ProdID=xxx Rev= xxx 的段落(即筛选出你要抓包的USB设备的PID/VID号)
广东药学院精品课程如果总线号是1(即Bus=01),则是1u,如果总线号是2,则是2u,依次类推。特殊情况是0u表⽰监听所有总线
cat /sys/kernel/debug/usb/usbmon/1u > ./得到原始数据:
该原始数据是天书,需要借助linux内核⽂档“Documentation/”进⾏⼈⼯分析,下⾯只是其中⼀⼩段:
或者使⽤tcpdump -i usbmon1 -w /var/usb_log.pcap将捕捉到的usb数据导⼊到wirshark3.x上阅读,能做简单的Class协议分析。其中“tcpdump -D”可以列举可以抓包的设备,包括以太⽹、USB、CAN总线等。
另外,USB错误码⽂档在Linux内核源码路径下的Documentation/有关于usb的错误代码意义说明。
⼆、开源硬件usb抓包⼯具
1.玩具级别的usb sniffer(硬件平台FTDI+USB PHY+FPGA )
541舰
FPGA使⽤verilog开发,主机软件使⽤C语⾔开发,功能⽐较简单,⽽且过滤条件也简陋,但⿇雀虽⼩五脏俱全,有兴趣可以研究⼀下,硬件⽅⾯,作者使⽤零散的模块搭建,⽐较⼉戏,我⾃⼰也做过实验,但在USB PHY那⾥跪了,FPGA怎么都抓不到USB3300的数据包,没有去深⼊分析问题所在。
2.OpenVizsla(硬件平台FTDI+USB PHY+FPGA)
完全开源,包括pcb电路板打样⽂件和BOM物料清单都有,FPGA使⽤python开发,主机软件亦使⽤python进⾏开发。个⼈觉得FPGA使⽤python开发⽬前还不成熟(),代码看起来⽐较冗余,我已经在ubuntu虚拟机上编译出ov3.bit了,暂不打算阅读FPGA源码,⽽是尝试改写其主机软件加⼊常⽤class的协议分析功能(但其实我改它⽤处并不⼤,因为⽬前OpenVizsla已经⽀持很多分析软件了,譬如wireshark、Beagle 480的分析软件等等)。usb PHY使⽤了ULPI接⼝,优点是管脚少,缺点是FPGA需要实现⼀个适配层转换为
UTMI+接⼝。FPGA使⽤⽼掉⽛的spartan6,开发⼯具使⽤ISE14.7,不过还好Xilinx官⽹说⾄少会供货到2027年,也胜在封装够简易(TQFP-144),⽅便⼿⼯焊接。4层板打板也便宜,我已经焊接好⼀套,正在调试中,打算实测⼀下效果!
此分割线之间的内容更新于2020-02-06:
利⽤疫情期间丰富的春节假期,调试了⼀下openvizsla板⼦,虽然年前我⼿⼯焊接好⼀套,但在调试过程中相当于要重新再焊接⼀次,因为超多虚焊和管脚短路,反复焊接焊到我⼼灰意冷,尤其USB3343芯⽚,4mmx4mm QFN-24封装的,热风焊接完眼睛都花了。焊接技巧:拿镊⼦的⼿不要抖,拖锡(吸锡)要耐⼼。最后,焊接⽅⾯应该没问题了,⼜发现SDRAM型号兼容性不太好,由
AS4C16M16S-7TCN改为MT48LC16M16A2P-75貌似好⼀点,过年快递不⼯作,唯有加点钱顺丰发货。最后貌似能抓包了,但运⾏官⽅的测试SDRAM命令貌似有点问题(我还没研究怎么去定位,理论上应该要在FPGA上写测试代码,⽤chipscope抓包分析看是控制时序不⾏还是虚焊还是其他问题,如果是⽤verilog写的还好,不过本项⽬是使⽤Migen库,没阅读过该库api说明,都不知道怎么例化chipscope来抓信号调试,先放下了,因为换另⼀批MT48LC16M16A2P-75⼜好了):
测试:$sudo ./ovctl.py report
绍兴文理学院学报USB PHY Tests
ULPI PHY ID: 04240009 (SMSC 334x)
科索沃危机ULPI Scratch register IO test: OK
PHY Function Control Reg:  48
PHY Interface Control Reg: 00
SDRAM tests
... 0: OK
... 1: OK
... 2: OK
... 3: FAIL
换另⼀批次的MT48LC16M16A2P-75芯⽚后测试正常:
$ sudo ./ovctl.preport
USB PHY Tests
ULPI PHY ID: 04240009 (SMSC 334x)
ULPI Scratch register IO test: OK
PHY Function Control Reg:  48
PHY Interface Control Reg: 00
SDRAM tests
... 0: OK
... 1: OK
... 2: OK
... 3: OK
... 4: OK
.
.. 5: OK
高官公共情人 李薇< all passed

本文发布于:2024-09-23 11:27:04,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/136993.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:分析   焊接   描述符   设备   需要
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议