How to either disable code operation or protect binary code from being copied? For the BL2600. I want to protect the code from being stolen or at least keep a pirated copy from being run.
Good morning, the only way to ‘copy’ code to another Rabbit is to use a cloning board, the source code must have “enable cloning” defined. You cannot extract source code from any Rabbit product.
I am concerned about the BINARY code being pirated and put on other BL2600 boards. I want to be able to sell the BL2600’s with my binary code on them. If someone can pirate my binary code and copy it to another BL2600 using a Clone Board, I have lost my ability to sell BL2600’s with my code. Of course, it’s also important to secure my source code too, but my question is about the binary code.
I will have a PC communicating to my BL2600, so perhaps I can disable the BL2600 code by requiring it to be enabled from my PC code but I haven’t figured out how to do it all yet. Let me know if you have suggestions on how to do that, that is, requiring my code to be enabled by communication with a PC.
It is possible and there is no good method of protection against a motivated criminal. Note, though, that even devices which have on-CPU application storage can be duplicated by a highly motivated criminal.
I dont know of any way of disabling your code
The following is from an old Ask Larry article:
Let me first say to please keep in mind that the Rabbit processors do not have any internal program memory. Because of this, anyone who has physical access to your device can access the flash content. In the worst case scenario, someone can unsolder the flash from the module, put it into a flash programmer and dump the contents. Dynamic C can be used to dump the contents of the flash.
In both of the above cases the “pirate” will have a file that contains the binary contents of flash but doe not have the C source code. There is essentially no intelligence in the file and it is almost impossible for a human to read. There is no practical way to regenerate the C source code containing your algorithm from the binary.
The pirate will be able to copy the entire flash, modify whatever bytes he or she wants (with a binary editor) and write a new flash, however it is highly unlikely that he will be able to make any intelligent modifications.
The bottom line is there is no way to prevent a pirate from obtaining the contents of your program short of denying physical access. However, the content will always be essentially useless. For practical purposes, it would be easier for the pirate to break into your office and steal your computer.
I did a little searching and found a stream about code-protecting Rabbits. I will re-read it but at first look, there didn’t seem to be any way to protect a Rabbit from serious pirating.
I want to protect the code from being stolen or at least keep a pirated copy from being run.
If your hardware would contain some unique secret (e.g. physical ID of a chip not readable from outside) you could maybe implement some checking: users (or an application) has to enter a password which when being encrypted is matching the unique chip id.
This will allow even cloned binary copies of your firmware, only to run on devices where the application executer knows the unique hardware id or matching password. consider this like a “license” check.
E.g. if you use the MAC address as unique hardware id, you just need a cute password encryption generating the MAC from a password and a checking if this matches the phyiscal MAC, while generating the password from the known MAC is not possible for the attacker.
However if they clone the firmware and MAC, they might still run the firmware with the old password, however devices with same MACs will create problems in their network.
generating the password from the known MAC is not possible for the attacker.