How to identify UNIQUELY a USB Device?

29,881

The closest equivalent of a "unique number" available in any USB device is the VID and PID, the vendor and product IDs. It is used to identify the device and install the proper driver for it. However, it is the same set of numbers for the same product, it is not good enough to identify the particular device you have in your hand. And thus useless to implement a license verification procedure, presumably what you are after.

Only certain kind of USB devices implement a serial number. You get it by accident from a flash drive due to the drive formatter generating a volume serial number. Useless as well, it can easily be changed. A USB wifi adapter could work, the manufacturer must generate a unique MAC address.

There's one class of USB devices that are perfect for this goal. The generic name is "dongle", they are made for this. When you buy one you also get software that you can link into your program that provides a tamper-proof way to verify the license number, another important part of a license verification procedure and usually the weak link. More about dongles in this Wikipedia article.

Share:
29,881
highlander141
Author by

highlander141

Updated on January 31, 2020

Comments

  • highlander141
    highlander141 over 4 years

    Is it possible to identify a USB device by a unique identifier like an Operating system has Mac-ID, Harddisk ID, Ethernet card ID has unique identifiers? I know one can easily change the volume serial number of USB partition or it could be changed when user Formats it.

    But is there an ID some kind of 'USB Harddisk ID or USB Hardware ID' which could be retrieved via MFC's (Visual C++ or C#) using the WMI Service? Will such an identifier be unique to the physical device? Kindly clarify...

  • Richard Chambers
    Richard Chambers over 7 years
    Concerning the VID and PID. It appears from what I have been able to find that the Vendor Id and Product Id are those of the USB component in a device rather than that of the device itself. In other words different USB physical devices from different vendors which offer similar functionality may source the same USB component from a specific vendor. The VID and PID you get is for the USB component and does not identify the device the USB component is part of. To determine the characteristics of the actual device that the USB component has been used to build you must do additional queries.