dashingsoft / pyarmor

A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.
http://pyarmor.dashingsoft.com
Other
3.28k stars 279 forks source link

How to distribute obfuscated scripts to many machines and different platforms(linux, windows and mac) #22

Closed jondy closed 6 years ago

jondy commented 6 years ago

Hi, I looked at the GitHub repo and ran the trial version for one simple case. I want to purchase the product. But before that, I am trying to understand how does the licensing work and how should I use it while distributing my product.

The use case is as follows:

I have built a product. Now one my clients wants to use this product in 50 machines as a standalone software. Now what i want is following:

Full security of my source code ie he should not be able to reverse engineer and understand the code

he should be allowed to install this product only on 50 machines and not more than that. Note that these machines will not have any internet access.

By the way, the client's machines have win7 os. But i want a solution which should work across all the platform (linux, windows and Mac)

Also, what kind of support will you provide once i purchase the pyarmor ?

jondy commented 6 years ago

First create a project

   pyarmor init --src=/path/to/myapp --entry=main.py projects/myapp

Then obfuscate project

   cd projects/myapp
   ./pyarmor.bat build

All the obfuscated scripts and runtime files in the dist/

Remove default license.lic

    rm dist/license.lic

Copy all the files in the dist/ to 50 customer machines

Generate new license.lic for each machine, you need hardward information of these 50 machines, for example, mac address or serial number of harddisk for each machine

    # First change to your project
    cd projects/myapp

    ./pyarmor.bat licenses --bind-disk '100304PBN2081SF3NJ5T' --bind-mac '20:c1:d2:2f:a0:96' "Machine-001"

    # New license saved in "licenses/Machine-001/license.lic"
    # Readable text saved in "licenses/Machine-001/license.lic.txt"
    # "Machine-001" can be any text
    cat licenses/Machine-001/license.lic.txt

    # Copy this "license.lic" to "dist/" in customer machine "Machine-001"

    # Repeat for other machines   

It's better to write a shell script to generate so many licenses.

The hardware information can be got by any tool, or pyarmor. Run the following command in target machine

    python pyarmor.py hdinfo

If distribute obfuscated scripts to different platform, just replace platform-dependent library _pytransform.dll in the dist/ with the right one for target platform

Here are all the latest prebuilt platform-dependent library _pytransform

http://pyarmor.dashingsoft.com/downloads/platforms

The support is now by email, or report issue in github

https://github.com/dashingsoft/pyarmor/issues

jondy commented 6 years ago

Thanks for the response.

One thing that i forgot to mention is that we want to give them the exe file. We are using py2exe for that. So how to use it along with that.

So is it possible to use py2exe once we get the dst folder. If yes, then how exactly should i use it and in that case where should i put the license file generated by pyarmor later on while distributing it.

Also, as far as i understand, i need to buy only one license key from you for one product. Am i right ?

jondy commented 6 years ago

Someone else has done it, here is a simple guide

https://github.com/dashingsoft/pyarmor/blob/master/src/user-guide.md#py2exe-with-obfuscated-scripts

The keypoints for pyarmor working with py2exe:

The final files in the dist/ path would include:

Yes, one license key is enough for your product.