2010年2月19日 星期五

USB分析工具1 - SnoopyPro 和 usbmon

在同時講解USB中級心法時,這裡也會定期介紹USB裝置開發時會用到的工具。今天要介紹的是二個完全免費且開放原始碼的工具。
SnoopyPro和Linux 內建的 usbmon.

SnoopyPro已經好幾年沒有人在維護了,Vista之後的作業系統也不保證可以用。它最大的好處就是使用簡單且完全免費。使用方法如下:

1.執行 SnoopyPro.exe
2.按 F2 打開USB裝置視窗
3.從 File 選單裡選 'Unpack Drivers'
4.從 File 選單裡選 'Install Service'
5.在想要觀察的裝置上按滑鼠右鍵並選擇 'Install and Restart'
6.操縱被觀察的裝置(插拔,操作軟體,按鈕......)
7.作業系統收發的該裝置資料都會被記錄下來供後統分析


另外要介紹的是Linux 2.6. 內建的usbmon, 如果裝的是Ubuntu 9.10 那裝完之後直接可以用,只需在shell視窗裡打 'cat /sys/kernel/debug/usb/usbmon/0u > /tmp/1.mon.out' 再去操縱想要觀察的裝置就會記錄所有系統收發的USB資料。

實際錄下的記錄檔如下:

d187b000 1597420637 S Ci:1:004:0 s 80 06 0100 0000 0012 18 <

d187b000 1597423351 C Ci:1:004:0 0 18 = 12011001 00000008 6d0416c0 40030102 0001

d187b000 1597423501 S Ci:1:004:0 s 80 06 0200 0000 0009 9 <

d187b000 1597424980 C Ci:1:004:0 0 9 = 09021900 010100a0 32


看起來是不是跟USB中級心法前章的資料收掉Transaction和Packet很像呢?

這就是這種軟體監看工具最弱的一環,軟體只能記錄作業系統有辦法看到的資料。所以從主機板的南橋(或USB界面上)驅動程式->南橋晶片(USB卡)->USB cable->USB 周邊晶片 這條路上發生的問題,不論是要錢或免費的軟體工具全部都看不到。

1 則留言:

傅阿呆 提到...

可以用Linux搭配wireshark。
wireshark在Linux上,透過usbmon可以擷取USB,應該會比SnoopyPro或直接看usbmon要好看些。

張貼留言