Нас цікавлять дані, що передаються по шині USB. Чи можна якось "прослуховувати" цей трафік? Виявляється, можна.
Качаємо програму USBPcap. встановлюємо:
![Перехоплення даних на шині usb практика (сніффер Установка сніффер) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-1671cb84.png)
![Перехоплення даних на шині usb практика (перехоплення) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-f32da48a.png)
![Перехоплення даних на шині usb практика (практика) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-3e352a1f.png)
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-3c2fcfe9.png)
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-ea515aa9.png)
Тепер запускаємо файл USBPcapCMD.exe з правами адміністратора:
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-d83d46f6.png)
Запуск USB сніффер
Моніторити ми будемо роботу з флешкою, яку я дбайливо вставив у порт 3 першого кореневого хаба. У програмі він визначився під номером 2. Вводимо цифру 2. Потім вводимо результуючий файл (1.pcap), в нього буде записуватися всі, що відбувається на цій шині.
Трошки модифікуємо вміст текстового файлу на флешці:
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-e6bcfec2.png)
Запишемо наочну послідовність в файл
Після цього завершуємо консольний додаток сніффер натисканням клавіш Ctrl + C і відкриваємо файл 1.pcap (з'явився в каталозі програми) через WireShark:
![Перехоплення даних на шині usb практика (Установка сніффер Установка) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-4d31b63e.png)
Команди обміну даними з USB пристроєм
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-df7c0e9e.png)
Періодичний опитування USB пристрої
Отже, неважко помітити, що періодично (приблизно раз в секунду) відбувається опитування USB пристрої:
Ми це бачимо як Test Unit Ready LUN. Моментально приходить відгук. Таким чином система дізнається, що до хабу він підключений.
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-0f949dcb.png)
Команда на запис USB пристрої
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-05728636.png)
Запис кореневого каталогу FAT
Мої очікування виправдалися! Шляхом нескладних арифметичних перетворень отримуємо:
0x000001F0 * 200 = 0x0003E000
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-6c5104f9.png)
Кореневої каталог FAT
![Перехоплення даних на шині usb практика (Установка сніффер Установка) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-fc8cd579.png)
Очищений кореневий каталог
![Перехоплення даних на шині usb практика (практика) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-80fc3f79.png)
Запис даних у файл на флешці
Наступна команда на запис - в блок 0x00000210. Бачимо, що записується послідовність 0x31. 0x31. 0x31. 0x32. 0x32, ... Ага!
Множимо блок на 200:
![Перехоплення даних на шині usb практика (перехоплення) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-6f50b207.png)
Вміст файлу на флешці
Ну точно! Це як раз кластер, які займає файл 1.txt. і з цього зміщення починається його вміст 111222333444. Саме ASCII коди цих символів і виглядають як 0x31, 0x31, 0x31, 0x32, .... Все зійшлося!
Дивимося наступну команду на запис:
![Перехоплення даних на шині usb практика (перехоплення) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-08824c6d.png)
Запис в таблицю FAT
Цікаво. Звичайно, у мене є гіпотеза, але краще б її перевірити. Бачимо LBA 0x00000004.
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-2355e9ef.png)
Пояснюю, F8 - ідентифікатор носія (жорсткий диск). Далі йде два байта заповнювач FFFF. А далі - FFFF - це запис нашого файлу. Це означає, що в таблиці розміщення файлів наш файл займає один єдиний кластер і це перший запис FAT. Подивіться посилання, щоб розібратися.
Наступне зсув на попередньому скрині - 0x0000000FA. Розбирати не будемо, просто скажу, що це друга копія FAT-таблиці (резервна).
Ось, загалом-то і все. Треба сказати, я до цього не зовсім розумів, як відбувається запис на носії типу USB. Тепер це стає зрозумілим. Існують методичні матеріали з програмування USB пристроїв і драйверів, у мене ж є одна чудова ідейка, яку я хочу втілити в життя. Для цього потрібно написати невелику програмку, на зразок цього сніффер.
Вам так само сподобається:
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-4ef3a209.png)
![Перехоплення даних на шині usb практика (сніффер Установка сніффер) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-78524e65.jpg)
![Перехоплення даних на шині usb практика (шині) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-91c66529.png)
![Перехоплення даних на шині usb практика (перехоплення) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-2195a253.png)
![Перехоплення даних на шині usb практика (даних) Перехоплення даних на шині usb практика](https://images-on-off.com/images/192/perexvatdannixnashineusbpraktika-ace0d820.png)