为避免接触 Internet 上的任何内容,您可以使用以下方式“加密”您的程序:
- 采取程序的重要部分(没有它其余部分将无用),
- 把它放到一个字符串中,
- 用运行它的计算机的MAC 地址对称地加密该字符串,
- 然后在你的程序中这样做:
- 使用它运行的当前机器的 MAC 地址解密该字符串,并且
- 使用 调用该解密字符串
exec
。
重要部分的示例是print "hello world"
:
def getMyMac():
return 123456789L # for testing now
return uuid.getnode() # this would be the real thing
def strxor(s, key):
key *= len(s) / len(key) + 1
return ''.join(chr(ord(key[i]) ^ ord(s[i])) for i in range(len(s)))
def performVitalCode():
code = 'A@ZZA\x16\x15P\\]^\\\x14BYET]\x13'
# I found that code by entering:
# strxor('print "hello world"', str(getMyMac()))
realCode = strxor(code, str(getMyMac()))
exec realCode
- 我在这里对字符串使用了一个简单的 xor 进行加密(这不是一个难以破解的密码)。
- 当然,“允许”计算机的用户可以将他的 MAC 地址交给下一个用户,然后
- 要么可以修补
getMyMac()
要么
- 欺骗自己的MAC地址;大多数网卡都允许这样做。
因此,这不是解决您问题的“安全”解决方案。
但是,如果一个计算机知识很少的人在没有任何进一步信息的情况下将您的代码提供给其他人(可能通过将其放在论坛或类似网站上),接收者将无法开箱即用地执行它。
最后我需要指出的是,每一个链接到特定计算机的代码都可能成为代码的合法用户的麻烦。如果我使用的程序因为我切换到不同的硬件而停止工作(可能只是因为我买了一台新笔记本电脑),我通常会生气并诅咒该代码的作者。您可能不想惹恼您的客户。