专栏总目录
一、使用PyInstaller
pyInstaller可以将Python脚本打包成一个独立的可执行文件,不包含源代码。
(一)安装PyInstaller:
pip install pyinstaller
(二)使用PyInstaller打包脚本:
pyinstaller --onefile your_script.py
将在./dist
目录下创建一个名为your_script
的可执行文件(在Windows上是.exe
,在Linux上是无扩展名的)。
二、使用pycryptodome
(一)安装pycryptodome
pip install pycryptodome
(二)编写脚本加密、解密运行脚本
1. 脚本加密程序
from Crypto.Cipher import AES
import base64
import osdef pad(s):return s + (AES.block_size - len(s) % AES.block_size) * chr(AES.block_size - len(s) % AES.block_size)def encrypt(message, key):message = pad(message)cipher = AES.new(key, AES.MODE_CBC)return base64.b64encode(cipher.iv + cipher.encrypt(message))key = os.urandom(16) # 生成随机密钥
with open('script.py', 'r') as f:script = f.read()encrypted_script = encrypt(script, key)with open('encrypted_script.bin', 'wb') as f:f.write(encrypted_script)print(f"密钥(请妥善保管,丢失后将无法解密): {base64.b64encode(key).decode()}")
这个加密脚本,它会读取script.py
,加密它,并将加密后的内容保存到encrypted_script.bin
。
2. 解密运行程序:
from Crypto.Cipher import AES
import base64def unpad(s):return s[:-ord(s[len(s) - 1:])]def decrypt(encrypted_script, key):encrypted_script = base64.b64decode(encrypted_script)cipher = AES.new(key, AES.MODE_CBC, encrypted_script[:AES.block_size])return unpad(cipher.decrypt(encrypted_script[AES.block_size:]))key = base64.b64decode(input("请输入密钥: "))
with open('encrypted_script.bin', 'rb') as f:encrypted_script = f.read()decrypted_script = decrypt(encrypted_script, key)exec(decrypted_script)
这个解密脚本,它会要求你输入密钥,然后解密并执行原始的Python脚本。