# How to limit the running of your Raspberry Pi Application to only from a specific Raspberry Pi Board
Koshinto is application anti-piracy service that anyone can easily use. You can easily limit the running of your Raspberry Pi Application to only from a specific Raspberry Pi Board and block the running of an unauthorized copy of your application.
All you need is to download a client library named sansi from koshinto and embed it to your application. Necessary credentials are obfuscated and embedded inside the sansi library, so no need for keys, certificates, license definition files, etc which are confusing, prone to accidents, and can be the target of attacks.
Followings are the steps of How to limit the execution of your Raspberry Pi application to only from a specific Raspberry Pi board, with Koshinto.
# Step 1. Signup to the Koshinto
Refer to Sign up / in
# Step 2. Link sansi to Application
Refer the same section Step 2. Link sansi to Application of this article.
# Step 3. Setting application start permission conditions
Return back to Koshinto and open keys menu, set the lock check box to the right side of Platform SerialNumber as "✓".
Open the Status of the Bind, it might be Not Active.
select it as Auto Bind Waiting. Then click UPDATE button at the bottom right. The task of settings just that's it!
Go back to the RaspberryPi and run a.out, you'll see the 10 secound countdown run fine.
pi@raspberrypi:~/sansi_examples/c $ ./a.out OK start 10 second countdown 10 9 8 7 6 5 4 3 2 1 0!
Returning to Koshinto again, refresh Bind data on the Browser with clicking the floating action button of round arrow icon at the bottom right.
Open keys, You can see that they are updated with the values in the user's environment.
If you remove the SD card, put it on the another Raspberry Pi and run a.out on it, the result is NG without countdown running.
ueda@amfortas:~/sansi_examples/c$ ./a.out NG
Your application has successfully refused to start from anything other than your Raspberry Pi board. Now unauthorized copy problem is no problem because it can't be used.
Notice: In addition to the steps mentioned above, the following setting steps are also available.
- Bind your application directly to an Raspberry Pi Board serial number which you already know.
- Wait for confirm() to be executed, check the value sent, and bind your application to it if there is no problem
For detail, refer this document.