USB - Есть ли начальное рукопожатие между хостом и устройством?
Я перехватываю трафик USB с помощью Wireshark
на считывателе смарт-карт. Когда я подключаюсь к читателю с помощью PyScard
некоторые пакеты отправляются туда и обратно с использованием массовых операций, прежде чем я отправлю какой-либо APDU, просто установив соединение.
Я прочитал здесь, что между устройством USB и хостом происходит первоначальное рукопожатие, и мне интересно, вижу ли я это, когда нюхаю.
Используя wireshark, я получаю следующее:
- Bulk out (хост на устройство):
- Bulk out (устройство для размещения):
- Основная часть (хост на устройство):
- Массовая загрузка (с устройства на хост):
Эти четыре пакета отправляются 2-3 раза, и затем я могу прослушать сообщения, отправленные с помощью PyScard.
Моя цель здесь - воспроизвести связь между читателем и хостом, используя только связь USB. Так:
Есть ли начальное рукопожатие в связи USB?
Это то, что я снимаю?
Как я могу воспроизвести эту связь USB?
Спасибо <3
Изменить 14/03/2018 - Дополнительная информация после ответа Дэвида Грейсона
То, что я собираю здесь, не является частью "Get Device Descriptor" и т. Д. Это происходит, когда я пытаюсь распечатать детали устройства, и 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
(Снимки экрана в порядке, они похожи, но они не одинаковы)
1 ответ
Начальное рукопожатие состоит из передач управления, таких как "Получить дескриптор устройства", "Получить дескриптор конфигурации" и "Установить адрес", которые определены в главе 9 спецификации USB 2.0.
Первоначальное рукопожатие обычно не имеет массовых передач, но возможно, что ваше устройство использует драйвер, который хочет выполнить некоторые массовые передачи при инициализации. Поскольку это устройство чтения смарт-карт, я полагаю, что в вашей операционной системе есть какой-то драйвер, который отправляет ей команды, чтобы посмотреть, подключены ли какие-либо смарт-карты, и эти команды вполне могут быть реализованы с помощью групповых передач вместо передач управления. Чтобы узнать больше об этих командах, вам понадобится найти документацию по классу USB, который реализует ваше устройство, и / или драйвер, отправляющий эти команды.
Описание вашего массового трафика сбивает с толку. Термин "Out" всегда означает "хост-устройство", поэтому он также не может означать "устройство-хост". Термин "В" всегда означает "устройство на хост", поэтому он также не может означать "хост на устройство". Вы разместили два дублирующих скриншота.
Чтобы получить лучшие ответы в будущем, я думаю, что вы должны включить дамп дескрипторов вашего устройства (lsusb -v
), улучшите свое описание трафика, скажите, на каких конечных точках был замечен трафик, а также скажите, какую операционную систему вы используете, и предоставьте любую имеющуюся информацию о драйверах, подключенных к вашему устройству.