2025-07-25设置使用权限N次内
import os
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import base64
—————————————— 配置区域 ——————————————
LICENSE_FOLDER = r’C:\free’
LICENSE_FILE = os.path.join(LICENSE_FOLDER, ‘license.dat’)
密钥(必须是16、24或32字节长度)
KEY = b’mysecretpassword’ # 16 bytes
开发者信息
DEVELOPER_INFO = “”"
⚠️ 已超过试用次数,请联系开发者购买正式版!
📧 邮箱: developer@example.com
📞 电话: 123-4567-8901
🔗 官网: https://www.example.com
“”"
—————————————— 加密工具函数 ——————————————
def encrypt(data: str) -> str:
“”“AES加密数据并返回Base64编码字符串”“”
cipher = AES.new(KEY, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(data.encode(‘utf-8’), AES.block_size))
iv = base64.b64encode(cipher.iv).decode(‘utf-8’)
ct = base64.b64encode(ct_bytes).decode(‘utf-8’)
return f"{iv}:{ct}"
def decrypt(data: str) -> str:
“”“解密AES加密的Base64字符串”“”
iv, ct = data.split(‘:’)
iv = base64.b64decode(iv)
ct = base64.b64decode(ct)
cipher = AES.new(KEY, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), AES.block_size).decode(‘utf-8’)
return pt
—————————————— 授权管理 ——————————————
def ensure_license_file():
if not os.path.exists(LICENSE_FOLDER):
os.makedirs(LICENSE_FOLDER)
if not os.path.exists(LICENSE_FILE):default_data = "1\n3" # 初始运行次数为1,最大允许3次encrypted = encrypt(default_data)with open(LICENSE_FILE, 'w') as f:f.write(encrypted)
def read_run_count():
with open(LICENSE_FILE, ‘r’) as f:
encrypted_data = f.read()
decrypted_data = decrypt(encrypted_data)
run_count, max_runs = map(int, decrypted_data.strip().split(‘\n’))
return run_count, max_runs
def update_run_count(new_count, max_allowed=3):
new_data = f"{new_count}\n{max_allowed}"
encrypted = encrypt(new_data)
with open(LICENSE_FILE, ‘w’) as f:
f.write(encrypted)
def check_license():
ensure_license_file()
try:
run_count, max_allowed = read_run_count()
except Exception as e:
print(f"[错误] 授权文件损坏或被篡改:{e}")
print(DEVELOPER_INFO)
input(“按回车键退出…”)
return False
if run_count > max_allowed:print(DEVELOPER_INFO)input("按回车键退出...")return Falseprint(f"这是第 {run_count} 次运行,剩余可用次数:{max_allowed - run_count}")
return True
—————————————— 文件重命名功能 ——————————————
def batch_rename_files(folder_path, prefix=‘file_’, file_extension=None):
files = os.listdir(folder_path)
if file_extension:files = [f for f in files if f.endswith(file_extension)]files.sort()for i, filename in enumerate(files, start=1):name, ext = os.path.splitext(filename)new_name = f"{prefix}{i:03d}{ext}"old_path = os.path.join(folder_path, filename)new_path = os.path.join(folder_path, new_name)os.rename(old_path, new_path)print(f"Renamed: {filename} -> {new_name}")
—————————————— 主程序入口 ——————————————
def main_program():
folder = r"D:\70免费试用8次\images" # 替换为你自己的文件夹路径
prefix = “photo_”
extension = “.png” # 可选,如 .png / .txt / None 表示所有文件
print(f"\n正在处理文件夹:{folder}")
batch_rename_files(folder, prefix=prefix, file_extension=extension)
print("✅ 文件重命名完成。")
—————————————— 启动脚本 ——————————————
if name == “main”:
if check_license():
main_program()
current_run, max_run = read_run_count()
update_run_count(current_run + 1, max_run)
print(“✅ 脚本运行完成。”)
else:
print(“❌ 脚本因授权限制未能运行。”)