Usb

USB設備的假序列號

  • April 16, 2019

我有一部手機通過 USB 連接到我的 PC。

使用查看設備資訊時

sudo udevadm info --attribute-walk

產品和供應商 ID 顯示良好,但沒有ATTR{serial}。我正在使用的應用程序(Android adb)需要設備報告序列號才能正常工作。

有什麼方法可以偽造設備的序列號,例如使用 udev 規則?

**澄清:**問題不是如何獲取USB設備的序列號,而是如何設置序列號。

我有一部 Android 手機不通過 USB 報告序列號,而 adb 工具不太喜歡這個。到目前為止,似乎沒有任何簡單的解決方案。但是,有時很容易購買合適的 Android 手機進行開發。

首先,確保沒有報告序列號的設備確實是問題所在。adb devices如果沒有權限訪問/dev/bus/usb/. 還要記住 adb 啟動了一個伺服器,你可能需要殺死它才能讓它重新探測。

假設這確實是設備的問題,我迅速檢查了 adb 原始碼。它出現register_devicecore/adb/usb_linux.c直接從設備讀取序列號中。core/adb/usb_libusb.c呼叫libusb_get_device_descriptor它,它(檢查 libusb 原始碼)從 sysfs 或直接從設備中獲取它。因此,不幸的是,沒有任何 udev 詭計會有所幫助。

您的選擇似乎是:

  • 弄清楚如何在沒有序列號的情況下使 adb 工作。可能是更新檔adb(它是開源的)。我認為這是 Stack Overflow 的更多問題。
  • 修補核心 usbfs 驅動程序以偽造對 adb 請求的響應。這聽起來比給我打更新檔要困難得多。
  • 修補核心以允許偽造 syfs 中的序列號,假設 adb 正在使用 libusb。
  • 修復損壞的硬體。

引用自:https://unix.stackexchange.com/questions/4516