问题 如何识别USB设备?


是否可以通过唯一标识符识别USB设备,例如操作系统具有Mac-ID,硬盘ID,以太网卡ID是否具有唯一标识符?我知道可以轻松更改USB分区的卷序列号,也可以在用户格式化时更改。

但是有ID可以通过MFC(Visual C ++或C#)使用WMI服务检索某种“USB硬盘ID或USB硬件ID”吗?这样的标识符对于物理设备是否是唯一的?请澄清......


4182
2017-12-27 11:15


起源

有时,便宜的网络适配器具有相同或零MAC地址。 - Vi.
@ Vi。你能解释一下你的评论吗? - highlander141
有时意味着有一些错误的设备,从计算机的角度来看,它们实际上是“相同的”,即使标准确实需要唯一的,也没有或相同的序列号。为什么需要区分任意USB设备?或者您只需要大容量存储或网络适配器等特定产品? - Vi.
你的...是 实际的,更大的问题? - Vi.
我需要的是,我正在一个项目,需要USB插入任何计算机(在互联网上),将有一个autorun.xxx(exe或一些脚本),它将检测此USB并打开一个门户网站,可能是仅通过USB的id访问,该ID将是Web门户加载时生成的SESSION_ID的组合... - highlander141


答案:


与任何USB设备中可用的“唯一编号”最接近的等价物是VID和PID,供应商和产品ID。它用于识别设备并为其安装适当的驱动程序。但是,对于同一产品,它是相同的数字集,它不足以识别您手中的特定设备。因此无法实施许可证验证程序,大概是你所追求的。

只有一定  USB设备实现序列号。由于驱动器格式化程序生成卷序列号,您偶然会从闪存驱动器中获取它。也没用,它很容易改变。制造商可以使用USB wifi适配器 必须 生成唯一的MAC地址。

有一类USB设备 完善 为了这个目标。通用名称是“加密狗”,它们是为此而制作的。当您购买一台软件时,您还可以获得可以链接到您的程序中的软件,该软件提供了一种防篡改方式来验证许可证号,这是许可证验证程序的另一个重要部分,通常也是薄弱环节。更多关于加密狗的信息 维基百科文章


15
2017-12-27 13:34



关于VID和PID。从我能够发现供应商ID和产品ID是设备中的USB组件而不是设备本身的那些看起来。换句话说,来自不同供应商的提供类似功能的不同USB物理设备可以从特定供应商获取相同的USB组件。您获得的VID和PID用于USB组件,但不识别USB组件所属的设备。要确定已使用USB组件构建的实际设备的特性,您必须执行其他查询。 - Richard Chambers