這個作品使用了Cypress的無線模組, 只是它並沒有拿來傳資料. 而是利用模組原本的監聽功能來掃描2.4G頻帶內的無線信號.
正體中文翻譯
原文Handheld 2.4 GHz Spectrum Analyzer

2010年2月23日星期二
手持式頻譜分析儀
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 周邊晶片 這條路上發生的問題,不論是要錢或免費的軟體工具全部都看不到。
2010年2月17日星期三
USB 中級心法前章
今天做了一個解說USB封包的工具,當做是USB中級心法系列的準備。有興趣學習USB的人可以自己先玩一下來熟悉所謂的3*3。(用IE來玩的速度較慢,建議換用其他瀏灠器)
| Get Device Descriptor - Index=0 Length=18 |
| SETUP txn - 80 06 00 01 00 00 12 00 |
| SETUP packet |
| SYNC |
| 00000001 |
| SETUP |
| 0xB4 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA0 packet |
| SYNC |
| 00000001 |
| DATA0 |
| 0xC3 |
| DATA |
| 80 06 00 01 00 00 12 00 |
| CRC16 |
| 0x072F |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 12 01 00 02 00 00 00 08 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| 12 01 00 02 00 00 00 08 |
| CRC16 |
| 0xEAE7 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 6D 04 16 C0 40 03 01 02 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA0 packet |
| SYNC |
| 00000001 |
| DATA0 |
| 0xC3 |
| DATA |
| 6D 04 16 C0 40 03 01 02 |
| CRC16 |
| 0x5ACF |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 00 01 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| 00 01 |
| CRC16 |
| 0xFCF1 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| OUT txn - |
| OUT packet |
| SYNC |
| 00000001 |
| OUT |
| 0x87 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| CRC16 |
| 0x0000 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| Get Configuration Descriptor - Index=0 Length=255 |
| SETUP txn - 80 06 00 02 00 00 FF 00 |
| SETUP packet |
| SYNC |
| 00000001 |
| SETUP |
| 0xB4 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA0 packet |
| SYNC |
| 00000001 |
| DATA0 |
| 0xC3 |
| DATA |
| 80 06 00 02 00 00 FF 00 |
| CRC16 |
| 0x9725 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 09 02 22 00 01 01 00 A0 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| 09 02 22 00 01 01 00 A0 |
| CRC16 |
| 0x5019 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 32 09 04 00 00 01 03 01 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA0 packet |
| SYNC |
| 00000001 |
| DATA0 |
| 0xC3 |
| DATA |
| 32 09 04 00 00 01 03 01 |
| CRC16 |
| 0xACB2 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 02 00 09 21 10 01 00 01 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| 02 00 09 21 10 01 00 01 |
| CRC16 |
| 0x68CE |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 22 34 00 07 05 81 03 04 |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA0 packet |
| SYNC |
| 00000001 |
| DATA0 |
| 0xC3 |
| DATA |
| 22 34 00 07 05 81 03 04 |
| CRC16 |
| 0xB587 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| IN txn - 00 0A |
| IN packet |
| SYNC |
| 00000001 |
| IN |
| 0x96 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| 00 0A |
| CRC16 |
| 0x7E12 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |
| OUT txn - |
| OUT packet |
| SYNC |
| 00000001 |
| OUT |
| 0x87 |
| ADDR |
| 0x01 |
| ENDP |
| 0x0 |
| CRC5 |
| 0x17 |
| DATA1 packet |
| SYNC |
| 00000001 |
| DATA1 |
| 0xD2 |
| DATA |
| CRC16 |
| 0x0000 |
| ACK packet |
| SYNC |
| 00000001 |
| ACK |
| 0x4B |



