2010年2月23日 星期二

手持式頻譜分析儀

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


正體中文翻譯

原文Handheld 2.4 GHz Spectrum Analyzer

Handheld 2.4 GHz Spectrum Analyzer

展開卷軸...

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中級心法系列的準備。有興趣學習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

展開卷軸...