Bir cihaz bir USB klavye gibi davranabilir mi?


16

Ne için bakıyorum:

Bir USB bağlantı noktasına takıldığında ve pano içeriğini "yazdığında" cihazın bir klavye / HID olduğunu iddia etmenin bir yolu var mı? Daha doğrusu; Bunun gerçekleşmesi için ne gerekir?

Motive edici kullanım durumu:

Telefonumda bir şifre koruma programı var ama şifreyi cihazdan okumak ve başka bir bilgisayara yazmaya çalışmak sinir bozucu.

Arka fon:

MTP'nin dosya aktarımı için desteklenmesinden önce oluşturulmuş bir Android cihazım var, ancak son yükseltmelerle birlikte şimdi destekliyor. Buna dayanarak, iddia ettiği USB sınıfı donanım tanımlı olamaz ve yazılımda tanımlanmalıdır.

IIRC, bu projenin kesin inşa edilmedi bazı USB sınıf olarak konuşurken (ne düşünmek bir stok çekirdeği olduğu ile) Android cihazlara sahip. Bu benim için işaret olabilir o çekirdek çalışması ama ben olmadan destekleyen neyi USB sınıfları kontrol edebilmek emin bilmiyorum.

Host tarafına (yani PC) gelince, PC, Mac veya Linux kutusunun klavyeler için özel sürücülere ihtiyaç duymadığını, hatta klavye (bar kod tarayıcılar, kredi kartı ve akıllı) olduğunu iddia eden bazı ezoterik cihazlar için bile görmedim kart okuyucuları vb.)

Tüm bunlar, aradığım şeyin donanım açısından yapılabileceğini savunuyor , ancak hangi yazılım desteğinin var olduğu ve bunun için bir uygulama olup olmadığı hakkında çok az şey söylüyor.


2
Hem telefonunuzda hem de bilgisayarınızda KeePass (android'de KeePassDroid, linux üzerinde keepassx vb.) Kullanmayı deneyebilir ve aralarındaki veritabanı dosyasını senkronize edebilir veya bilgisayardaki USB aracılığıyla veritabanı dosyasına erişebilirsiniz. Diğer şifre yöneticilerinin "gerçek bilgisayar" muadilleri de olabilir.
AĞAÇ

@TREE: Bu bazı durumlarda işe yarayabilir, ancak belirli hedef kullanımlarından biri, PC'ye bir şey yükleyemediğim yer (erişim yok veya sistem giriş şifreleri gibi bir tavuk / yumurta sorunu) .
BCS

USB belleğinden çalışabilen taşınabilir bir KeePass sürümü de var. Bu , bağlı bir android USB Depolama cihazından işe yarayabilir, ancak kesinlikle tüm olası kullanım durumlarını ele almaz.
AĞAÇ

Yanıtlar:


15

Evet. Bu kesinlikle mümkündür, bilgisayarda herhangi bir değişiklik veya sürücü gerektirmez. OP'den bahsedildiği gibi, telefonun ucundaki USB kimliği sonuçta yazılımda yapılır (bu dosyada https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/composite .c ) ve kendisini standart bir USB klavye olarak tanımlayacak şekilde değiştirilebilir.

Bu değişiklik birkaç şey gerektirecektir.

  1. Yamalı bir USB sürücüsüne sahip değiştirilmiş bir çekirdek
  2. Değiştirilmiş USB sürücüsünün maruz kaldığı bazı arayüzlerle konuşabilen bir Android uygulaması.

Orada birkaç yıl önce yayınlanan bir kağıt (başlıklı eğlence ve kazanç için akıllı telefon, USB bağlantısı Kötüye kaba kuvvet masaüstü giriş ekranlarına bir telefon kullanarak açıklanmıştır). Telefonun USB klavye olarak görünmesini sağlamak için kullandıkları yöntem.


Daha fazla bilgi burada bulunabilir .
sampablokuper

github.com/pelya/android-keyboard-gadget Burada uygulanmıştır .. ve gerekli android uygulaması da mevcuttur
Abhigyan 17:17

2

Bu, sorunuza tam olarak cevap vermez, ancak kullanım durumunuzda yardımcı olabilir.

Belki de InputStick'e bakmak istersiniz . Bluetooth ile Android ile eşleştirdiğiniz bir USB parmak sürücü olacaktır. Bir bilgisayara takıldığında, klavye darbeleri göndermek için genel bir USB HID'ye öykünür. Gelişmiş bir Java API, standart olmayan işlevleri taklit etmek için aygıt tanımlayıcıları belirtmeye de izin verir. Donanımdan ziyade yazılımda tanımlanmış olmasına güzel bir örnek verebilir.

Başvuru için, geliştirici ayrıca Demo Parola Yöneticisi gibi örnek programlar üzerinde de çalışmaktadır.


0

En azından bunun için hem telefonda hem de bilgisayarda yazılım gerekir. İki yazılım parçası birbiriyle iletişim kurmak zorunda kalacaktı. Şu anda bildiğim böyle bir şey yok.

Ve PC'nin cihazın gerçekten bir klavye olduğunu düşünmesi için, PC'ye cihazın bir klavye olduğunu ve "klavye olarak nasıl kullanılacağını" söyleyen yeni bir sürücü gerekir.

Bunun mümkün olmadığını söylemiyorum, çünkü böyle şeyler söz konusu olduğunda neredeyse her şey mümkün. Yine de söylüyorum şu anda böyle bir şey yok.

USB hem donanım hem de yazılımdır, yalnızca yazılım olsaydı, aynı USB sürücüsü Windows'daki tüm android cihazlar için çalışırdı ve durum böyle değil. USB yığın depolama ve MTP, aygıt değil, bilgisayardaki sürücüler tarafından işlenir. Hangi cihazlar hem MTP hem de USB yığın depolamayı destekler ve aynı zamanda? Cihazların UMS ve MTP'yi destekleyebileceğini, ancak yalnızca harici bir sdcard varsa UMS'yi desteklediğini belirten makaleler buldum. Harici sdcard'ı MTP ve UMS ile bağlayamazsınız. MTP dahili depolama alanı içindir. Ve ikisini aynı anda kullanabileceğinizi onaylayabilecek veya reddedebilecek hiçbir şey okumadım.

"Varsayılan" spesifikasyonlarına uyuyorlarsa, klavyeler için sürücüler yüklemenize gerek yoktur çünkü Windows zaten bu sürücülere sahiptir. Kendi sürücüleri ile birlikte gelen klavyeler var. Dediğim gibi, bu mümkün olurdu. Nasıl yapılacağından emin değilim. Neredeyse kesinlikle, en azından bir klavye gibi davranması ve PC tarafında ek sürücülere ihtiyaç duymaması için özel bir çekirdek gerektirecektir.

Ayrıca, @davidbb ile bunun mümkün olduğunu kabul ediyorum ve bunun zaten olduğunu söyledim. Bir şeyin mümkün olup olmadığını soran bir soruyla ilgili sorun, sorunu asla çözmez. "Pencerelerde ios uygulamaları doğal olarak çalıştırmam mümkün mü?" Bu teorik olarak mümkündür, ancak bunu şimdi yapan bir şey yoktur ve "normal bir kullanıcının" (hatta ileri düzey bir kullanıcının) bunu gerçekleştirmek için yapabileceği bir şey yoktur. Bu site kullanıcılar için hazırlanmıştır, bu yüzden sadece değiştirilmiş bir çekirdek yazmanız gerektiğini söylemek, herkesin yararına olacak bir cevap değildir. Dolayısıyla sorunun gerçek cevabı hayırdır, çünkü orada değiştirilmiş bir çekirdek yoktur.


IIRC, USB bağlantısının android ucu yazılımda yapılır (aynı donanımın hem bir USB yığın depolama cihazı hem de MTP gibi davranması gerekir). Buna dayanarak, yalnızca aygıt tarafı sürücüsünün aygıtın kendisini genel bir HID olarak duyurmasını sağlamasına ne engel olur? Bu yapılabilirse, diğer herhangi bir klavyeyi işleyen aynı PC tarafı sürücüleri, onu işleyecektir (tıpkı barkod tarayıcılar ve kredi kartı okuyucuları için olduğu gibi).
BCS

Yorumunuza hitap etmek için cevabımı ekledim.
Ryan Conrad

MTP kullanılmadan önce oluşturulan Android cihazlar (donanım) artık MTP USB sınıfı olarak çalışmaktadır, bu nedenle cihazın çalıştığını iddia ettiği sınıflar yazılımda tanımlanmalıdır. Hiç klavye için bir sürücü (veya bu nedenle bir Android cihaz bağlamak için genel olmayan bir sürücü) kurduğumu hatırlayamıyorum , bu yüzden hiçbir şey PC tarafında kurulmamalıdır. Bunları birleştirin ve donanımın bunu yapabileceğinden neredeyse eminim. Geriye kalan tek soru şu: stok Android gerekli düğmelere erişim sağlıyor mu, yoksa bu özel bir çekirdek oluşturmak mı gerekir?
BCS

Re: 2nci düzenleme. Sanırım ne alacağını kesin olarak bilen birini arıyorum. (Son paragrafı en üste taşıyabilir misiniz?)
BCS

Bu cevap yanlış, PC tarafında yazılım gerekmez. Farklı telefonlar farklı sürücüler gerektirir, çünkü üreticilerin hepsi aynı satıcı kimlik numarasını kullanmaz. Ancak klavyeler, ana bilgisayar tarafından türe göre tanındığı farklı bir cihaz kategorisine girer, bu nedenle satıcı kimliği gerçekten önemli değildir. VID / PID, cihaz tipi, protokoller, vb. Tüm android tarafında yazılım uygulanır ve çekirdek kaynağı ve derlenmiş sonucu yüklemek için bir yol olan herkes tarafından değiştirilebilir.
Chris Stratton

0

Eğer denediniz Uzaktan Unified . Bu, telefonu klavye ve fare olarak kullanmak için harika bir araçtır. Bunun yerine USB değil wifi kullanıyor. Telefonda ve bilgisayarda birlikte çalışan bir uygulama var. Benim için harika çalışıyor. Ayrıca tam sürüm alırsanız, birçok yaygın uygulama ile entegrasyon elde edersiniz.


Gerçekten herhangi bir istemci yükleyemiyorum, böylece BIOS önyükleme istemlerine parola yazmak gibi şeyler içeren durumlar için bir çözüm arıyorum.
BCS


0

Artık> altı yıl sonra ve bir yere birinin oluşturduğu arasında öyle Keepass2 USB Klavye Eklentisi için Keepass2Android .

Bu bilgiyi tamlık uğruna buraya eklemek istedim ve tam olarak böyle bir şey ararken bu soruyu cevapsız ve yukarıda belirtilen eklentiyi bulduğum için.

Henüz kendim test etmedim ...


-1

InputStick, Android cihazlar için tasarlanmış kablosuz bir USB alıcısıdır. Android uygulamalarının birçok farklı cihazı taklit etmesine izin verir, örneğin: USB Klavye, USB Fare, USB Gamepad ve daha fazlası. InputStick ile Android uygulamaları fiziksel bir cihazın yapabileceği her şeyi yapabilir: yazın, fare işaretçisini hareket ettirin, multimedya ve oyunları kontrol edin.

Bilgi http://inputstick.com/ adresinde bulunabilir.


1
Bu bir reklam gibi okunur. Bu ürünle ilişkiniz nedir?
Dan Hulme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.