我正在使用Wireshark
智能卡读卡器捕获 USB 流量。当我使用 连接到阅读器时PyScard
,在我仅通过建立连接发送任何 APDU 之前,使用批量操作来回发送一些数据包。
我在这里读到USB 设备和主机之间有一个初始握手,我想知道这是否是我在嗅探时看到的。
使用wireshark,我得到以下信息:
- 批量输出(主机到设备):
- 批量输出(设备到主机):
- 批量输入(主机到设备):
- 批量输入(设备到主机):
这四个数据包发送了 2-3 次,然后我可以使用 PyScard 嗅探我发送的消息。
我的目标是仅使用 USB 通信来重现阅读器和主机之间的通信。所以:
USB 通信中是否存在初始握手?
这就是我要捕捉的吗?
如何重现这种 USB 通信?
谢谢 <3
编辑 2018 年 3 月 14 日 - 大卫格雷森回答后的其他信息
我在这里捕获的不是“获取设备描述符”等的一部分。当我尝试打印设备的详细信息并且 Wireshark 识别并标记数据包时会发生这种情况。
我知道奇怪的操作,但这是我从wireshark 得到的。我一直在做的解释是它们是请求-响应对:主机使用批量输出端点发送一些东西,然后在准备好这样做时要求通过使用批量输入端点来读取答案。我完全不知道,这就是它对我的看法。
>> lsusb -v
Bus 001 Device 002: ID 0bda:0165 Realtek Semiconductor Corp.
Couldn't open device, some information will be missing
Device Descriptor:
bLength
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x0bda Realtek Semiconductor Corp.
idProduct 0x0165
bcdDevice 61.23
iManufacturer 1
iProduct 6
iSerial 3
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 93
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 4
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 11 Chip/SmartCard
bInterfaceSubClass 0
bInterfaceProtocol 0
iInterface 6
ChipCard Interface Descriptor:
bLength 54
bDescriptorType 33
bcdCCID 1.10 (Warning: Only accurate for version 1.0)
nMaxSlotIndex 0
bVoltageSupport 7 5.0V 3.0V 1.8V
dwProtocols 3 T=0 T=1
dwDefaultClock 3750
dwMaxiumumClock 7500
bNumClockSupported 0
dwDataRate 10080 bps
dwMaxDataRate 312500 bps
bNumDataRatesSupp. 0
dwMaxIFSD 254
dwSyncProtocols 00000000
dwMechanical 00000000
dwFeatures 00010030
Auto clock change
Auto baud rate change
TPDU level exchange
dwMaxCCIDMsgLen 271
bClassGetResponse 00
bClassEnvelope 00
wlcdLayout none
bPINSupport 0
bMaxCCIDBusySlots 1
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 8
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x05 EP 5 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x86 EP 6 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
(截图没问题,它们看起来很像,但它们不一样)