USB (HID) 장치를 리버스 엔지니어링하려고하는데 wireshark (Linux의 usbb + wireshark 또는 Windows)에서 USB 프로토콜과 어떻게 관련이 있는지 알 수 없습니다. www.usb.org에서 USB 프로토콜을 살펴 보았습니다.
wireshark는 무엇을 보여줍니까?
1) 패킷 당 한 줄? (토큰, 데이터, 악수)
2) 거래 당 한 줄? (토큰 + [데이터] + 핸드 셰이크) (내 추측)
3) 제어 전송 당 한 줄?
거래 방향 또한 필드마다 매우 이상합니다. 적어도 내 기대와 일치하지 않습니다 :-) ... 그리고 열거 형의 데이터 부분, 숨겨진 보고서 등은 때때로 설정 데이터 (8 바이트)와 함께 표시되는 것처럼 보이고 때로는 그렇지 않습니다 ... 실제로 URB가 무엇인지 알지 못합니다 ... USB 프로토콜에는 내가 볼 수있는 한 언급이 없습니다 ... Wireshark / usbmon이 더 높은 스택 레벨에서 추적되어 무엇이 될 것인지 추론하려고합니다. 그 철사에서 ...
내가 볼 수있는 것의 예는 다음과 같습니다. 여기서 볼 수 있습니까?.
a) 사양에서 bmtype = 0x20 (설정의 프레임 번호 = 599)조차 찾을 수 없었습니다.
b) HID 장치가 있기 때문에 이것이 보고서 / 기능 구성 일 수 있다고 가정했습니다 (이 단계에서 열거가 전달됨). 그래서 방향 (호스트-> 장치)에 동의 할 수 있습니다. 그러나 데이터는 어디에 있습니까? 아니면 여기에 데이터 단계가 없습니까? 그렇다면 프레임 600은 무엇입니까?
c) 프레임 600이란 무엇입니까? 자료?
d) 프레임 601은 무엇입니까? 상태 ACK? ...하지만 데이터와 ACK가 동일한 소스를 가지고 있습니까?
No. Time Source Destination Protocol Length Info
599 67.996889 host 2.0 USB 36 URB_CONTROL out
Frame 599: 36 bytes on wire (288 bits), 36 bytes captured (288 bits)
USB URB
USBPcap pseudoheader length: 28
IRP ID: 0xfffffa800a1e2610
IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
URB Function: URB_FUNCTION_CLASS_DEVICE (0x001a)
IRP information: 0x00, Direction: FDO -> PDO
URB bus id: 1
Device address: 2
Endpoint: 0x00, Direction: OUT
URB transfer type: URB_CONTROL (0x02)
Packet Data Length: 8
Control transfer stage: Setup (0)
[Response in: 601]
[bInterfaceClass: Unknown (0xffff)]
URB setup
bmRequestType: 0x20
0... .... = Direction: Host-to-device
.01. .... = Type: Class (0x01)
...0 0000 = Recipient: Device (0x00)
bRequest: 0
wValue: 0x0000
wIndex: 0
wLength: 16
0000 1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 1a 00 ...&............
0010 00 01 00 02 00 00 02 08 00 00 00 00 20 00 00 00 ............ ...
0020 00 00 10 00 ....
No. Time Source Destination Protocol Length Info
600 67.997889 2.0 host USB 44 URB_CONTROL out
Frame 600: 44 bytes on wire (352 bits), 44 bytes captured (352 bits)
USB URB
USBPcap pseudoheader length: 28
IRP ID: 0xfffffa800a1e2610
IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
URB Function: URB_FUNCTION_CONTROL_TRANSFER (0x0008)
IRP information: 0x01, Direction: PDO -> FDO
URB bus id: 1
Device address: 2
Endpoint: 0x00, Direction: OUT
URB transfer type: URB_CONTROL (0x02)
Packet Data Length: 16
Control transfer stage: Data (1)
[Request in: 599]
[Time from request: 0.001000000 seconds]
[bInterfaceClass: Unknown (0xffff)]
CONTROL response data
0000 1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 08 00 ...&............
0010 01 01 00 02 00 00 02 10 00 00 00 01 05 04 0d 56 ...............V
0020 fb 82 c0 1d 10 18 cc 02 00 00 00 01 ............
No. Time Source Destination Protocol Length Info
601 67.997889 2.0 host USB 28 GET STATUS Status
Frame 601: 28 bytes on wire (224 bits), 28 bytes captured (224 bits)
USB URB
USBPcap pseudoheader length: 28
IRP ID: 0xfffffa800a1e2610
IRP USBD_STATUS: USBD_STATUS_SUCCESS (0x00000000)
URB Function: URB_FUNCTION_CONTROL_TRANSFER (0x0008)
IRP information: 0x01, Direction: PDO -> FDO
URB bus id: 1
Device address: 2
Endpoint: 0x00, Direction: OUT
URB transfer type: URB_CONTROL (0x02)
Packet Data Length: 0
Control transfer stage: Status (2)
[Request in: 599]
[Time from request: 0.001000000 seconds]
0000 1c 00 10 26 1e 0a 80 fa ff ff 00 00 00 00 08 00 ...&............
0010 01 01 00 02 00 00 02 00 00 00 00 02 ............
분명히 나는 무언가를 놓치고있다. wireshark 디스플레이가 프로토콜과 어떻게 관련되어 있는지에 대한 일반적인 설명과 (이를 기반으로) 위 추적의 의미를 환영합니다!
나는 이것을 Stack Overflow에 게시했지만 직접 프로그래밍 질문이 아니라고 들었습니다. 여기에 더 잘 맞기를 바랍니다.