21
votes

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...

1
Sometimes there are cheap network adapters with equal or zero MAC addresses.Vi.
@Vi.Can you explain your comment?highlander141
Means sometimes there are a-bit-wrong devices that are really "identical" from computer's point of view and have no or equal serial numbers even if standards do require unique. Why do you need to discriminate arbitrary USB devices? Or you need this only for specific ones like mass storage or network adapters?Vi.
What is your actual, bigger problem?Vi.
What I need, I am on a project which required USB to be plugged in to any computer (on internet), there will be an autorun.xxx (exe or some script) which will detect this USB and opens an web portal which could be accessed only by that USB's id which will be a combination of SESSION_ID generated at the time of web portal loading...highlander141

1 Answers

25
votes

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.