USB 장치의 가짜 일련번호

USB 장치의 가짜 일련번호

내 휴대폰이 USB를 통해 컴퓨터에 연결되어 있습니다.

장치 정보를 보기 위해 사용하는 경우

sudo udevadm info --attribute-walk

제품 및 공급업체 ID가 제대로 표시되지만 그렇지 않음ATTR{일련번호}. 제가 사용하고 있는 앱(Android adb)이 제대로 작동하려면 기기에서 일련번호를 보고해야 합니다.

예를 들어 udev 규칙을 사용하여 장치의 일련 번호를 위조할 수 있는 방법이 있습니까?

밝히다:문제는 어떻게 하느냐가 아니다얻다USB 장치의 일련 번호이지만 어떻게놓다일련 번호.

USB를 통해 일련번호를 보고하지 않는 Android 휴대폰이 있는데 adb 도구는 이를 별로 좋아하지 않습니다. 아직까지 쉬운 해결책은 없는 것 같습니다. 그러나 이제는 개발에 적합한 Android 휴대폰을 구입하는 것이 쉽습니다.

답변1

먼저 일련번호를 보고하지 않는 장치가 실제로 문제인지 확인하십시오. adb devices해당 기기에 접근할 수 있는 권한이 없는 경우 일련번호는 전체 물음표로 표시됩니다 /dev/bus/usb/. 또한 adb가 서버를 시작하므로 다시 조사하려면 서버를 종료해야 할 수도 있습니다.

과연 기기의 문제라고 가정하고 빠르게 adb 소스코드를 확인해보았습니다. 장치에서 일련번호를 직접 읽을 register_device때 발생합니다 . 이를 수행하기 위한 호출 (libusb 소스 코드 확인)은 sysfs에서 또는 장치에서 직접 가져옵니다. 따라서 불행하게도 어떤 udev 트릭도 도움이 되지 않습니다.core/adb/usb_linux.ccore/adb/usb_libusb.clibusb_get_device_descriptor

귀하의 옵션은 다음과 같습니다.

  • 일련번호 없이 adb를 작동시키는 방법을 알아보세요. 패치되었을 수도 있습니다 adb(오픈 소스임). 나는 이것이 Stack Overflow에 대한 질문에 더 가깝다고 생각합니다.
  • adb 요청에 대한 응답을 가짜로 만들기 위해 커널 usbfs 드라이버를 패치했습니다. 이것은 나에게 패치하는 것보다 훨씬 더 어려운 것 같습니다.
  • adb가 libusb를 사용한다고 가정하고 syfs에서 일련 번호 위조를 허용하도록 커널을 패치했습니다.
  • 손상된 하드웨어를 수리하십시오.

답변2

특정 장치(예: /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"(이 경우) 뒤의 4개 문자는 062a해당 파일의 특정 문자를 나타내는 데 사용됩니다.idVendor

답변3

아마도 직렬이 아니라 FTDI이므로 다음을 시도해 볼 수 있습니다.

1) 일련번호 받기

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

2) 규칙을 만들고 XXXXXXXX를 찾은 일련번호 또는 가짜 일련번호로 바꿉니다.

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

.

이런 경우에는 이 글의 작성자에게 연락해 보시기 바랍니다.기사.

관련 정보