是否可以将 Android 编程为物理 USB 键盘?

新手上路,请多包涵

我真正想知道的是这是硬件问题,还是软件问题。我可以通过 USB 将我的安卓手机插入电脑并让它充当硬件键盘吗?我不想在计算机上安装任何东西,我希望 android 表现得像标准硬件。


编辑:澄清我想为 android 编写一个程序/库,使设备能够完全模拟普通键盘,以便操作系统将其报告为标准键盘设备,并且它可以在 BIOS 或键盘的其他任何地方工作作品。

原文由 Billy Moon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

我已经修改了 Nexus 7 上的内核,使其类似于标准 HID 键盘和鼠标,而不会丢失 MTP/ADB/其他 USB 功能。

您可以使用 usb-gadget-test 命令行实用程序将击键和鼠标移动发送到您的 PC。我想稍后创建一个远程管理应用程序,它将发送关键事件并从摄像头接收视频。

内核补丁、二进制文件和说明: https ://github.com/pelya/android-keyboard-gadget

编辑: 我已经向 Google Play 发布了一个适当的应用程序,如果您的 Nexus 7 已植根,您可以直接从应用程序中刷新内核,并使用它发送按键。

原文由 pelya 发布,翻译遵循 CC BY-SA 3.0 许可协议

似乎有人通过修补内核来做到这一点。我刚刚看到弗吉尼亚州费尔法克斯乔治梅森大学计算机科学系 Angelos Stavrou、Zhaohui Wang 撰写的题为“利用智能手机 USB 连接获得乐趣和利润”的论文。 (可通过谷歌搜索上述标题免费获得)。在这里,两位研究人员正在调查受感染的 android 设备通过让 android 设备将自己呈现为 HID 设备(键盘)来控制连接的 PC 的可能性。作为概念证明,他们似乎已经成功地修补了内核,完全符合您的要求。他们没有提供详细的步骤,但无论如何我只是引用他们所说的他们所做的:

…..我们在 Android Linux 内核上使用 USB Gadget API for Linux[4] 除了现有的 USB 复合接口外,还开发了一个特殊的 USB 小工具驱动程序。 UGAL 框架帮助我们实现了一个简单的 USB 人机接口驱动程序 (HID) 功能(即设备驱动程序)和各种内核 API 之间的胶水代码。使用“drivers/usb/gadget/composite.c”中提供的代码,我们创建了自己的小工具驱动程序作为附加的复合 USB 接口。此驱动程序模拟 USB 键盘设备。我们还可以模拟 USB 鼠标设备向桌面系统发送预编程的输入命令。因此,可以直接伪装成普通的 USB 鼠标或键盘设备并悄悄发送预定义的命令来模拟恶意交互用户活动。为了验证这个功能,在我们的对照实验中,我们发送键码序列来执行非致命操作,并展示这种被操纵的设备如何造成损坏。特别是,我们模拟了戴尔 USB 键盘(vendorID=413C,productID=2105)发送“ CTRL+ESC”组合键和“U”和“Enter”键序列重新启动机器。请注意,这只需要 USB 连接,并且可以获得桌面系统上的“当前用户”权限。通过将额外的本地或远程漏洞作为有效负载发送,恶意软件可以提升权限并获得对桌面系统的完全访问权限。

原文由 JavaMan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题