Nomor seri palsu perangkat USB

9

Saya memiliki ponsel yang terhubung ke PC saya melalui USB.

Saat melihat info perangkat menggunakan

sudo udevadm info --attribute-walk

id produk dan vendor muncul dengan baik, tetapi tidak ada ATTR {serial} . Aplikasi yang saya gunakan (Android adb) membutuhkan perangkat untuk melaporkan nomor seri agar berfungsi dengan benar.

Apakah ada cara saya bisa memalsukan nomor seri perangkat, misalnya dengan menggunakan aturan udev?

Klarifikasi: Pertanyaannya bukan pada bagaimana mendapatkan nomor seri perangkat USB, tetapi tentang bagaimana mengatur nomor seri.

Saya memiliki ponsel Android yang tidak melaporkan nomor seri melalui USB, dan alat adb tidak terlalu menyukai ini. Sejauh ini sepertinya tidak ada solusi sederhana untuk ini. Namun, ada hari-hari sangat mudah untuk hanya membeli ponsel Android yang tepat untuk pengembangan.

Ralf
sumber
Apakah ini ponsel Android? Jika tidak, adb tidak akan berfungsi.
Keith
Saya menduga bahwa adb tidak benar-benar mendapatkan info ini dari udev. Mungkin dari sysfs sebagai gantinya, atau langsung dari perangkat. Pertimbangkan menambal adb, mungkin pendekatan yang paling mudah.
derobert

Jawaban:

1

Pertama, pastikan bahwa perangkat tidak melaporkan nomor seri benar-benar masalah. adb devicesakan mencantumkan nomor seri sebagai semua tanda tanya jika tidak memiliki izin untuk mengakses perangkat yang sesuai /dev/bus/usb/. Ingat juga adb memulai server, Anda mungkin perlu mematikannya untuk memeriksanya kembali.

Dengan asumsi itu benar-benar masalah dengan perangkat, saya dengan cepat memeriksa kode sumber adb. Muncul register_devicedalam core/adb/usb_linux.cmembaca nomor seri langsung dari perangkat. core/adb/usb_libusb.cpanggilan libusb_get_device_descriptoruntuk melakukannya, yang (memeriksa kode sumber libusb) mengambilnya dari sysfs atau langsung dari perangkat. Jadi tidak ada tipuan udev yang akan membantu, sayangnya.

Pilihan Anda tampaknya:

  • mencari tahu bagaimana membuat adb berfungsi tanpa nomor seri. Mungkin, menambal adb(ini adalah open source). Ini adalah pertanyaan yang lebih banyak untuk Stack Overflow, saya pikir.
  • tambal ke driver usbfs kernel untuk memalsukan respons terhadap permintaan adb. Ini terdengar jauh lebih sulit daripada menambal adb untuk saya.
  • tambal kernel untuk memungkinkan memalsukan serial # di syfs, dengan anggapan adb menggunakan libusb.
  • memperbaiki perangkat keras yang rusak.
derobert
sumber
Terima kasih - ini menjelaskannya. Dalam kasus saya, memperbaiki perangkat keras yang rusak lebih mudah (membeli perangkat keras yang lebih baik).
Ralf
1

Jika Anda tahu simpul perangkat dari perangkat tertentu (mis. / Dev / sdb), Anda dapat mencarinya dengan perintah berikut: udevadm info -a -p $(udevadm info -q path -n /dev/sdb)

Biasanya, jika Anda mencoba membuat aturan khusus di /etc/udev/rules.d/51-android.rules untuk perangkat android, penulisan lsusbdi terminal Anda akan menampilkan sesuatu seperti Bus 002 Device 004: ID 062a:3270 Creative Labs . Keempat karakter setelah "ID" - dalam hal ini akan - 062adigunakan untuk menunjukkan spesifik idVendordalam file itu.

ILMostro_7
sumber
Itu membantu dengan menulis aturan udev, tetapi apakah ada cara untuk menulis aturan yang mengubah nomor seri?
Ralf
Tidak tahu untuk ponsel khusus Anda, tetapi menurut pengalaman saya setelah aturan udev ditetapkan (dan Anda menjalankan adb start-serversebagai root atau menggunakan sudo), adb akan dapat membaca nomor seri sendiri.
Drake Clarris
0

Mungkin ini bukan serial tetapi FTDI, jadi Anda dapat mencoba cara ini:

1) Dapatkan serial

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

2) Buat aturan dan gantikan XXXXXXXX dengan serial yang Anda temukan atau serial FAKE

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

3) Muat ulang aturan

sudo udevadm control --reload-rules

.

Dalam hal ini cobalah untuk menghubungi penulis artikel ini .

tmow
sumber
Saya tidak berpikir OP berbicara tentang protokol serial tetapi nomor seri perangkat USB. Itu sedikit bidang yang digunakan di deskriptor perangkat bersama dengan vendor dan ID produk. Ini seharusnya unik untuk setiap perangkat tetapi tidak wajib dalam spesifikasi USB. Tidak ada jawaban untuk cara memalsukannya, maaf. Saya mungkin akan menambal kernel ...
ali1234