Підроблений серійний номер USB-пристрою


9

У мене мобільний телефон підключений до ПК через USB.

Під час перегляду інформації про пристрій за допомогою

sudo udevadm info --attribute-walk

ідентифікатор продукту та постачальника добре відображається, але ATTR {serial} немає . Програмі, яку я використовую (Android adb), потрібен пристрій, щоб повідомити про серійний номер для належної роботи.

Чи можна підробити серійний номер пристрою, наприклад, використовуючи правило udev?

Уточнення: питання полягає не в тому, як отримати серійний номер USB-пристрою, а в тому, як встановити серійний номер.

У мене був телефон Android, який не повідомляє серійний номер через USB, і інструмент adb не надто сподобався. Поки, здається, немає простого рішення для цього. Однак днями дуже просто придбати для розробки відповідний телефон Android.


Це андроїд телефон? Якщо ні, то adb не буде працювати.
Кіт

Я здогадуюсь, що adb насправді не отримує цю інформацію від udev. Можливо, замість sysfs або безпосередньо з пристрою. Розглянемо виправлення adb, мабуть, найпростіший підхід.
дероберт

Відповіді:


1

По-перше, переконайтесь, що пристрій, який не повідомляє серійний номер, справді є проблемою. adb devicesвідобразить серійний номер як усі знаки запитання, якщо він не має дозволу на доступ до відповідного пристрою в /dev/bus/usb/. Також пам’ятайте, що adb запускає сервер, можливо, вам доведеться вбити це, щоб змусити його повторно перевірити.

Припускаючи, що це справді проблема з пристроєм, я швидко перевірив вихідний код adb. Він відображається register_deviceв тому, що core/adb/usb_linux.cчитає серійний номер прямо з пристрою. core/adb/usb_libusb.cзакликає libusb_get_device_descriptorце зробити, який (перевіряючи вихідний код libusb) захоплює його з sysfs або безпосередньо з пристрою. Тож жодна хитрість удеву не допоможе, на жаль.

Здавалося б, ваш вибір:

  • з’ясуйте, як змусити adb працювати без серійного номера. Можливо, патч adb(це відкритий код). Думаю, це питання більше для Stack Overflow.
  • патч на драйвер usbfs для ядра, щоб підробити відповідь на запит adb. Це звучить набагато важче, ніж виправлення adb для мене.
  • виправити ядро, щоб дозволити підробляти серійний номер # у syfs, припускаючи, що adb використовує libusb.
  • виправити зламане обладнання.

Спасибі - це пояснює це. У моєму випадку виправлення зламаного обладнання було простіше (придбання кращого обладнання).
Ральф

1

Якщо ви знаєте вузол пристрою конкретного пристрою (наприклад, / dev / sdb), ви можете знайти його за допомогою наступної команди: udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Зазвичай, якщо ви намагаєтесь створити спеціальне правило в /etc/udev/rules.d/51-android.rules для пристроїв Android, запис lsusbу вашому терміналі відобразить щось подібне Bus 002 Device 004: ID 062a:3270 Creative Labs . Чотири символи після "ID" - у цьому випадку це було б - 062aвикористовуються для вказівки конкретних даних idVendorу цьому файлі.


Це допомагає писати правила udev, але чи є спосіб написати правило, яке змінює серійний номер?
Ральф

Не знаю для вашого конкретного телефону, але, на мій досвід, коли встановлені правила udev (і ви запустите adb start-serverяк root або використовуєте sudo), adb зможе прочитати серійний номер самостійно.
Дрейк Кларріс

0

Можливо, це не серійний, а FTDI, тож ви можете спробувати так:

1) Отримайте серійний

sudo udevadm info --attribute-walk -n /dev/ttyUSB0  | sed -n '/FTDI/,/serial/p'

2) Створіть правило і замініть XXXXXXXX на знайдений вами серійний або FAKE-серійний

sudo echo 'SUBSYSTEM=="tty", ATTRS{serial}=="XXXXXXXX", GROUP="users", MODE="0660", SYMLINK+="myusbphone"' | sudo tee /etc/udev/rules.d/99-myusbphone.rules

3) Перезавантажте правила

sudo udevadm control --reload-rules

.

У випадку спробуйте зв’язатися з автором цієї статті .


Я не думаю, що ОП говорить про серійний протокол, але про серійний номер USB-пристрою. Це мало використовуване поле в дескрипторі пристрою, а також ідентифікатори постачальника та продукту. Він повинен бути унікальним для кожного пристрою, але не є обов'язковим для специфікації USB. Немає відповіді, як підробити це, вибачте. Я б, мабуть, виправити ядро ​​...
ali1234,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.