Security 如何在OSX上伪造USB供应商ID和产品ID值?

Security 如何在OSX上伪造USB供应商ID和产品ID值?,security,macos,usb,spoofing,Security,Macos,Usb,Spoofing,我们正在考虑使用USB设备的供应商和产品ID(通过IOKit获得)来解锁应用程序的某些功能。我知道这些值可以被欺骗,但我不确定在OSX上这么做有多容易。欺骗供应商和产品ID涉及什么?这是一个非程序员可以很容易做到的事情吗?因为目前还没有人回答,所以我偶然发现了一个基本上是说,你可以得到一个Arduino并对它进行编程,以返回你想要的任何VID/PID/序列。我仍然找不到任何软件唯一的方法来做到这一点。我怀疑(对于程序员来说)创建一个kext在内核空间中创建一个相当真实的iObsDevice对象是

我们正在考虑使用USB设备的供应商和产品ID(通过IOKit获得)来解锁应用程序的某些功能。我知道这些值可以被欺骗,但我不确定在OSX上这么做有多容易。欺骗供应商和产品ID涉及什么?这是一个非程序员可以很容易做到的事情吗?

因为目前还没有人回答,所以我偶然发现了一个基本上是说,你可以得到一个Arduino并对它进行编程,以返回你想要的任何VID/PID/序列。我仍然找不到任何软件唯一的方法来做到这一点。

我怀疑(对于程序员来说)创建一个kext在内核空间中创建一个相当真实的iObsDevice对象是相当容易的。但是,一旦完成,任何人都可以加载它

也可以使用AppleUSBMergeNub构建一个无代码的kext,将一个设备伪装成另一个设备(虽然我还没有测试过这个,但它看起来可能会工作,假设您只尝试匹配ioubdebevice而没有实际使用它)


在用户空间中劫持API调用并为软件提供它所期望的答案可能会更容易。

非程序员无法做到这一点。您可以做的是为设备编写一个内核扩展(IOKit驱动程序),它有一个匹配的字典,与设备的实际供应商/产品ID相匹配,这会导致系统在连接此设备时自动加载内核扩展,并传递对设备对象的引用。驱动程序现在负责初始化设备并创建IOKit框架(用户空间库)与设备通信所需的所有用户空间信息。通常,苹果对于大多数USB设备类都有默认的IOKit驱动程序(这就是为什么你不需要为每个USB鼠标或键盘都添加一个额外的驱动程序),但是如果找到了更具体的驱动程序,那么将使用这个驱动程序。当然,在创建用户空间数据时,驱动程序可能会谎报供应商/产品ID,从而导致用户空间程序看到错误的值。由于IOKit是用C++编写的,并且很大程度上依赖于对象和对象继承,所以甚至不必从头开始编写驱动程序,而是可以从苹果的默认驱动程序继承,只重写某些方法,否则就依赖于超级实现。然而,编写IOKit内核驱动程序并不是那么容易,即使是多年来开发Mac软件的人也可能不知道如何做到这一点,而IOKit文档是苹果提供的最糟糕的文档之一


那么回答你的问题:有可能吗?对这相当容易吗?不,非程序员能做到吗?当然不是,除非其他人为他们编写了一个随时可用的扩展,他们只需要安装即可。

我可以在Delphi代码中创建一个OCX来实现这一点 并提供信息以向USB发送/接收数据,其他状态如下:-是否仍连接

当然,我需要一点比这更详细的情况下,相同的芯片是从另一个产品连接。
例如,疯狂的名称、设备描述………..

这其实相当简单,而且我绝对不是程序员

在这里找到了向导

谢谢,罗兰德


我可以更改在易趣上购买的USB以太网适配器的ID,以使用Mac OS X 10.8的另一个驱动程序。

这不会更改硬件上的实际供应商/产品ID,也不会通过软件进行欺骗。它只是改变了kext希望看到的ID。