- The software piracy is blooming. BSA estimates $51 billion in software piracy .
- It takes seconds for one of your customers to leak a key on Internet (forums, chats, P2P, blogs, etc).
- Millions of users are using leaked keys to illegally unlock software.
Getting the unique fingerprint of a computer is not an easy task. Why? Because all PC components in a batch shipped by their manufacturer are identical!
Copying a piece of software (such as the software put in the BIOS chip) in millions of devices is cheap, but generating custom ID for each device/chip adds quite few cents to the price of the device. This is because the ID cannot be written in the EEPROM of the device (this would be easy) as it may be faked/overwritten. Imagine for example the unique ID written in the EEPROM of your BIOS chip. Every time you update your mainboard or video BIOS you will replace that ID with another number - which OBVIOUSLY is not unique. Therefore, the ID must be built at hardware level (built from semiconductors for example).
- There is no consortium to create and regulate standards about hardware unique identification numbers (hardware IDs).
- It needs highly advanced hardware skills to know how to build the software that extracts the unique identification numbers from hardware.
Adding a unique ID was a revolutionary (and relatively new) idea and not everybody embraced it. Only the CPU ID and HDD IDE ID is likely to exist (well, actually Intel added CPU ID in its Pentium processor). As the hardware industry is highly competitive, some hardware manufacturers just don't add a unique ID in their devices to save few money - in the end they don't have much gain from adding a unique ID so what's the point of adding it?! Because of this many other hardware manufacturers just don't have a unique hardware ID (sometimes not even a serial number). For example AMD Phenom II X4 series do not have a unique CPU ID.
- It is more likely to find a unique ID in a hardware device made by a big brand name then in a hardware device made by a relatively small company.
- The serial/model number of a hardware device (which shows the version and model of the device) is not the same as the unique ID of the device.
- Many hardware devices will have a serial number but not a unique ID.
Most concurrent hardware extractor libraries on the market offer you the most stupid solution: the “single call” solution where you call a single function and it returns a single 8 digit number (or something similar) that was supposed to be the unique fingerprint of the computer. What they don’t tell you is what happens under the hood of that function when the hardware ID extraction fails. What if the MAC is not unique (actually, this is highly possible)? What if the BIOS ID does not exist? What if the user upgrades its CPU?!?! Also, most of those libraries offer you the ID of the partition, which is not quite unique, instead of the ID of the IDE chip. Other libraries offer you the true ID of one CPU core but have problems
when they encounter a dual core CPU, as each core has its unique and independent serial number.
Get Hardware ID Extractor DLL
It works in Visual C, C Builder, Delphi, Visual Basic, etc. Details it here.
Painless image resizer
System tray timer
CPU core overload
DOS "Delay" command
Get my IP
Power email address extractor
Web site down
HTML "Alt" tag generator
- While extracting the unique serial number from hard drive, most libraries around will provide you the ID of the volume (which is unique but not definitive) and not the real unique hardware ID written in IDE electronics.
Our solution: Instead of offering a single function that generates a dumb “unique” fingerprint, we offer you access to ALL functions that extracts data about your hardware (CPU, BIOS, HDD IDE, partition ID, RAM details, video, etc).
To use the simple but stupid approach that other library offers, just extract all possible IDs and use a simple MD5 hash to combine them in a single 8 digits number. You just need 2 minutes to download (in case you don’t have it already) a free MD5 library and your unique ID extractor system is done!!!
- Our software library is easy to use; it is way more reliable and allows flexibility that no other concurrent software library allows.
- Our software library is cheapest one the market (don’t just believe us, do a Google search and convince yourself).
But if this is the dumb approach, what is the best/smart one? As explained previously there is no guaranty that all devices have a unique hardware ID, neither that Intel and AMD will continue to insert a unique ID in their microprocessor cores.
The safe bet is to use the CPU ID. Unless your user crunches data using really old hardware (hardware that hosts an antique Pentium1) then this solution will always work. The second solution is to obtain the unique hard drive ID written in drive’s IDE using the GetIDESerialNumber() function in HardwareIDExtractor DLL. This will work even with 486 computers (or even older ones)!
However, the best solution is to build a “profile” of the computer. This profile is a list of all hardware serial numbers and unique ID strings.
Here are the main steps:
- Build a list of unique IDs
- Optionally, let your program/user send the list to you. Put the list in a database together with customer’s name and with its key. This way, even if the customer upgrades one or more hardware components, you will still be able to track him down!
- Make key algorithm in your program not to fail if some of the hardware components have been changed but some are the same. In other words, give it some tolerance to changes.
- Keys based on unique computer fingerprint cannot be used by pirates.
E voilà. You have the PERFECT protection system for your software which may increase your profit 10 times. No more leaked key on Internet, no more companies that purchase one license and use it in an entire department! Believe us. You will finally get the money you deserve for your nights spent to develop your software.
Statistical data about software piracy