Một thiết bị có thể giả vờ là một bàn phím USB?


16

Thứ tôi đang tìm kiếm:

Có cách nào để làm cho thiết bị tự nhận là bàn phím / HID khi cắm vào cổng USB và "nhập" nội dung của bảng tạm không? Chính xác hơn; Điều gì sẽ làm cho nó xảy ra?

Trường hợp sử dụng tạo động lực:

Tôi có một chương trình giữ mật khẩu trên điện thoại của mình nhưng thật khó chịu khi phải đọc mật khẩu khỏi thiết bị và thử gõ nó vào một máy tính khác.

Lý lịch:

Tôi có một thiết bị Android được xây dựng trước khi MTP được hỗ trợ để chuyển tệp nhưng, với các nâng cấp gần đây, hiện hỗ trợ nó. Dựa trên điều này, lớp USB mà nó tuyên bố không thể được xác định bằng phần cứng và phải được xác định trong phần mềm.

IIRC, dự án này có các thiết bị Android (với những gì tôi nghĩ là hạt nhân chứng khoán) nói về một số lớp USB chắc chắn không được tích hợp. Điều này cho tôi thấy rằng bạn thể kiểm soát các lớp USB mà nó hỗ trợ mà không có nhân hoạt động nhưng tôi không biết chắc chắn

Đối với phía Máy chủ (ví dụ: PC), tôi chưa bao giờ thấy hộp PC, Mac hoặc Linux cần ổ đĩa đặc biệt cho bàn phím, ngay cả đối với một số thiết bị bí mật tự xưng là bàn phím (máy quét mã vạch, thẻ tín dụng và thông minh đầu đọc thẻ, v.v.) vì vậy các trình điều khiển chung phải đủ tốt cho những gì tôi muốn.

Tất cả những gì lập luận rằng những gì tôi đang tìm kiếm có thể được thực hiện từ quan điểm phần cứng , nhưng nói rất ít về những gì phần mềm hỗ trợ tồn tại và không có gì nếu có một ứng dụng cho nó.


2
Bạn có thể thử sử dụng KeePass (KeePassDroid trên Android, keepassx trên linux, v.v.) trên cả điện thoại và máy tính của bạn và chỉ cần đồng bộ hóa tệp cơ sở dữ liệu giữa chúng hoặc truy cập tệp cơ sở dữ liệu trên điện thoại qua USB từ máy tính. Các trình quản lý mật khẩu khác cũng có thể có các đối tác "máy tính thực".
TREE

@TREE: Điều đó có thể hoạt động trong một số trường hợp, nhưng một trong những cách sử dụng mục tiêu cụ thể là tôi không có khả năng cài đặt một cái gì đó trên PC (không có quyền truy cập hoặc vấn đề gà / trứng như mật khẩu đăng nhập hệ thống) .
BCS

cũng có một phiên bản di động của KeePass có thể chạy từ thẻ nhớ USB. Điều này có thể hoạt động từ một thiết bị lưu trữ USB được gắn trên Android, nhưng chắc chắn không giải quyết được tất cả các trường hợp sử dụng có thể.
TREE

Câu trả lời:


15

Đúng. Điều này là hoàn toàn có thể, không yêu cầu sửa đổi hoặc trình điều khiển trên PC. Như OP đề cập, việc nhận dạng USB ở đầu điện thoại cuối cùng được thực hiện bằng phần mềm (trong tệp này https://github.com/android/kernel_msm/blob/android-msm-2.6.35/drivers/usb/gadget/componymous .c ) và nó có thể được sửa đổi để tự nhận mình là bàn phím USB tiêu chuẩn.

Sự thay đổi này sẽ đòi hỏi một vài điều.

  1. Một hạt nhân được sửa đổi với trình điều khiển USB được vá
  2. Một ứng dụng Android có thể nói chuyện với một số giao diện được trình điều khiển USB sửa đổi.

một bài báo được xuất bản vài năm trước (có tiêu đề Khai thác kết nối USB điện thoại thông minh để giải trí và kiếm lợi nhuận ) mô tả bằng cách sử dụng điện thoại để màn hình đăng nhập máy tính để bàn. Phương pháp họ sử dụng liên quan đến việc làm cho điện thoại xuất hiện dưới dạng bàn phím USB.


Thêm thông tin để được tìm thấy ở đây .
sampablokuper

github.com/pelya/android-keyboard-gadget Nó đã được triển khai tại đây .. và ứng dụng Android bắt buộc cũng có sẵn
Abhigyan

2

Điều này không trả lời chính xác câu hỏi của bạn, nhưng nó có thể giúp ích trong trường hợp sử dụng của bạn.

Có lẽ bạn muốn có một cái nhìn tại InputStick . Đó sẽ là ổ USB mà bạn ghép nối với Android qua Bluetooth. Được cắm vào máy tính, nó mô phỏng USB HID chung để gửi các nét bàn phím. API Java nâng cao cũng sẽ cho phép chỉ định các bộ mô tả thiết bị để mô phỏng các chức năng không chuẩn. Nó có thể cung cấp một ví dụ hay rằng nó được định nghĩa trong phần mềm chứ không phải phần cứng.

Để tham khảo, nhà phát triển cũng đang làm việc trên các chương trình ví dụ, chẳng hạn như Trình quản lý mật khẩu Demo.


0

Tối thiểu, điều này sẽ yêu cầu cả phần mềm trên điện thoại và trên PC. Hai phần mềm sẽ phải giao tiếp với nhau. Không có gì như thế này, mà tôi biết hiện tại, tồn tại.

Và để PC nghĩ rằng thiết bị thực sự là một bàn phím, nó sẽ yêu cầu một trình điều khiển mới sẽ nói với PC rằng thiết bị đó là bàn phím và cách "sử dụng nó làm bàn phím".

Tôi không nói rằng điều đó là không thể, bởi vì bất cứ điều gì cũng có thể xảy ra khi nói đến những thứ như thế này. Mặc dù vậy, điều tôi đang nói là hiện tại không có gì như thế này tồn tại.

USB là cả phần cứng và phần mềm, nếu chỉ là phần mềm, thì trình điều khiển USB tương tự sẽ hoạt động cho tất cả các thiết bị Android trên Windows và đây không phải là trường hợp. Bộ lưu trữ lớn USB và MTP được xử lý bởi các trình điều khiển trên PC, không phải thiết bị. Những thiết bị nào hỗ trợ cả MTP và USB lưu trữ hàng loạt cùng một lúc? Tôi đã tìm thấy các bài viết nói rằng các thiết bị có thể hỗ trợ UMS và MTP, nhưng chỉ hỗ trợ UMS nếu có sdcard bên ngoài. Bạn không thể gắn sdcard bên ngoài bằng MTP và với UMS. MTP là dành cho lưu trữ nội bộ. Và tôi chưa đọc bất cứ điều gì có thể xác nhận hoặc từ chối rằng bạn có thể sử dụng cả hai cùng một lúc.

Bạn không phải cài đặt trình điều khiển cho bàn phím, nếu chúng tuân theo thông số "mặc định" vì các cửa sổ đã có trình điều khiển cho nó. Có bàn phím đi kèm với trình điều khiển riêng của họ. Như tôi đã nói, nó sẽ có thể. Tôi không chắc chắn về cách nó sẽ được thực hiện. Gần như chắc chắn, nó sẽ yêu cầu một hạt nhân tùy chỉnh ít nhất là để nó hoạt động giống như một bàn phím và không cần trình điều khiển bổ sung nào ở phía PC.

Ngoài ra, tôi đồng ý với @davidbb rằng điều đó là có thể và tôi đã nói rằng điều đó là có thể. Vấn đề với một câu hỏi hỏi nếu một cái gì đó là có thể, không bao giờ giải quyết vấn đề. Nó sẽ giống như tôi nói "tôi có thể chạy các ứng dụng ios tự nhiên trên windows không?". Về mặt lý thuyết là có thể, nhưng hiện tại không có gì làm được điều này và không có điều gì mà một "người dùng bình thường" (hoặc thậm chí là một người dùng nâng cao) có thể làm để thực hiện điều này. Trang web này hướng đến người dùng, vì vậy nói rằng bạn chỉ cần viết kernel đã sửa đổi không phải là câu trả lời sẽ có lợi cho bất kỳ ai. Vì vậy, câu trả lời thực sự cho câu hỏi là không, bởi vì không có hạt nhân sửa đổi ngoài kia.


IIRC, phần cuối của kết nối USB được thực hiện trong phần mềm (nó phải ở một mức độ nào đó để cùng một phần cứng hoạt động như một thiết bị lưu trữ dung lượng lớn USB cũng như MTP). Dựa vào đó, điều gì là ngăn người lái xe chỉ thiết bị làm cho thiết bị tự thông báo nó là một HID chung? Nếu điều đó có thể được thực hiện, thì các trình điều khiển phía PC tương tự xử lý bất kỳ bàn phím nào khác sẽ xử lý nó (giống như được thực hiện cho những việc như máy quét mã vạch và đầu đọc thẻ tín dụng).
BCS

Tôi đã thêm vào câu trả lời của tôi để giải quyết bình luận của bạn.
Ryan Conrad

Các thiết bị Android (phần cứng) được xây dựng trước khi MTP đang được sử dụng hiện hoạt động như lớp USB MTP, do đó các lớp mà thiết bị tuyên bố hoạt động như phải được xác định trong phần mềm. Tôi không thể nhớ nếu tôi đã từng cài đặt trình điều khiển cho bàn phím (hoặc đối với vấn đề đó là trình điều khiển không chung để kết nối thiết bị Android), do đó không cần phải cài đặt phía PC. Kết hợp những thứ đó và tôi gần như chắc chắn rằng phần cứng có thể làm được. Câu hỏi duy nhất còn lại là: liệu stock Android có cung cấp quyền truy cập vào các nút cần thiết hay điều này sẽ tạo ra một kernel tùy chỉnh?
BCS

Re: Chỉnh sửa lần 2. Tôi đoán tôi đang tìm kiếm một người biết chắc chắn những gì nó sẽ mất. (Bạn có thể di chuyển đoạn cuối đó lên đầu không?)
BCS

Câu trả lời này là sai, không có phần mềm được yêu cầu về phía PC. Các điện thoại khác nhau yêu cầu trình điều khiển khác nhau vì tất cả các nhà sản xuất không sử dụng cùng số ID nhà cung cấp. Tuy nhiên, bàn phím thuộc một loại thiết bị khác, nơi chúng được máy chủ nhận dạng theo loại, vì vậy ID nhà cung cấp không thực sự quan trọng. VID / PID, loại thiết bị, giao thức, v.v ... đều được triển khai trong phần mềm ở phía Android và có thể thay đổi bởi bất kỳ ai có nguồn kernel và cách cài đặt kết quả đã biên dịch.
Chris Stratton

0

Bạn đã thử từ xa hợp nhất . Đây là một công cụ tuyệt vời để sử dụng điện thoại làm bàn phím và chuột. Nó không sử dụng USB mà thay vào đó là wifi. Có một ứng dụng trên điện thoại và máy tính hoạt động cùng nhau. Làm việc tuyệt vời cho tôi. Ngoài ra nếu bạn có phiên bản đầy đủ, bạn sẽ tích hợp với nhiều ứng dụng phổ biến.


Tôi đang tìm giải pháp cho các trường hợp bao gồm những việc như nhập mật khẩu vào lời nhắc khởi động BIOS để tôi thực sự không thể cài đặt bất kỳ loại máy khách nào.
BCS

0

Tôi đã tìm kiếm một cái gì đó tương tự và tìm thấy

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

Có vẻ như điều tương tự có thể được sử dụng trong trường hợp của bạn. Tóm lại những gì tôi nhận được là bạn phải viết trình điều khiển usb trong kernel android để phát hiện ra deivce là HID.


0

Bây giờ> sáu năm sau và một nơi nào đó ở giữa ai đó đã tạo Plugin Bàn phím USB Keepass2 cho Keepass2Android .

Muốn thêm thông tin này vào đây để hoàn thiện và vì tôi thấy câu hỏi này chưa được trả lời và plugin đã nói ở trên trong khi tìm kiếm chính xác một cái gì đó như thế.

Tôi chưa tự mình kiểm tra ...


-1

InputStick là một bộ thu USB không dây, được thiết kế cho các thiết bị Android. Nó cho phép các ứng dụng Android mô phỏng nhiều loại thiết bị khác nhau, ví dụ: Bàn phím USB, Chuột USB, Tay chơi USB và nhiều thiết bị khác. Với InputStick, các ứng dụng Android có thể làm bất cứ điều gì mà một thiết bị vật lý có thể: gõ, di chuyển con trỏ chuột, điều khiển đa phương tiện và trò chơi.

Thông tin có thể được tìm thấy tại http://inputstick.com/


1
Điều này đọc như một quảng cáo. Mối quan hệ của bạn với sản phẩm này là gì?
Dan Hulme
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.