I’ve developed software that I want to protect with licensing. So far I’ve got code that uses the details of hardware components to generate a unique ID for each machine. I can then permit the activation of 5 machines against one single serial key (5 machines per license is what I’m selling).
This all works fine, but obviously only on machines that have internet connection. Is this just a limitation of this sort of protection and there’s nothing I can do about it? Or is there a way I can tackle this problem?
NB: At this point, in this thread, I’m not open to critique regarding the way in which I’ve generated the unique ID, this is the method I’ve chosen and, rather ignorantly, need to stick by for a few reasons.
I think you have several options:
Implement some kind of self check: Each running instance sends its unique ID into the network and in turn listens for the unique IDs of other running instances. The first instance that receives more than four unique IDs via the network shuts itself down. I guess this could be implemented using UDP broadcasts. The implementation of this is not that trivial:
If I were to implement something like that, I would introduce the following three package types:
In all cases, you should think about encoding the number of allowed instances into the key, so you can later hand out differently sized keys.