操作系统如何将 USB Rubber Ducky 识别为键盘?是 USB Rubber Ducky固件哪些欺骗了操作系统?
更一般地说,操作系统对设备的识别是由设备固件完成的吗?
答案1
当 USB 设备插入时,操作系统会向设备询问其设备描述符。其中包括设备类、子类、供应商 ID 和产品 ID 等。设备类 3 是“人机界面设备”,这是 Rubber Ducky 告诉操作系统的信息。操作系统会加载通用键盘驱动程序,设备可以发送它喜欢的任何按键 - 它与真正的键盘没有区别。
有一个用于 Rubber Ducky 的工具,可以让你将其 VID 和 PID 设置为你想要的任何值。应该是一种方式来获取制造商名称和设备序列号,但由于它们都是由设备本身提供的,因此固件可以欺骗操作系统。(即使是合法设备有时也会将这些留空。)
总而言之,你是对的,操作系统相信设备所说的一切。
答案2
直接引用 Wiki 中的一段话:
几乎所有计算机(包括台式机、笔记本电脑、平板电脑和智能手机)都通过键盘接收人类的输入。这就是为什么无处不在的 USB 标准中有一个称为 HID(人机接口设备)的规范。简而言之,任何声称是键盘 HID 的 USB 设备都会被大多数现代操作系统自动检测和接受。无论是 Windows、Mac、Linux 还是 Android 设备,键盘都是王道。
http://usbrubberducky.com/#!index.md
它向操作系统表明自己是键盘。设备必须表明自己,操作系统才能知道它是什么、如何处理它/对它有什么期望。如果设备不表明自己,我不确定会发生什么,但操作系统可能不知道如何处理它。
答案3
嗯,本质上是键盘。只是所有按键(有效载荷)都是预先记录的;然后由集成电路快速(盲目)注入,方式和格式与传统 USB 式键盘通常预期的完全相同。也就是说,它实际上将每个按键的信号通过线路发送,就像您自己输入一样。