Как прослушать usb порт
Перейти к содержимому

Как прослушать usb порт

  • автор:

Введение в перехват USB команд с помощью Wireshark

Недавно у меня на работе возникла задача повторить работу программы настройки одного навигационного устройства и поэтому я стал изучать тему, как можно перехватить данную информацию без полного реверс инжинеринга самого ПО и прошивки устройства. В итоге выяслилось что это можно сделать по средствам перехвата USB трафика, о чем я ниже напишу.

Кратко о USB

USB является хост-ориентированной шиной с топологией многоуровневой звезды. На шине может присутствовать только один хост и до 127 устройств. Каждое устройство может иметь до 32 концевых точек (endpoint) — 16 на приём и 16 на передачу. Все передачи на шине инициирует только хост — устройство может передавать данные только тогда, когда хост запросит их.

Также у USB есть многослойная система протоколов. Самый нижний слой обычно реализован в железе, поэтому он не так важен для нас.

Далее идет транспортный слой, который работает через каналы (pipe). Каналы делятся на:

  • потоковые, которые передают разные данные
  • каналы сообщений, которые используются для управления устройствами, в каждом устройстве минимум один такой канал.

Верхний уровень — это уровень протоколов приложения (или класса в USB терминах), например USB Mass Storage (флэшки) или Human Interface Devices (HID) — устройства для взаимодействия человека с компьютером.

На уровне программного обеспечения, минимальная неделимая единица – трансфер. По типам трансферы бывают следующие:

  • прерывания (interrupt) — передают данные по чуть-чуть в реальном времени, хост не должен тормозить, и эти события не должны потеряться
  • изохронные (isochronous) — работают также как и прерывания, но могут передавать больше данных и могут допускать их потерю, если это не критично
  • пакетные (bulk) — предназначены для больших объёмов
  • управляющие (control) — используются для управления устройствами, и только у них есть жёстко заданный формат запросов и ответов.

Для отправки сообщений устройству используются управляющие трансферы, так как они (единственные из всех) являются двунаправленными и ориентированы на обмен сообщениями, они состоят из 3-х фаз:

  1. Хост предает девайсу пакет с настройками (подобно заголовку сообщения)
  2. Далее передаются данные (аналогично телу сообщения), направление передачи зависит от настроек.
  3. Посылается подтверждение о корректной обработки сообщения, направление противоположно предыдущем из п. 2.

Таким образом для формирования трансфера хост должен знать адрес устройства, которому предназначен трансфер, а также тип, направление и номер концевой точки куда отправляется сообщение.

Пример перехвата USB трафика с Wireshark

Для перехвата USB траффика можно использовать популярный снифер Wireshark. Для Windows также необходимо установит USBPcap.

Запустить прехват можно выбрав соответствующий режим в wireshark:

схема взаидодействия

Разберем подробней пример дампа:

пример дампа

Этот дамп содержит 2 части:

  1. Это подключение физического устройства в USB (пакеты 1-9);
  2. Отправка команд на переключение устройства в другой режим (пакеты 9-16).

Схематично взаимодействие будет выглядеть так:

схема взаидодействия

Как видно из примера взаимодействие с портом USB очень похоже на взаимодействие по сети. Хост всегда отправляет команду, а устройство подтверждает ее получение.

Наибольший интерес вызывают пакеты 9-16, так как видно что это контрольные трансферы (URB_CONTROL) а значит именно с их помощью происходит управление устройствам.

Итак первая команда (пакет 9) отправляет какую-то команду на устройство. Об этом свидетельствует префикс out, так как команды всегда идут от хоста, то перфикс задает напрваление относительно него.

пример дампа

Если посмотреть структуру запроса, то можно понять тип запроса, сам запрос длину тела и сами данные которые отправляются на устройство. В нашем случае не важно что означают эти параметры так как нам нужно просто воспроизвести функциональность стороннего ПО.

Следующий код запрашивает состояние устройства:

пример дампа

Затем отправляется еще одна команда с данными (пакет 13) и еще раз читает состояние (пакет 13), после чего можно заметить что девайс переподключился (пакет 17-18).

Реализация перехваченной функциональности

После анализа дампа понятно какие команды нужно отправить на устройство для воспроизведения работы анализируемого ПО.

Для простоты воспроизведем эти команды с помощью пакета PyUSB.

Скрипт будет выглядеть так:

Также важно отметить что команды отправляются не функцией write как описано в документации, а функцией ctrl_transfer , которая как раз отвечает за работу с контрольными трансферами.

Заключение

По сути анализ работы по USB дампам не сильно отличается от анализа сетевого трафика и если у вас есть минимальный опыт работы c wireshark то вы сможете без проблем разобраться с базовыми вещами не требующими глубокого понимания.

Работа с USB портом. Прослушка порта

Здравствуйте.
Минимальная задача состоит в том что бы сделать трассировку порта + проброску данных, т.е. условно есть порт USB1 и USB2, я у себя в ПО сажусь на слушание обоих и получив данные из 1го кидаю их во второй, а из 2го в первый.
Будь это COM порты, то было бы всё элементарно, т.к. у нас класс SerialPort есть и там всё просто, но как я понял нативных средств для работы с USB нет?! (я о шарпе, а не о плюсах).

В нугете нашёл библиотеки:
NUSB — она видит, наверное, все устройства (. т.к. имена у них не понятные и не ясно все там или не все, но по кол-ву — все). Но она как то ограничена в своих средствах.
-возможность слушать (ивентов или делегатов) там нет. Только по таймеру вычитывать и как бы чёрт с ним, но попытавшись открыть устройство — она гэпнулась с фразой "не могу дать контроль над дивайсом".
LibUsbDotNet — тут вообще всё печально. Встроенное средство для выбора девайса GetAllDevices вообще ни одного не видит! Просто пусто!

Вопрос: какими средствами в дотнете можно работать (слушать\писать) в USB дивайс?
Если это соторонняя библиотека — кинте и пример.
Тип устройств с которыми будет вестьсь работа — это переходники USB-COM (с нашей стороны будет USB) и всё что нам нужно — это мизер: слушать (читать входные данные, если они есть) и писать в него же.
Как это сделать?

Как «прослушать» usb устройства на Ubuntu.

В общем есть данные устройства. Одно это кард ридер другое — непонятное устройство с которого 100 процентов приходят ответы на винде через стандартный юсб драйвер.
1) Как можно их прослушать или словить какие то данные от них. Нашел вот такую команду ls /dev/ttyS* — но только она дает список а как прослушать «cu / cat или даже minicom» не знаю.
2) Гуглил но не нашел сокет сервер который будет принимать данные от этих двух устройств. Они по юсб работают.
Ну вобщем как то так. Раньше был сокет сервер дотнетовский. Но он через моно не стартует.

Free USB Analyzer

Free USB Protocol Analyzer Screenshot

Free USB Analyzer is a non-intrusive software USB sniffer and protocol analyzer for Windows.

This software-based USB protocol analyzer allows you to monitor the data transferred between USB applications and devices connected to your computer via USB interfaces. All Windows desktop/server 32-bit and 64-bit platforms starting from Windows Vista are supported.

Our USB monitoring program may be an excellent alternative to hardware analyzers because it intercepts all Windows API function calls which are transferred between USB applications and device drivers, parses transmitted packets and shows all captured data in a several convenient forms, which is virtually impossible for hardware solutions due to their low level view.

This Freeware USB data snooping utility requires no additional hardware or cables to operate. It runs smoothly, processes monitored packets in real-time even on high data rates (up to 20 Gbit/s). It allows efficient USB protocol analysis for High Speed USB 2.0, SuperSpeed USB 3.0 and SuperSpeed+ USB 3.x communications.

For the best user experience, our product supports data filtering . Free version supports filtering by USB endpoints and requests. Paid version also supports filtering by parsed protocol fields and provides you with a lot of custom filtering options.

The free version provides all the basic tools for convenient tracing and exploring captured USB data. It includes browsing, searching for specific data patterns and exporting features. Paid version also supports USB data recording (USB data logger function), sending packets to USB HID devices in response to triggered events and allows you to automate workflow with scripts (written in JavaScript or TypeScript).

This USB sniffer helps in developing, debugging, testing and analyzing devices, their drivers, and other software/hardware solutions that exchange data using USB communication protocols.

Download this Free USB Sniffer and trace USB communications in seconds.

How Free USB Analyzer Works

The program installs a filter driver between the USB host controller driver and the device driver and then intercepts all USB Request Blocks (URBs), displaying them to the user in an easily readable format.

This free USB monitoring and analysis utility is designed for efficient interception, capturing and decoding of communication data generated by any USB application and device connected to a local or remote PC via the USB interfaces.

Free USB Analyzer supports advanced data filtering by URB type and USB endpoints.

Capturing and interactively displaying data transferred over a USB connection is now made easy!

Free USB Sniffer Features

  • View USB device stack layout: device objects for each device driver
  • View USB device descriptor, configuration descriptor, interface descriptor, endpoint descriptor, HID descriptor
  • View USB device properties and Plug & Play (PnP) related information
  • Analyze USB Host Controllers, USB Hubs and USB Devices activity
  • Monitor the bus traffic, decode and display the USB data, filter bus traffic
  • Intercept and view USB control transfers, interrupt transfers, bulk transfers and isochronous transfers
  • Parse and reverse engineer USB protocols, reverse engineer USB devices, drivers and USB applications
  • Capture data streamed via Hi-Speed USB and SuperSpeed Plus USB host controllers
  • Capture data sent to the target Full-Speed USB 2.0 devices
  • Monitor data that flows between device interface and USB interface port
  • Analyze data transfer protocols for local or even remote USB devices

If you are looking for an entirely software-based monitoring solution that facilitates development and debugging of USB devices, drivers and applications, then our Free USB Snooper is exactly what you need. It requires no additional hardware and allows you to debug communication protocol errors, view and test device failures.

Free USB Port Monitor OS support:

Our software Universal Serial Bus Analyzer supports all modern Windows server and desktop platforms starting from Windows Vista x86 and x64 operating systems. Monitoring of USB devices on Windows 10, Windows 11 and Windows Server 2022 are also supported.

Free USB Protocol Analyzer Usage

  • Debugging USB-related software applications and hardware devices
  • USB hardware and device driver development
  • Testing and troubleshooting USB software and hardware
  • Reverse engineering of USB devices, drivers, applications and protocols
  • Capturing and parsing USB descriptors, exploring USB device properties
  • Snooping USB communications data, I/O requests and control requests
  • Exporting device communication data to your hard disk drive or removable media
  • Spying and analyzing remote USB communications, remote data snooping
  • Understanding proprietary databus protocols
  • Researching functionality of any third-party software applications and hardware devices
  • Detecting errors in USB data transmission
  • Testing and troubleshooting USB protocols
Free USB Protocol Analyzer Target Groups
  • USB hardware and software developers
  • IT system integrators and consultants, lab experts
  • Engineers working in the field or in the lab
  • SCADA software system engineers and embedded engineers
  • USB Programmers, testers and IT support specialists
  • Industrial control equipment support personnel
  • USB device developers, manufacturers and vendors
  • Science technicians and university students
Free Software USB Analyzer Additional Usage Scenarios
  • USB driver stack: Device objects associated with each USB device driver used for I/O operations.
  • USB descriptors: USB device descriptor, USB configuration descriptor, USB interface descriptor, USB endpoint descriptor.
  • USB Plug and Play related information: Instance ID, Hardware ID, Software Key and more.
  • USB Request Blocks (URBs) and structures used by device drivers.
  • I/O Request Packets (IRPs) used by PnP.
  • I/O Control Requests (IOCTLs) used by kernel-mode drivers and user-mode applications.
  • Incoming and outgoing data packets flowing through USB interface.
  • Audio (Sound card, speaker, microphone, MIDI)
  • Communications and CDC Control (Ethernet adapter, Wi-Fi adapter, modem)
  • Human interface device (HID) (Keyboard, joystick, mouse)
  • Physical Interface Device (PID) (Force feedback joystick)
  • Image (Webcam, scanner)
  • Printer (Inkjet printer, laser printer, CNC machine)
  • Mass storage (MSC or UMS) (Memory card reader, USB flash drive, digital camera, digital audio player, external drive)
  • USB hub (Full bandwidth hub)
  • Smart Card (USB smart card reader)
  • Content security (Fingerprint reader)
  • Video (Webcams)
  • Personal Healthcare (Pulse monitor)
  • Audio/Video (AV) (Webcam, TV)
  • Diagnostic Device (USB compliance testing device)
  • Wireless Controller (Bluetooth adapter)
  • Miscellaneous (ActiveSync devices)
  • Application-specific (IrDA Bridge, Test and Measurement Class (USBTMC) for test and measurement equipment, USB DFU (Direct Firmware update))
  • Vendor-specific device class
  • USB composite devices
  • USB mass storage / USB drive devices
  • USB Media Transfer Protocol (MTP) devices
  • USB Human interface (HID) devices
  • USB Video / Audio MIDI devices
  • USB to Serial adapter, USB Ethernet adapter, USB Modem, USB Serial (COM) Port, USB KVM switch, USB TV Tuner, USB Serial converter, USB Bluetooth adapter, USB Bar-code reader.
  • USB Webcam, Video device, USB Microphone, Audio device.
  • USB CD, DVD, Blu-ray Disc, BD players/recorders, Sound Bars and Home Theater Systems, USB Hard Disk Drives, HDD, USB pen drive (pendrive), USB Memory Cards.
  • USB Joysticks, Keypads, Mice.
  • USB Cameras, Receivers, Digital Camcorders, TV, Projectors and Screens, USB Printers, MP3 Players, Radios, Amps and Tuners.
  • USB Gadgets, iPod, iPad, USB Tablets, E-Readers, Mobile Phones, Smartphone, Cell Phones, GPS Navigators.
  • USB Networking and Wireless adapters, Computer Peripherals, USB Host Controllers and much more.

Download this Free USB tracer and analyze USB communication bits and bytes in seconds!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *