欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
USB 枚舉的具體過程詳細(xì)說明
[打印本頁]
作者:
51黑er
時(shí)間:
2015-11-10 01:40
標(biāo)題:
USB 枚舉的具體過程詳細(xì)說明
USB的的監(jiān)控用得較多的是BUSHund,但是這個(gè)BUSHound這家伙不能監(jiān)控USB的枚舉,我們使用USBMonitor就能很好地實(shí)現(xiàn)這一過程。
工具:
USB Monitor 2.26
USB 移動(dòng)硬盤
personal Computer
軟體的安裝:
這個(gè)問題難度不大,一般下載完成后,一路解壓縮即可,最后點(diǎn)擊完成,安裝OK!
監(jiān)控USB的枚舉:
1.啟動(dòng)安裝好后的USB Monitor,點(diǎn)擊“file”,“new Session”,如圖:
2.在彈出的對話窗口中選擇“下一步”,如圖:
3.在“Monitoring Session Type”對話框中選擇“USB Montitor”,點(diǎn)擊下一步,如圖:
4.在“configurating The USBMonitor”對話框中選擇你需要見識的USB口,如果這是你還沒有將任何USB設(shè)備插入主機(jī),將顯示如下界面:
5.將需要監(jiān)控的USB設(shè)備插入主機(jī)USB接口,這是將會在某選項(xiàng)的后面多出一些內(nèi)容,如下圖所示,此處選擇"USB MassStorage".
tips:當(dāng)我們要監(jiān)控我們自己開發(fā)的設(shè)備時(shí),可以瞎弄一個(gè)U盤插入其中一個(gè)USB接口,在此步中選擇我么能插入的U盤,在實(shí)際檢測過程中,將我們開發(fā)的USB設(shè)備插入這個(gè)USB接口即可!
6.在“Configure Data Processing”對話框中選擇“Request View”,并點(diǎn)擊下一步:
7.彈出你的U盤,然后在USB Monitor主界面里點(diǎn)“Edit”->"Clear View",如下圖所示:
8.插入你的U盤,記得徐插在同一USb接口,!此時(shí),USBMonitor會監(jiān)測到許多數(shù)據(jù)流,我們切換到Complete標(biāo)簽,如圖:
以下是USB 設(shè)備枚舉的分析過程:
通過以上操作以后,我們可以對USB Monitor監(jiān)測到的數(shù)據(jù)進(jìn)行分析了,如下:
1.按“CTRL+F”,查找第一個(gè)“Descriptor Request”,從此處開始是對我們有用的信息:如圖:
2.對USB Monitor 現(xiàn)實(shí)的數(shù)據(jù)進(jìn)行分析:
①序列號,可理解為一個(gè)上行或者下行數(shù)據(jù)流標(biāo)號,無實(shí)際意義
②命令類型,括號里的“Down”代表輸出數(shù)據(jù),即主機(jī)到設(shè)備
③命令數(shù)據(jù)流,出現(xiàn)“Setup Pocket”后面,十六進(jìn)制
④對命令數(shù)據(jù)的簡單分析
⑤傳輸類型,括號里的“Up”代表輸入數(shù)據(jù),及設(shè)備到主機(jī)
⑥設(shè)備返回的數(shù)據(jù)流,十六進(jìn)制
⑦對命令(請求)數(shù)據(jù)的詳略分析(其中對“Request”的分析應(yīng)該有BUG,0X6應(yīng)為Get_Descriptor,而USb Monitor 解釋為Get_Configuration)
以上沒有看到對上行數(shù)據(jù)(數(shù)據(jù)返回的數(shù)據(jù))的分析,我們只要將鼠標(biāo)停留在設(shè)備返回?cái)?shù)據(jù)流出(上圖⑥),就會彈出對上行數(shù)據(jù)的分析畫面,如圖:
3.枚舉過程分析
a.主機(jī)第一次發(fā)出請求描述符命令,數(shù)據(jù)流為:
80 06 00 02 00 00 0900 bRequest的值為0X06,代表Get_Descriptor命令
但為什么描述符呢?
wValue的高字節(jié)表示了描述符的類型,
此處的wValue值為0X0100,所以高字節(jié)為0X01,代表設(shè)備描述符!!
設(shè)備返回的數(shù)據(jù)為:12 01 00 02 00 00 00 40 51 09 0E16 00 02 01 02 0301
bLength的值為0X12,表示此描述符的長度
bDescriptorType的值為0X01,代表設(shè)備描述符
bcdUSb的值為0X0200,代表USB協(xié)議的版本號,此處2.0版,入股歐威0X0110則表示1.1版
bDeviceClass和bDeviceSubClass讀為0,表示設(shè)別類別有接口描述符指定,
bDeviceProtoco值為0,但并不代表它不支持USb定義的標(biāo)準(zhǔn)設(shè)備類協(xié)議,因?yàn)榇藭r(shí)可有接口描述符指明設(shè)備支持的協(xié)議
bMaxPocketsize0的值為0X40,表示端點(diǎn)0的數(shù)據(jù)包最大長度為64字節(jié)
iManufacturer、iProduct和iSeriousNumber的值分別為0X01、0X02和0X03,表示字符串索引在主機(jī)讀取字符串的命令中,將以這幾個(gè)值來填充wIndex字段
b.主
機(jī)再次發(fā)出請求描述符指令,數(shù)據(jù)流為:
80 06 00 02 00 00 09 00
wValue
的高字節(jié)為
0x02
表示配置描述符,表示請求配置描述符
wLength
的值為
0x0009
,表示要求返回的數(shù)據(jù)長度為
9
個(gè)字節(jié)。
這次
設(shè)備返回的數(shù)據(jù)只有
9
個(gè)字節(jié):
09 02 20 00 01 01 00 80 32
第一位數(shù)為
bLeng
域,其值為
0x09
,代表此描述符的長度。
bDecriptorType
的值為
0x02
,表示配置描述符。
wTotalLength
的值為
0x0020
,表示包括此配置描述符、接口描述符、端點(diǎn)描述符和設(shè)備類及廠商定義的描述符的總長為
32
個(gè)字節(jié)。
bNumInterfaces
的值為
0x01
,表示該配置支持
1
個(gè)接口。
MaxPower
的值為
0x32
,表示總線耗電量為
50×2=100mA
。
c.
主
機(jī)第一次請求設(shè)備的配置描述符后得知包括:
配置描述符、接口描述符、端點(diǎn)描述符等在內(nèi)的描述總長為
32
個(gè)字節(jié)后
這此主機(jī)再次發(fā)出請求配置描述指令,這次命
令與上一個(gè)命令只有
wLength
字段的值不一樣:
這次
wLength
的值為
0x20
,表示要求設(shè)備返回
32
個(gè)字節(jié),正好和上次命令中設(shè)備返回的
wTotalLength
信息一致。設(shè)備返回的數(shù)據(jù)流為如下圖所示,
USB Monitor
已經(jīng)將配置描述符、接口描述符、和端點(diǎn)描述符用不同的背景色區(qū)分開來,鼠標(biāo)停留在不同的區(qū)域?qū)棾鰧Υ嗣枋龇木唧w分析。
第一個(gè)描述符的數(shù)
據(jù)為:
09 02 20 00 01 01 00 8032
,
和上一次請求配置描述符得到的數(shù)據(jù)一模一樣,這里不再分析。
第二個(gè)描述符的數(shù)據(jù)為:
09 04 00 00 02 0806 50 00
,
bLength
為
0x09
表示此描述符為
9
個(gè)字節(jié)
bDescriptorType
的值為
0x04
表示接口描述
符
bInterfaceNumber
為
0x00
表示此配置接口的索引值。
bNumEndpoint
的值為
0x02
表示此接口端點(diǎn)數(shù)為兩個(gè)。
bInterfaceClass
的值為
0x08
表示大數(shù)據(jù)存儲類
bInterfaceSubClass
的值為
0x06
,其含義因
bInterfaceClass
的不同而不同,
由于此處
bInterfaceClass
的值指定了此設(shè)備屬大數(shù)據(jù)存儲類,
所以需要查看大數(shù)據(jù)存儲類
(Mass storageclass device)
相關(guān)協(xié)議標(biāo)準(zhǔn),經(jīng)查詢得知:
bInterfaceSubClass
為
0x06
時(shí)代表傳輸協(xié)議工業(yè)標(biāo)準(zhǔn)為
SCSI
。
bInterfaceProtocol
的值為
0x50
,
大數(shù)據(jù)存儲類協(xié)議規(guī)定其含義為通訊方式為批量傳輸
(Bulk-only)
。
d.
在
請求完配置描述符后,主機(jī)發(fā)出請求字符串描述符指令。
請求字符描述符分兩大步,每大步又分兩小步,
兩大步為:
先請求字符串描述符語言
ID(
此時(shí)
wIndex
的值設(shè)為零
)
,再請求
UNICODE
編碼的字符串描述符。
不管是請求語言
ID
還是
UNICODE
編碼的字符串描述符,都要分成兩小步:
先請求
設(shè)備返回相應(yīng)字符串描述符的前兩個(gè)字節(jié),第一個(gè)字節(jié)代表了此字符串描述符的長度,主機(jī)根據(jù)這個(gè)長度再次請求相應(yīng)字符串描述符,這次得到整個(gè)字符串描述符。
首
先取得語言
ID
的前兩個(gè)字節(jié),數(shù)據(jù)流為:
80 06 00 03 00 00 0200
wValue
的高字節(jié)為
0x03
,表示字符串描述符。
wIndex
的值為
0x0000
,表示讀取語言
ID
。
wLength
為
0x0002
要求設(shè)備返
回
2
個(gè)字節(jié)數(shù)據(jù)。
設(shè)備返回的數(shù)據(jù)為
0403
,第一個(gè)字節(jié)為
0x04
表示語言
ID
字符串描述符長度為
4
個(gè)字節(jié)。
e.
主機(jī)根據(jù)上次讀取的語言ID字符串描述符長再次讀取此描述符,
這次讀出全部語言ID描述符。主機(jī)發(fā)出的數(shù)據(jù)流為:
80 06 00 03 00 00 04 00
其中wValue的高字節(jié)為0x03,表示字符串描述符,
wIndex的值為0x00,表示讀取語言ID。
wLength為0x0004要求設(shè)備返回4個(gè)字節(jié)數(shù)據(jù)。設(shè)備返回的數(shù)據(jù)流為:04 03 09 04,
bLength的值為0x04表示此描述符長度為4個(gè)字節(jié),
bDescriptorType的值為0x03表示字符串描述符。
wLANGUID的值 為0x0409,表示英語
f.
讀
取完字符串描述符支持的語言
ID
后將讀取
UNICODE
編碼的字符串描述符,
同讀取語言
ID
一樣,
主機(jī)同樣會分兩步讀取。主機(jī)發(fā)出的命令數(shù)據(jù)流為:
80 06 0303 09 04 02 00
wValue
的高字節(jié)為
0x03
,表示字符串描述符,
低字節(jié)為
0x03
,表示讀取索引為
3
的字符串描述符
(
在第
1
步讀取的設(shè)備描述中
iSerialNumber
字符串的索引為
3
,
所以這里實(shí)際讀取的是設(shè)備序列號
)
。
wIndex
的值為
0x0409
,表示語言
ID
。
wLength
的值為
0x0002
,表示要求設(shè)備返回此描述符的前兩個(gè)字節(jié)。
設(shè)備返回的數(shù)據(jù)流為:
3203
,第一個(gè)字節(jié)的值為
0x32
表示此字符串描述符的長度為
50
個(gè)字節(jié)。
g.
在
取得
UNICODE
字符串描述符的長度后,
主機(jī)根據(jù)這個(gè)長度讀取整個(gè)
UNICODE
字符串描述符。
主機(jī)發(fā)出的命令數(shù)據(jù)流為:
80 06 03 03 09 04 32 00
wValue
的高字節(jié)為
0x03
,表示字符串描述符,低字節(jié)為
0x03
表示讀取索引為
3
的字符串描述符。
wIndex
的值為
0x0409
表示語言
ID
。
wLength
的值為
0x0032
,表示要求設(shè)備返回
50
個(gè)字節(jié)的數(shù)據(jù)。
設(shè)備返回的數(shù)據(jù)從第三個(gè)字節(jié)開始為
Unicode
編碼的字符串,
這里返回的字符串
是:
20070620000000005918B19E
h.
在讀取完字符串描述符后,主機(jī)發(fā)出
Set_Configuration
選擇配置索引以激活這個(gè)設(shè)備的一個(gè)配置,
然后設(shè)備對這一命令作出回應(yīng)。
(
不知為何
USBMonitor
對這此命令的數(shù)據(jù)流沒有顯示出來
)
i.
主機(jī)發(fā)出
Set_Interface
指令激活設(shè)備的某個(gè)接口,然后設(shè)備對此指令作出回應(yīng)
j.
以上為所有
USB
設(shè)備枚舉過程中都會經(jīng)歷的過程,
后續(xù)的配置過程將根據(jù)不同的設(shè)備分類
(
見《
USB
開發(fā)基礎(chǔ)--
USB
命令(請求)和
USB
描述符》中表
6)
而有所不同。
下圖所示為此實(shí)驗(yàn)所用優(yōu)盤的后續(xù)配置過程的一部分。
對于具體設(shè)備類相關(guān)協(xié)議規(guī)定的枚舉過程就不作分析了,請大家參考相關(guān)設(shè)備類協(xié)議。
作者:
nsj21n
時(shí)間:
2015-11-11 18:19
分析的非常好,對于想學(xué)習(xí)USB的來說確實(shí)很實(shí)用哦!
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1