Bisakah perangkat berpura-pura menjadi keyboard USB?

16

Apa yang saya cari:

Apakah ada cara untuk membuat perangkat mengklaim sebagai keyboard / HID ketika dicolokkan ke port USB dan "ketik" isi clipboard? Lebih akurat; Apa yang diperlukan untuk mewujudkannya?

Memotivasi use case:

Saya memiliki program penyimpan kata sandi di ponsel saya, tetapi menjengkelkan harus membaca kata sandi dari perangkat dan mencoba mengetiknya di komputer lain.

Latar Belakang:

Saya memiliki perangkat Android yang dibangun sebelum MTP didukung untuk mentransfer file tetapi, dengan peningkatan terbaru, sekarang mendukungnya. Berdasarkan ini, kelas USB yang diklaimnya tidak dapat didefinisikan perangkat keras dan harus ditentukan dalam perangkat lunak.

IIRC, proyek ini memiliki perangkat Android (dengan apa yang saya pikir adalah kernel saham) berbicara sebagai beberapa kelas USB yang pasti tidak built-in. Ini menunjukkan kepada saya bahwa Anda mungkin dapat mengontrol kelas USB apa yang didukung tanpa kerja kernel tapi saya tidak tahu pasti.

Sedangkan untuk sisi Host (yaitu PC), saya belum pernah melihat PC, Mac atau Linux membutuhkan drive khusus untuk keyboard, bahkan untuk beberapa perangkat yang agak esoteris yang mengklaim sebagai keyboard (pemindai kode batang, kartu kredit, dan smart pembaca kartu, dll.) sehingga driver generik harus cukup baik untuk apa yang saya inginkan.

Semua yang berpendapat bahwa apa yang saya cari dapat dilakukan dari sudut pandang perangkat keras , tetapi mengatakan sangat sedikit tentang apa yang ada dukungan perangkat lunak dan apa-apa tentang jika ada aplikasi untuk itu.

BCS
sumber
2
Anda dapat mencoba menggunakan KeePass (KeePassDroid di android, keepassx di linux, dll.) Di ponsel dan komputer Anda, dan hanya menyinkronkan file database di antara mereka, atau mengakses file database di ponsel melalui USB dari komputer. Pengelola kata sandi lain mungkin juga memiliki rekanan "komputer nyata".
POHON
@ TREE: Itu mungkin bekerja untuk beberapa kasus, tetapi salah satu dari penggunaan target spesifik adalah di mana saya tidak memiliki kemampuan untuk menginstal sesuatu pada PC (baik tidak ada akses atau masalah ayam / telur seperti password sistem login) .
BCS
ada juga versi portabel KeePass yang dapat dijalankan dari stik USB. Ini mungkin bekerja dari perangkat Penyimpanan USB Android yang terpasang, tetapi tentu saja tidak mengatasi semua kemungkinan penggunaan.
POHON

Jawaban:

15

Iya. Ini sangat mungkin, tidak memerlukan modifikasi atau driver pada PC. Seperti yang disebutkan OP, identifikasi USB pada ujung telepon pada akhirnya dilakukan dalam perangkat lunak (dalam file ini https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ), dan dapat dimodifikasi untuk mengidentifikasi dirinya sebagai keyboard USB standar.

Perubahan ini akan membutuhkan beberapa hal.

  1. Kernel yang dimodifikasi dengan driver USB yang ditambal
  2. Aplikasi Android yang dapat berbicara dengan beberapa antarmuka yang dibuka oleh driver USB yang dimodifikasi.

Ada sebuah makalah yang diterbitkan beberapa tahun yang lalu (berjudul Mengeksploitasi konektivitas USB ponsel pintar untuk kesenangan dan keuntungan ) yang menggambarkan penggunaan ponsel untuk memaksa layar masuk desktop. Metode yang mereka gunakan melibatkan membuat ponsel tampil sebagai keyboard USB.

davidbb
sumber
Info lebih lanjut dapat ditemukan di sini .
sampablokuper
github.com/pelya/android-keyboard-gadget Ini telah diterapkan di sini .. dan aplikasi android yang diperlukan juga tersedia
Abhigyan
2

Ini tidak persis menjawab pertanyaan Anda, tetapi mungkin membantu dalam kasus penggunaan Anda.

Mungkin Anda ingin melihat InputStick . Ini akan menjadi USB thumb drive yang Anda pasangkan ke Android melalui Bluetooth. Dicolokkan ke komputer, ia mengemulasi HID USB generik untuk mengirim coretan keyboard. API Java tingkat lanjut juga akan memungkinkan untuk menentukan mis deskriptor perangkat untuk meniru fungsi-fungsi non-standar. Itu bisa memberikan contoh yang bagus bahwa itu didefinisikan dalam perangkat lunak daripada perangkat keras.

Sebagai referensi, pengembang juga sedang mengerjakan contoh program, seperti Demo Password Manager.

Mini-Me
sumber
0

Paling tidak, ini akan membutuhkan perangkat lunak pada ponsel dan PC. 2 buah perangkat lunak harus berkomunikasi satu sama lain. Tidak ada yang seperti ini, yang saya tahu saat ini, ada.

Dan bagi PC untuk berpikir bahwa perangkat itu benar-benar keyboard, itu akan memerlukan driver baru yang akan memberi tahu PC bahwa perangkat itu adalah keyboard, dan bagaimana "menggunakannya sebagai keyboard".

Saya tidak mengatakan bahwa itu tidak mungkin, karena hampir semua hal mungkin terjadi dalam hal-hal seperti ini. Apa yang saya katakan adalah tidak ada yang seperti ini yang ada saat ini.

USB adalah perangkat keras dan perangkat lunak, jika perangkat lunak itu sendiri, maka driver USB yang sama akan bekerja untuk semua perangkat Android di Windows, dan ini bukan masalahnya. Penyimpanan massal USB dan MTP ditangani oleh driver pada PC, bukan perangkat. Perangkat apa yang mendukung MTP dan penyimpanan massal USB dan pada saat yang sama? Saya telah menemukan artikel yang menyatakan bahwa perangkat dapat mendukung UMS dan MTP, tetapi hanya mendukung UMS jika ada sdcard eksternal. Anda tidak dapat memasang sdcard eksternal dengan MTP dan dengan UMS. MTP adalah untuk penyimpanan internal. Dan saya belum membaca apa pun yang dapat mengkonfirmasi atau menyangkal bahwa Anda dapat menggunakan keduanya sekaligus.

Anda tidak harus menginstal driver untuk keyboard, jika mereka mengikuti spesifikasi "default" karena windows sudah memiliki driver untuk itu. Ada keyboard yang datang dengan driver mereka sendiri. Seperti yang saya katakan, itu mungkin. Saya tidak yakin bagaimana itu akan dilakukan. Hampir pasti membutuhkan kernel khusus setidaknya untuk bertindak seperti keyboard dan tidak ada driver tambahan yang diperlukan di sisi PC.

Selain itu, saya setuju dengan @davidbb bahwa itu mungkin dan saya sudah mengatakan itu. Masalah dengan pertanyaan yang menanyakan apakah sesuatu mungkin terjadi, tidak pernah menyelesaikan masalah. Ini akan seperti saya mengatakan "apakah mungkin bagi saya untuk menjalankan aplikasi ios secara native di windows?". Ini secara teori mungkin, tetapi tidak ada yang melakukan ini sekarang dan tidak ada sesuatu yang dapat dilakukan oleh "pengguna normal" (atau bahkan pengguna tingkat lanjut) untuk mewujudkannya. Situs ini ditujukan untuk pengguna, jadi dengan mengatakan Anda hanya perlu menulis kernel yang dimodifikasi bukanlah jawaban yang akan menguntungkan siapa pun. Jadi jawaban sebenarnya untuk pertanyaannya adalah tidak, karena tidak ada kernel yang dimodifikasi di luar sana.

Ryan Conrad
sumber
IIRC, ujung android dari koneksi USB dilakukan dalam perangkat lunak (harus sampai batas tertentu untuk perangkat keras yang sama untuk bertindak baik sebagai perangkat penyimpanan massal USB maupun MTP). Berdasarkan hal itu, apa yang mencegah hanya driver sisi perangkat agar perangkat mengumumkan diri sebagai HID generik? Jika itu bisa dilakukan, maka driver sisi PC yang sama yang menangani keyboard lain akan menanganinya (seperti yang dilakukan untuk hal-hal seperti pemindai kode batang dan pembaca kartu kredit).
BCS
Saya telah menambahkan jawaban saya untuk menanggapi komentar Anda.
Ryan Conrad
Perangkat Android (perangkat keras) yang dibangun sebelum MTP digunakan sekarang beroperasi sebagai kelas USB MTP, sehingga kelas yang diklaim dapat dioperasikan oleh perangkat harus ditentukan dalam perangkat lunak. Saya tidak ingat apakah saya pernah menginstal driver untuk keyboard (atau dalam hal ini driver non-generik untuk menghubungkan perangkat Android) sehingga tidak perlu menginstal sisi PC. Kombinasikan itu dan saya hampir yakin bahwa perangkat keras dapat melakukannya. Satu-satunya pertanyaan yang tersisa adalah: apakah stok Android menyediakan akses ke tombol-tombol yang diperlukan, atau akankah ini membangun kernel khusus?
BCS
Re: 2nd edit. Saya kira saya sedang mencari seseorang yang tahu pasti apa yang diperlukan. (Bisakah Anda memindahkan paragraf terakhir ke atas?)
BCS
Jawaban ini salah, tidak ada perangkat lunak yang diperlukan di sisi PC. Ponsel yang berbeda memerlukan driver yang berbeda karena pabrikan tidak semuanya menggunakan nomor ID vendor yang sama. Namun keyboard termasuk dalam kategori perangkat yang berbeda di mana mereka dikenali oleh host berdasarkan tipe, sehingga ID vendor tidak terlalu penting. VID / PID, tipe perangkat, protokol, dll semuanya diimplementasikan dalam perangkat lunak di sisi android, dan dapat diubah oleh siapa saja dengan sumber kernel dan cara untuk menginstal hasil yang dikompilasi.
Chris Stratton
0

Sudahkah Anda mencoba Remote Terpadu . Ini adalah alat yang hebat untuk menggunakan ponsel sebagai keyboard dan mouse. Itu tidak menggunakan USB tetapi wifi sebagai gantinya. Ada aplikasi di ponsel dan komputer yang bekerja bersama. Bekerja bagus untukku. Juga jika Anda mendapatkan versi lengkap, Anda mendapatkan integrasi dengan banyak aplikasi umum.

pengguna207748
sumber
Saya mencari solusi untuk kasus-kasus yang memasukkan hal-hal seperti mengetikkan kata sandi ke dalam prompt boot BIOS jadi saya tidak bisa menginstal klien jenis apa pun.
BCS
0

Saya sedang mencari sesuatu yang serupa dan ditemukan

https://github.com/pelya/android-keyboard-gadget

Tampaknya hal yang sama dapat digunakan dalam kasus Anda. Secara singkat apa yang saya dapatkan adalah Anda harus menulis driver usb di kernel android untuk mendeteksi deivce sebagai HID.

Abhigyan
sumber
0

Sekarang> enam tahun kemudian dan di suatu tempat di antara seseorang menciptakan Keepass2 USB Keyboard Plugin untuk Keepass2Android .

Ingin menambahkan informasi ini di sini demi kelengkapan dan karena saya menemukan pertanyaan ini belum terjawab dan plugin yang disebutkan di atas ketika mencari sesuatu seperti itu.

Saya belum mengujinya sendiri ...

Limer
sumber
-1

InputStick adalah penerima USB nirkabel, yang dirancang untuk perangkat Android. Ini memungkinkan aplikasi Android untuk meniru berbagai jenis perangkat, misalnya: Keyboard USB, Mouse USB, Gamepad USB, dan banyak lagi. Dengan InputStick, aplikasi Android dapat melakukan apa saja yang dapat dilakukan perangkat fisik: ketik, pindahkan pointer mouse, kontrol multimedia dan game.

Informasi dapat ditemukan di http://inputstick.com/

pengguna3776541
sumber
1
Ini berbunyi seperti iklan. Apa hubungan Anda dengan produk ini?
Dan Hulme