Usb class ff subclass ff prot ff что это
вот такой ПРИБЛИЗИТЕЛЬНО. что за модель загадка для нас самих. китайская под(д)елка, но вполне себе.
При втыкании появляется стандартный "диалог" о том ,что
"ВАМ тут посылка пришла ,
Только я вам её НЕ отдам,
пАтАчуЧтО у вас дОкументов нетУ"
об установке новых ДРАЙВЕРОВ.
1.
и на моё Искреннее удивление предложил поискть здесь :
C:\Program Files\Compiled Driver Disk (Android)\Android\Samsung\21_Searsburg
,но у меня на компьютере НЕТ такой папки. А она предлагает САМА в ней поискать..
т.е. где-то у неё (у кого у неё?) это(выделенное жирным - сам не знаю что это и откуда) прописано.
2.
В диспетчере Устройств на ЭТОТ МОМЕНТ(пока никаких драйверов предоложено НЕ было)
обнаружилось 4 новых USB устройства :
(скорее всего)Размещение(т.к. только его можно скопировать)
USB-совместимое запоминающее устройство
Драйвер:
C:\WINDOWS\system32\drivers\USBSTOR.SY (печатал ручками)
4/4 сверху
Размещение:
Linux File-CD Gadget USB Device
код экземпляра устройства:
STORAGE\REMOVABLEMEDIA\8&2A14CA6A&0&RM
3/4 сверху
Размещение:
Linux File-CD Gadget USB Device
код экземпляра устройства:
STORAGE\REMOVABLEMEDIA\8&175B19C5&0&RM
2/4 сверху
Размещение:
Размещение 0 (CIF Single Chip )
код экземпляра устройства:
USB\VID_093A&PID_2471\5&BFE1B0B&0&1
Коды (ID) оборудования:
USB\Vid_093a&PID_2471&Rev_0100
USB\Vid_093a&PID_2471
1/4 сверху
Размещение:
Размещение 0 (MT65xx Android Phone)
Состояние устройства:
(
Это устройство настроено неправильно. (Код 1)
Нажмите "Переустановить" для переустановки драйверов этого устройства.
)
код экземпляра устройства:
USB\VID_0BB4&PID_0C03&MI_01\6&1E68B3CF&0&0 001
Коды (ID) оборудования:
USB\Vid_0bb4&Pid_0c03&Rev_0255&MI_01
USB\Vid_0bb4&Pid_0c03&MI_01
совместимые коды (ID)
USB\Class_ff&SubClass_42&Prot_01
USB\Class_ff&SubClass_42
USB\Class_ff
===
надо сказать, что после отказа предоставить драйвера — ну те что
C:\Program Files\Compiled Driver Disk (Android)\Android\Samsung\21_Searsburg
система тем не менее смогла распознать и установить устройства 4/4 и 3/4
Linux File-CD Gadget USB Device
USBSTOR\DISK&VEN_LINUX&PROD_FILE-CD_GADG ET&REV_0000\7&20AB2C06&0&0123456789ABCDE F&0
USBSTOR\DISK&VEN_LINUX&PROD_FILE-CD_GADG ET&REV_0000\7&20AB2C06&0&0123456789ABCDE F&1
Но что это за ДИСКИ такие ? и Как к ним получить доступ - ВОПРОС?
Ни в "Мой Компьютер" Ни где-то ещё НЕ появилось НИЧЕГО, к сожалению.
Так что что бы что-то записать и установить на сей "Samsung"
приходится тупо
вынуть microSDHC
вставить её в компьютер (через кардридер CardReader)
записать на неё вручную всё что необходимо
БЕЗОПАСНО извечь, "ВОИЗБЕЖАНИИ, а то уже был прецедент — сбежал чёрт и украл Луну"(А.иБ.Стругацкие)
вставить назад в телефон.
И вот теперь у нас в телефоне что-то появилось..
Использовать же сей аппарат
просто как USB Storage
не представляется возможным.
И даже в меню никаких подобных настроек найти пока НЕ смог.
ХОТЯ ОНИ И УПОМИНАЮТСЯ!
А теперь вопросы:
Android синхронизирует контакты через интернет с Контакты.Google — это прекрасно.
1.
Теперь моделируем ситуацию. Мы потеряли телефон.
Кто-то нашёл наш телефон. И ему НЕ нужны наши контакты. Он выделяет их ВСЕ и удаляет.
ВОПРОС:
Как в этом случаем послупит Синхронизация ? - по логике он должна удалить ВСЕ наши контакты на сервере Google. Но это же катастрофа! - как уберечь_ся от такой ВОЗМОЖНОЙ ситуации.
И/или
Синхронизация Телефона с Контакты.Google лишь редактирует и Добавляет контакты С ТЕЛЕФОНА.
А вот УДАЛЯТЬ позволяет только С СЕРВЕРА.
Таким образом мы получили бы определённую ЗАЩИТУ наших контактов от полного удаления.
Иначе получается какой-то Абсорд Абсурдов. Мы потеряли телефон. Но УРА — у нас сохранились все Контакты.на сервере.Google. О Нет где же они?! - их НЕТ. Их тоже нет! :(
Представили?!
я не знаю Закрыли ли разработчики эту дыру или нет. - Как известно часто бывает, что нет..
2.
Есть ли какая-то ИДЕАЛЬНАЯ система хранения и синхронизации КОнтактов. Такая,
что бы ДАЖЕ Я
НЕ смог бы найти и заподозрить в ней
НИ ЕДИНОЙ претензии ?
Вот было бы интересно взглянуть.
3.
Ура Заработало!
ищем
[ по Коду указанному выше ] по Коду указанному выше -
MT65xx Android Phone
код экземпляра устройства: USB\VID_0BB4&PID_0C03&MI_01\6&1E68B3CF&0&0001
нужный Драйвер
Поисковик выдаёт, что это :
usb_driver_MT65xx_Android_ZTE_v821.rar
при втыкании телефона - появляется диалог "Найдено новое устройство" - необходимо установить Драйвера -
И соответсвующий диалог, когда система пытается эти самые драйвера найти.
Подставляем ей Путь куда скачали+Сохранили usb_driver_MT65xx_Android_ZTE_v821.rar
И получаем следующие результаты.
4.
Теперь осталось разобраться что такое есть ПО СУТИ
передача Интернета на Android устройство через USB
есть несколько статей на эту тему :
Видео-урок на 14 минут
про который я написал целую статью.
но я пока е разобрался в теме ПО СУТИ - какие кнопки нажимать меня интересует в последнюю очередь. Мне бы хотелось СУТЬ понять. Что за протоколы/интерфейсы.
(
я использую ActiveSync в связке с Windows Mobile (WM) - и там Интернет через USB передаётся
(как-то сам собой - по умолчанию - и/или если галочка стоит)
)
В сравнении всё всегда становится понятнее.
Попался мне китайский MicroUSB ИК трансивер, и возникло желание подключить его к компу с Windows. Трансивер представляет собой весьма компактный девайс с разъемом Micro USB. Единственный «официальный» вариант работы с ним — через Android приложение под названием ZaZaRemote.
При подключении к компу через переходник девайс определился как HID-совместимое устройство USB\VID_10C4&PID_8468. Гугление по этому ID не дало никаких результатов, и пришлось заняться реверсингом протокола.
Неправильный HID
Класс девайса определялся как USB\Class_03&SubClass_FF&Prot_FF. Class_03 — HID устройство, SubClass_FF — vendor specific. Системой был автоматически установлен драйвер hidusb.sys. С этим драйвером можно работать посредством HID API.
Набросав простенькую программку, я смог получить различную инфу по девайсу:
Получается что обмен ведется блоками по 61 байту максимум, имеется 2 InputValue и 2 OutputValue интерфейса. Более подробную информацию по ним возвращает функция HidP_GetValueCaps:
Из этих данных наиболее интересными являются ReportID — ID report-а (фактически, пакета данных) и ReportCount — его размер. Данные можно отправлять и принимать с помощью функций HidD_SetOutputReport и HidD_GetInputReport соответственно. Поэкспериментировав с этими функциями, с разными ReportID и размером данных, я так и не смог добиться успешного обмена. Поснифав трафик по USB с помощью USBPcap, я обнаружил что данные даже не пытались передаваться. Появилось подозрение что это какой-то неправильный HID.
SET_REPORT Request остался без ответа
Реверсинг приложения ZaZaRemote
В APK файле этого приложения я обнаружил библиотеку libtiqiaa_dev_usb.so. Она экспортирует следующие функции:
Судя по названию, они и реализуют обмен с устройством. В их коде часто встречаются фрагменты, похожие на вызов виртуальных функций:
Регистр R0 — первый аргумент этой функции. Эти функции вызываются только из Java кода classes.dex. Декомпилировав этот файл, получаем их тип:
Java код оказался обфусцирован, однако некоторые имена все же сохранились. Применительно к этой библиотеке, обфускатор испортил только имя последней функции, однако имена в основном Java коде были испорчены почти все.
Немного изучив декомпилированный Java код, я обнаружил следующие строки:
Теперь можно задать тип функций в IDA:
Теперь декомпилятор HexRays распознает вызовы JNI и код становится гораздо более понятным, например приведенный выше вызов декомпилируется как:
- buf[0] = 2 — константа. Помните ReportID 2? Похоже что это оно и есть. А ReportCount 60 — это размер оставшихся данных — тоже совпадает.
- buf[1] = fragmSize + 3 — размер данных фрагмента + 3, т.е. размер считается от байта, следующего за этой переменной.
- buf[2] = UsbPackCounter — просто счетчик, 1..15.
- Значение buf[3], вычисляемое навороченным выражением, это просто число фрагментов, можно переписать как:
Видно, что HexRays на этот раз не справился — в аргументах только v6 = JNIEnv *env. Однако в ассемблерном коде все на месте:
methodID хранится в переменной dword_B2A4. Посмотрим откуда он взялся:
Запись производится в функции usbOpen и usbClose. Очевидно, нас интересует usbOpen.
Итак, это метод UsbEndpoint::bulkTransfer. И ничего — связанного с HID!
Теперь рассмотрим как передаются ИК коды — функция usbSendIR.
Как и в случае с остальными командами, начинается все с «ST», затем следуют cmdId и код команды 'D', далее байт, определяющий частоту — если аргумент freq > 255 — он ищется в таблице частот IrFreqTable, иначе — копируется напрямую. Затем идут данные и завершается все на «EN».
Функция с обфусцированным именем «d» оказалась парсером принятых данных.
Смена драйвера и работа через bulkTransfer
Изучив HID API я выяснил, что оно в принципе не предоставляет возможности использовать bulkTransfer — значит придется менять драйвер. Для работы с этим устройством подходит драйвер WinUsb.
Написав inf файл, я сменил драйвер на WinUsb и попробовал отправлять команды. Все заработало и был получена реакция от девайса — в ответ на отправку команд (через WinUsb_WritePipe) приходил ответ аналогичного формата.
Дамп обмена с ZaZaRemote
Запрошенные разрешения определенно вызывают доверие к этой софтине
Запустив приложение и настроив проброс USB я смог заснифать USB трафик. Так я получил последовательность команд для инициализации приема и передачи ИК команд, а также образцы данных ИК посылок.
Выяснилось что девайс способен не только передавать, но и принимать ИК команды, однако прием работал весьма так себе — с расстояния 10 см, и то через раз.
OUT:
0040 02 09 01 01 01 53 54 12 56 45 4e . ST.VEN
IN:
0040 01 30 07 01 01 53 54 12 56 30 01 30 30 30 30 30 .0. ST.V0.00000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 02 01 01 53 54 13 53 45 4e . ST.SEN
IN:
0040 01 0a 08 01 01 53 54 13 53 09 45 4e 30 30 30 30 . ST.S.EN0000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
IN:
0040 01 0a 09 01 01 53 54 14 4f 09 45 4e 30 30 30 30 . ST.O.EN0000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 01 01 01 53 54 17 56 45 4e . ST.VEN
IN:
0040 01 30 0c 01 01 53 54 17 56 30 01 30 30 30 30 30 .0. ST.V0.00000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 02 01 01 53 54 18 53 45 4e . ST.SEN
0040 01 0a 0d 01 01 53 54 18 53 09 45 4e 30 30 30 30 . ST.S.EN0000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 03 01 01 53 54 19 52 45 4e . ST.REN
0040 01 0a 0e 01 01 53 54 19 52 13 45 4e 30 30 30 30 . ST.R.EN0000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 04 01 01 53 54 1a 43 45 4e . ST.CEN
IN:
0040 01 0a 0f 01 01 53 54 1a 43 13 45 4e 30 30 30 30 . ST.C.EN0000
0050 30 30 30 2d 30 30 30 30 2d 30 30 30 30 2d 30 30 000-0000-0000-00
0060 30 30 2d 30 30 30 30 30 30 30 30 30 30 30 31 09 00-000000000001.
0070 45 4e ff ff ff df ff f9 ef ff df ff bf fb ff EN.
OUT:
0040 02 09 05 01 01 53 54 1b 4f 45 4e . ST.OEN
IN:
0040 01 3b 01 0e 01 53 54 00 44 ff ff ff ff ba 7f 7f .;. ST.D.
0050 19 a4 21 a4 21 a4 68 a4 22 a4 21 a4 22 a4 22 a4 . h.". ".".
0060 22 a4 68 a4 68 a4 21 a4 68 a4 68 a4 68 a4 68 a4 ".h.h. h.h.h.h.
0070 68 a4 68 a4 22 a4 22 a4 22 a4 68 a4 22 fb ff h.h.".".".h."..
.
0040 01 2f 01 0e 0e 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f ./.
0050 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f .
0060 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 7f 3e 13 45 . >.E
0070 4e 82 02 82 02 82 7f 7f 7f 7f 7f 7f 7f fb ff N.
Выяснилось, что у девайса проблемы с размером данных для отправки — помимо ответа сыплется всякий мусор — как правило то, что осталось от предыдущей посылки.
Изучение дампа и последующие эксперименты позволили узнать функции всех команд:
- 'V' — Version — запрос версии — мой девайс выдает нулевой GUID;
- 'L' — IdleMode — режим ожидания — в этом режиме девайс находится после подачи питания, либо переходит по этой команде;
- 'S' — SendMode — режим передачи — используется для посылки ИК сигналов;
- 'R' — RecvMode — режим приема — используется для приема ИК сигналов;
- 'D' — Data — в режиме передачи — данные для передачи, в режиме приема — данные захваченной ИК посылки;
- 'O' — Output — в режиме передачи — подтверждение передачи, в режиме приема — запрос на захват/выдачу данных;
- 'C' — Cancel — в режиме приема — отмена приема, ранее запрошенного по 'O';
- 'H' — Unknown — ответ на неизвестную команду.
Исследование формата ИК посылок
Получив дамп управляющих команд и ИК посылок я смог реализовать полноценное управление девайсом — прием и передачу ИК сигнала. Однако для того, чтобы синтезировать произвольный ИК сигнал необходимо было определить формат, в котором он кодируется. Для этого я подключил ИК фотоприемник к осциллографу и стал исследовать посылаемые сигналы. Путем экспериментов я выяснил формат кодирования: старший бит каждого байта определяет включен или нет передатчик, а младшие 7 бит — время. Единица времени оказалась равна 16 мксек. Например: 8A — передатчик включен на 160 мксек; 8A 05 FF 83 — 160 мксек включен, пауза 80 мксек, 2.08 мсек включен.
Когда передатчик включен, светодиод пульсирует с частотой
36.64 кГц. Теоретически, эта частота должна определяться аргументом freq команды usbSendIR, однако эксперименты показали что девайс абсолютно никак не реагирует на этот аргумент. Тем не менее, имеющаяся у меня бытовая техника нормально принимала сигналы этого трансивера.
Формат данных, записываемых девайсом в режиме приема, оказался аналогичным.
Класс TiqiaaUsbIr и программа IR Control
Я реализовал управление трансивером в виде C++ класса TiqiaaUsbIr и написал простенькую программу CaptureIR на QT. Помимо функций приема и передачи ИК сигналов я реализовал синтезирование и декодирование сигналов по протоколу NEC. Этот протокол используется например в пультах телевизоров LG. Также я реализовал сохранение и загрузку ИК сигналов в исходном формате и формате LIRC. Была идея сделать модуль для WinLirc, однако там оказалось кривоватое и не до конца реализованное API, так что эту идею я пока отложил.
Исходники и скомпилированную программу можно скачать тут.
Пример использования класса TiqiaaUsbIr:
Захваченный сигнал включения питания:
Он же, синтезированный:
В процессе захвата что-то пошло не так:
Итоги
В процессе исследований был полностью восстановлен USB протокол ИК трансивера Tiqiaa Tview, написан inf файл драйвера и ПО для работы с ним.
Рассмотренный ИК трансивер — весьма дешевый, доступный и компактный (5$ на Али, габариты 15 x 10 x 5 мм) девайс для управления бытовой техникой и исследования ее ИК протоколов. К сожалению, управление частотой передатчика оказалось неработоспособным, что в моем случае не вызвало проблем, однако возможно что существует техника с более привередливыми приемниками.
Режим приема, в следствии мизерного радиуса и низкой надежности захвата, непригоден для использования в качестве полноценного ИК приемника — рекорд дальности успешного захвата
30 см, при этом пульт нацелен точно на приемник, и даже в упор нормально захватываются далеко не все посланные сигналы. Тем не менее, он полезен для захвата сигналов и исследования протоколов ИК пультов.
Бонус
Интересные IR коды телевизоров LG:
POWER 0408
POWERON 04C4
POWEROFF 04C5
IN_STOP 04FA
IN_START 04FB
POWERONLY 04FE
EZ_ADJUST 04FF
Ни для кого уже не секрет, что информация о разного рода активности многочисленных компонентов операционной системы попадает в реестр и файлы в виде записей заданного формата. При этом, информация эта нередко содержит чувствительные пользовательские данные: историю посещенных браузером страниц, кеш данных программ, информацию о подключаемых устройствах и многое многое другое. Во основном журналирование обеспечивается функциональными особенностями пользовательских программ, которые имеют встроенные алгоритмы сохранения истории операций, отчасти это возможно благодаря архитектурным особенностям ядра/HAL операционной системы, которые, производя конфигурирационные действия с устройствами, сохраняют информацию о последних в виде записей в системном реестре. Из всего многообразия подобной информации, в рамках данной статьи нас будет интересовать исключительно история использования USB устройств.
Следы подключения USB устройств, содержащиеся в виде различных данных в файлах/реестре, принято называть артефактами.Система создает артефакты в момент обнаружения (инициализации) устройства (сменных накопителей, модемов, гаджетов, камер, медиаплееров и прч.) на шине компьютера. Дополнительным плюсом данного материала будет возможность сбора доказательной базы по факту неправомерного использования рабочей станции пользователя в корпоративной среде при помощи незадекларированных USB-устройств.
Не так давно в нашу жизнь вошел интерфейс USB, привнеся в неё довольно существенные изменения. Неожиданно многие вещи стали проще, отпала необходимость инсталляции устройства во внутренний интерфейсный разъем (шина), или внешний интерфейс, требующий перезагрузки станции для корректной инициализации устройства, да и сам процесс конфигурирования устройств стал, во множестве случаев, тривиальнее. На интерфейсе USB появились тысячи разнообразных по назначению устройств, которые достаточно было подключить к разъему на панели корпуса, после чего от момента подключения до состояния "готов к работе", порой проходили считанные минуты. Наряду с очевидными достоинствами: легкостью конфигурирования/использования, компактностью, функциональностью, подобные устройства сразу стали источником проблем как для безопасности персональных данных самого пользователя, так и безопасности корпоративных сред. Компактный, легко маскируемый "брелок" с интерфейсом USB может запросто явиться той ахиллесовой пятой, которая станет причиной "падения" гиганта корпоративной безопасности. Если порты USB в корпоративных рабочих станциях находятся без надлежащего контроля со стороны политик безопасности, то любое приспособление может запросто выступить в качестве средства для обхода периметра безопасности компании. И тут уж насколько хватит фантазии "взломщика", например, достаточно пронести на флешке свежий, не определяемый антивирусами вредоносный код и выполнить его (умышленно или нет), и вот вам уже прецедент, поскольку даже без локальных административных привилегий учетной записи пользователя сохраняется пространство для маневра. Не меньшую опасность представляют и USB-модемы, которые, в случае установки (а при использовании локальных/доменных политик по умолчанию это достигается достаточно просто), могут выступить в роли неконтролируемого канала передачи данных, по которому может осуществляться передача чувствительной корпоративной информации за пределы защищенного внутреннего периметра. При этом, даже декларируемые (заявленные/согласованные) пользовательские устройства (например, телефоны) могут содержать в своих микропрограммах или операционных системах уязвимости, которые, в случае эксплуатации, наносят вред не только владельцу, но и могут выступать в роли средства несанкционированного доступа к служебным данным. Поэтому, в случае возникновения инцидента информационной безопасности, связанного с эксплуатацией USB-устройств,
хронология действий с USB-устройствами может рассматриваться в качестве доказательной базы при возникновении инцидентов в сфере информационной безопасности.В связи со всем перечисленным, достаточно важно не только уметь ограничивать использование устройств, но и иметь доступ к истории USB подключений в системе. Этому вопросу и будет посвящена данная статья. Сразу оговорюсь, что весь список точек создания информации о подключении тех или иных устройство чрезвычайно обширен, поэтому по теме данной статьи мы будем рассматривать лишь историю использования USB устройств.
Перечисление (энумерация) USB устройств
Поскольку я сам в данном вопросе "плаваю", перед тем как перейти к практике, предлагаю немного усилить нашу теоретическую базу и описать терминологию, которая будет использоваться на протяжении всего материала. Сразу оговорюсь, что мы не будем освещать все виды взаимодействия, выполняющиеся на шине USB на аппаратном уровне, а сосредоточимся исключительно на основных понятиях, относящихся к USB-устройствам и требующихся нам для понимания практической стороны вопроса.
Подключение любого нового оборудования сопряжено с выполнением модулями ядра системы Windows предопределенных фаз опроса и инициализации. Начинается всё с того, что при подключении устройства к разъему USB, контроллером USB (встроенным в чипсет на материнской плате) генерируется аппаратное прерывание. Драйвер USB, ответственный за обработку данного прерывания, запрашивает статус порта, и если статус указывает на подключенное устройство, то ответственными подсистемами ядра производится последовательность действий, которую условно можно разделить на две стадии:
- Нумерование устройства;
- Установка драйвера устройства;
Ядро (?) инициирует к вновь подключенному устройству серию запросов GET_DESCRIPTOR с различными типами запрашиваемых дескрипторов ( Device , Configuration , LangID , iProduct ). Запросы опрашивают устройство на предмет наличия серии дескрипторов, представляющих собой структуры данных, описывающие возможности USB устройства.
Дескрипторы USB - структуры данных, которые позволяют операционной системе получить информацию об устройстве. Каждый дескриптор содержит информацию о устройстве в целом или отдельном элементе в рамках устройства.Отсюда следует вывод, что любое USB-устройство должно уметь реагировать на запросы от хоста и иные события на шине. В ответ на подобного рода запросы, микрокод устройства возвращает из ПЗУ требуемую информацию. Данные, возвращаемые устройством в ответ на запросы разнообразных дескрипторов, являются важными для операционной системы, поскольку именно часть этих данных представляет собой различного рода идентификаторы, используемые системой в дальнейшем в процессе нумерования устройства. Давайте приведем наиболее значимую информацию:
Название поля | Терминология Windows | Размер (байт) | Комментарий |
---|---|---|---|
idVendor | VID | 2 | Идентификатор производителя устройства. При присвоении идентификатора производителя, соответствующее числовое значение вносится в реестр производителей. |
idProduct | PID | 2 | Идентификатор продукта. Назначается производителем устройства. Product ID используется для дифференциации продуктов в рамках одного производителя. |
bcdDevice | REV | 2 | Идентификатор ревизии. Используется для дифференциации разных аппаратных модификаций в рамках одной модели устройства. Может использоваться при выпуске новой версии платы/контроллера/логики. |
bDeviceClass, bFunctionClass, bInterfaceClass | Class | 1 | Класс устройства. Используется для задания класса схожих устройств с общим набором идентичных свойств. |
bDeviceSubclass, bFunctionSubClass, bInterfaceSubclass | SubClass (SUB) | 1 | Подкласс устройства. Используется для задания подкласса схожих устройств в рамках класса. |
bDeviceProtocol, bFunctionProtocol, bInterfaceProtocol | Protocol (Prot, PROTO) | 1 | Протокол устройства. Используется для задания протокола для устройств в рамках класса и подкласса. |
iProduct | Product | ? | Текстовая строка-описатель продукта. Когда устройство подключено к компьютеру, данная информация отображается в Диспетчере устройств. |
iSerialNumber | Serial | ? | Серийный номер. Используется для уникализации абсолютно одинаковых устройств, например две одинаковых флешки. Назначается и поддерживается производителем устройства. Связанный механизм носит имя Сериализация. Сериализация так же участвует в уникальной идентификации устройства, поскольку добавляет еще один уровень уникальности. |
Наверняка многие из перечисленных в таблице полей Вам уже встречались в составе значений различных параметров в том же Диспетчере устройств либо в разнообразных системных лог-файлах.
Помимо стандартных дескрипторов, существуют еще так называемые Дескрипторы Microsoft (Microsoft OS Descriptors, MOD), которые содержат специфичную для ОС Windows информацию. Для поддержки производителей, чьи устройства из-за функциональных особенностей не подходят под стандартный набор классов, Майкрософт разработала набор специальных классов и собственных дескрипторов. Пользовательское и системное ПО может идентифицировать устройства, принадлежащие к разработанным Майкрософт классам устройств путем опроса устройства на предмет наличия дескрипторов Microsoft. Помимо поддержки описанных классов устройств, дескрипторы Microsoft имеют и иное применение, например при помощи них можно использовать память устройства для хранения файлов помощи, иконок, списков адресов URL, настроек системного реестра и других данных, используемых для обеспечения прозрачности установки и достижения смежных целей. Устройства, поддерживающие дескрипторы Microsoft, должны хранить специальный строковый дескриптор в прошивке с фиксированным индексом 0xEE . Операционные системы Windows XP SP1 и более поздние запрашивают этот строковый дескриптор у устройства при первом его подключении.
Более того, использование пары VID / PID в дескрипторе любого USB-устройства предписывается спецификацией, согласно которой данные параметры должны быть уникальны для каждой модели устройства. Ну это, опять же, все в теории, а на практике пару раз встречались экземпляры устройств, при работе с которыми становилось очевидно, что значения VID/PID взяты произвольно, либо взяты свободные значения (!) из реестра производителей. Понятно кому выгодно подобным заниматься :) Ну это скорее редко встречающаяся ситуация, когда производителю хочется сэкономить на внесении в реестр производителей.
Затем, после того, как у устройства запрошены ключевые параметры, для USB устройства создан уникальный идентификатор HardwareID ( CompatibleID ), однозначно идентифицирующий устройство/класс устройства. Драйвер USB-концентратора уведомляет специализированный модуль ядра под названием Диспетчер Plug-n-Play (PnP Manager) о новом устройстве. Диспетчер PnP получает идентификаторы HardwareID и CompatibleID устройства и пытается обнаружить устройства с аналогичными идентификаторами HardwareID/CompatibleID. В этот момент в системе создается узел устройства (devnode), что является, по сути, первым отпечатком USB устройства в системе. Если похожее устройство найдено, то производится установка соответствующих драйверов в автоматическом режиме, если же не найдено, то Диспетчер PnP получается уведомление о новом устройстве и далее действует по определенным правилам, описание которых выходит за рамки данного материала.
Эксперимент
В Сети много противоречивой информации относительно истории подключения USB, поэтому давайте проведем собственный эксперимент по выявлению всех возможных системных местоположений, формирующих историю USB подключений. С целью выявления следов подключения USB стоит отследить абсолютно все изменения, происходящие в системе в момент подключения USB устройства. С этой целью на просторах Сети была найдена замечательная утилита под названием SysTracer, которая обладает всем необходимым функционалом. Утилита настолько проста и функциональна, что во многих случаях она окажется незаменимым средством в руках специалиста, поскольку предоставляет возможность сделать КРАЙНЕ полезное действие: создать мгновенный снимок (snapshot) состояния ключевых компонентов системы, таких как реестр и файлы. В качестве системы я использовал чистую инсталляцию Windows 7 Professional, при этом главным требованием было отсутствие каких-либо подключений внешних носителей. Итак, делаем снимок чистой системы, затем вставляем тестовую USB-флешку SanDisk Cruzer mini 1.0Gb и через некоторое время делаем второй снимок. Встроенными средствами утилиты SysTracer сравниваем полученные образы с выводом отчета. В итоге у нас получился некий набор системных изменений, среди которых мы попытаемся выбрать именно те, которые могут относиться к следам подключения USB устройств. Выбранный мною метод имеет и свои недостатки, поскольку наблюдения за активностью системы применительно к USB устройствам не проводилось "в динамике", то есть мы не работали с открытыми с подключаемого носителя файлами (.docx/.xlsx) в различных пользовательских приложениях, а это могло привести к тому, что мы можем упустить факты попадания частей информации с USB-носителя в файлы подкачки, различные временные файлы кеша и файлы иного назначения. Поэтому материал, скорее всего, потребует последующей доработки.
Стоит так же учитывать, что в результате "ручной" чистки значений реестра, в некоторых ключах могут образовываться так называемые недействительные ссылки, которые, по идее, не должны вести к фатальным последствиям для работоспособности операционной системы, однако иметь в виду это стоит.История в файлах
После изучения изменений файловой части системных изменений, подтвердился факт того, что в операционной системе Windows 7 все действия над устройствами отражаются в следующих журнальных файлах:
ZTE MF283+ (МТС 834F) – обсуждение »
3G/4G router | Ext.Ant.: SMA
Тип 4G/Wi-Fi роутер
Стандарт беспроводной связи 802.11n, частота 2.4 / 5 ГГц
Встроенная поддержка 3G есть
Встроенная поддержка LTE есть
Поддержка MIMO есть
Макс. скорость беспроводного соединения 300 Мбит/с
Прием/передача
Защита информации WEP, WPA, WPA2
Опции точки доступа/моста
Коммутатор 4xLAN
Скорость портов 100 Мбит/сек
Поддержка IPv6 есть
Маршрутизатор
Межсетевой экран (FireWall) есть
NAT есть
DHCP-сервер есть
Демилитаризованная зона (DMZ) есть
Мониторинг и конфигурирование
Web-интерфейс есть
Дополнительно
Размеры (ШxВxГ) 195x150x55 мм
Дополнительная информация
2 порта RJ11 для подключения аналоговых телефонов; SMA-разъёмы для подключения внешней антенны
да вот время действует против нас то,МТС то дает 14 дней "безлимитки" а потом уже 700р месяц.
Domovoj,
а смысл если владельцев всего двое тут)
Добавлено 03.01.2017, 23:08:
RaMaValiev,
может перегреваться,у меня после суток работы стабильный кипяток
ИМХО есть смысл, сейчас народ от праздников отойдет пойдет в салон связи МТС и столкнется с этим зверем) яб создал да похоже у меня привилегий на это дело нету( Столкнулся с сей девайсом в салоне связи МТС. Там он продается с именем МТС 834F. От ZTE MF283+ главным отличием является отсутствие USB порта что усложнит дальнейшие манипуляции с устройством. Порты telnet и ssh молчат как будто воды в рот набрали. В ближайшее время попробую разобрать и показать потроха этого чуда.
в комплекте антенка внешняя,но проку от нее я не добился))
Это ведь типовая ситуация. По-другому для такого класса устройств бывает в 1 случае из 100, если вообще бывает.
В ближайшее время попробую разобрать и показать потроха этого чуда.
Хотя бы посмотрите, на какой платформе он построен.
Да, и по какой цене он продаётся в МТС?
vvevvevve,
4900Р
на прилавках еще нет их)
кстати,уважаемый epinsphp2016 поделился дампом с сего устройства,есть желающие посотреть?)
Не знаю, о каком дампе идёт речь, но выкладывайте - посмотрим. Не знаю, о каком дампе идёт речь, но выкладывайте - посмотрим.
Добавлено 04.01.2017, 21:26:
ссылка не моя,дал ув.epinsphp2016
zte_atcop.+ZPASR
+ZNITZ
+ZPINPUK
+ZCSPS
+ZSMSD
+ZTFTEST
+ZCDRUN
+ZUDISKW
+ZVN
+ZEGMR
+ZSPD
+ZPCB
+ZRST
+ZECC
+ZLACELLID
+ZSEC
+ZNCK
+ZLKLIST
+ZNVR
+ZDFLOW
+ZLEDCTRL
+ZSTM
+ZSELI
+ZSELM
+ZBK
+ZINPR
+ZINKR
+ZDISTR
+ZRSPSET. /. x5. +ZUSIM. /. $q. +ZCPBW. /. $.6. +ZCPBR. /. 6. +ZDON. /. p. +ZSNT. /.. . |e. +ZDSNT. /. 3. +ZCELLINFO. /. d. +ZLOCKBAND. /. _. +ZCELLSIGINFO. /. ^. +ZWDSIND. =.F.'R. /. 2. +ZDHCPLEASE. /. L<. +ZBANDI. /. W. +ZDLFREQ. /. H
В общем, судя по дампам, в нём "роутерная часть" работает на big-endian MIPS-платформе (вероятнее всего - Ralink RT3352), а "модемная часть" представляет собой модуль ZTE ZM8630 (форм-фактор - PCIe Mini) на базе MDM9225.
Таким образом, конструкция очень напоминает старые хуавеевские стационарные роутеры, вроде B593u.
Если интересует разблокировка, то её здесь можно сделать по аналогии с MF827/MF90: записать "F0AA" в NV item 0x1E4E (8014). Только для этого нужно получить доступ к диаг. интерфейсу модемного модуля. Первое, что приходит в голову - это вынуть модуль и вставить его в переходник или ноутбук со слотом PCIe Mini. Наверное, есть способы добраться до этого интерфейса и без демонтажа модуля, но как это сделать - понять невозможно, глядя только в дампы: нужно разбираться с железкой в руках.
Описание события:
Это событие создается каждый раз, когда кто-то сделал запрос на включить устройство.
Это событие не означает, что устройство включено.
Примечание. Рекомендации приведены в разделе Рекомендации по мониторингу безопасности для этого события.
XML события:
Необходимые роли сервера: нет.
Минимальная версия ОС: Windows 10 [Версия 1511].
Версии события: 0.
Описания полей:
Тема:
- Security ID [Type = SID]: SID учетной записи, которая сделала запрос. Средство просмотра событий автоматически пытается разрешить идентификатор безопасности SID и отобразить имя учетной записи. Если идентификатор безопасности разрешить не удается, в событии будут отображены исходные данные.
Примечание. . Идентификатор безопасности (SID) представляет собой строковое значение переменной длины, которое используется для идентификации доверенного лица (субъекта безопасности). Каждая учетная запись имеет уникальный идентификатор безопасности, выданный центром сертификации, таким как контроллер домена Active Directory, который хранится в базе данных безопасности. Каждый раз, когда пользователь входит в систему, система получает идентификатор безопасности этого пользователя из базы данных и помещает ее в маркер доступа этого пользователя. Система использует идентификатор безопасности в маркере доступа для идентификации пользователя во всех последующих операциях с Безопасностью Windows. Если идентификатор SID использовался как уникальный идентификатор для пользователя или группы, он не может использоваться повторно для идентификации другого пользователя или группы. Дополнительные сведения о SID см. в разделе Идентификаторы безопасности.
Имя учетной записи [Тип = UnicodeString]: имя учетной записи, которая сделала запрос.
Account Domain [Type = UnicodeString]: домен субъекта или имя компьютера. Форматы различаются и включают в себя следующее:
Пример имени домена NETBIOS: CONTOSO
Полное имя домена в нижнем регистре: contoso.local
Полное имя домена в верхнем регистре: CONTOSO.LOCAL
Для некоторых известных субъектов безопасности, таких как LOCAL SERVICE или ANONYMOUS LOGON, значение этого поля равно "NT AUTHORITY".
Для учетных записей локальных пользователей это поле будет содержать имя компьютера или устройства, к которым принадлежит эта учетная запись, например: "Win81".
Logon ID [Type = HexInt64]: шестнадцатеричное значение, которое может помочь сопоставить это событие с недавними событиями содержащими тот же идентификатор входа, например: “4624: Учетная запись успешно вошла в систему.”
ID устройства [Type = UnicodeString]:"Путь экземпляра устройства" атрибут устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Имя устройства [Type = UnicodeString]:"Атрибут описанияустройства" устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Код класса [Type = UnicodeString]: атрибут "Класс Guid" устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Имя класса [Тип = UnicodeString]: атрибуткласса"устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Hardware IDs [Type = UnicodeString]:"Hardware Ids" attribute of device. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Совместимые ID[Type = UnicodeString]: "Атрибут совместимыхids" устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Сведения о расположении [Type = UnicodeString]: атрибут "Сведения орасположении" устройства. Чтобы увидеть свойства устройств, запустите диспетчер устройств, откройте определенные свойства устройств и нажмите кнопку "Детали":
Читайте также: