Hello. I was recently assigned some work to think of a way to secure scripts/tools to avoid them being leaked out.
I want each selected subject, to be sent a code (password) to identify, and only they will be able to use that tool. (these tools are just python/mel scripts in maya)
And that code only works for them. Even if they share it outside, it will not work. (it’s quite similar to the animbot tool)
I don’t know anything about these security issues, can someone guide me or give me an example?
You’re asking about making a “node locked license” (that’s your google term).
There are multiple companies built around setting up and maintaining licenses because this is a HARD problem, and it’s made even harder because python is interpreted.
Here’s a silly suggestion … maybe you could ask the guys at animbot what they did to secure their tool. Doesn’t hurt to ask.
You’re going to have to make a decision on the tradeoff between cost and security.
The only true security is never distributing the code. Because once a user has the code, they must be able to access it to run it. And that means (given enough motivation) they can decompile or deobfuscate it.
Just like housekeys don’t keep people from breaking windows, you’re not going to be able to close EVERY security hole. But you can keep honest people honest by making it difficult to be dishonest.
Here’s a description of how to possibly set up the license in the “considerations” section.
You’ll need to look into getting the machine identifier securely
The problem is, people could still go into your obfuscated python bytecode and just remove or edit the section that reads/requires the license… so my best guess is that you’ll need to use something like cython to make a fully compiled version of your module. And even then, that can be passed along and decompiled, but it’s a LOT more work.
thanks, it seems like this is more complicated than I thought.
I could ask animbot directly, but that would be weird, because they would think I wanted to crack them. I think I’ll spend some time learning more, or ask someone outside of 3D to do this.