"""
授权验证模块 – 绑定队伍 + 机器码 + 有效期
"""
import hashlib
import platform
import subprocess
import time
from datetime import datetime
# ===== 配置 =====
# 密钥(只有自己知道的字符串,建议20位以上随机字符)
SECRET_KEY = "YOUR_ULTRA_SECRET_KEY_2026_DONT_SHARE"
# ===== 获取机器唯一码 =====
def get_machine_code():
"""获取当前电脑的唯一标识(硬盘序列号 + MAC地址组合)"""
try:
# Windows下获取硬盘序列号
disk = subprocess.check_output(
"wmic diskdrive get serialnumber",
shell=True,
encoding='gbk'
).strip().split('\\n')[-1].strip()
except:
disk = "DISK_UNKNOWN"
try:
# 获取MAC地址
mac = subprocess.check_output(
"getmac",
shell=True,
encoding='gbk'
).strip().split('\\n')[2].split()[0]
except:
mac = "MAC_UNKNOWN"
# 组合并哈希
raw = f"{disk}_{mac}_{platform.node()}"
return hashlib.sha256(raw.encode()).hexdigest()[:16] # 取前16位即可
# ===== 生成授权码 =====
def generate_license(team_name: str, expire_date: str, machine_code: str = None) -> str:
"""
生成授权码(自己用,不发给别人)
team_name: 队伍名称,如 "言乐电竞"
expire_date: 有效期,格式 "2026-12-31"
machine_code: 不填则自动获取当前机器码
"""
if machine_code is None:
machine_code = get_machine_code()
raw = f"{SECRET_KEY}_{team_name}_{expire_date}_{machine_code}"
code = hashlib.sha256(raw.encode()).hexdigest()[:32] # 取32位
return code
# ===== 验证授权码 =====
def verify_license(team_name: str, expire_date: str, license_code: str) -> bool:
"""
验证授权码是否有效
"""
# 1. 检查是否过期
try:
expire = datetime.strptime(expire_date, "%Y-%m-%d")
if datetime.now() > expire:
print("❌ 授权已过期,请联系作者续期")
return False
except:
print("❌ 授权日期格式错误")
return False
# 2. 获取当前机器码
current_machine = get_machine_code()
# 3. 重新计算正确的授权码
expected = generate_license(team_name, expire_date, current_machine)
# 4. 比对
if license_code == expected:
print(f"✅ 授权验证通过!欢迎使用,{team_name}")
return True
else:
print("❌ 授权码无效,请检查是否复制完整或联系作者获取")
return False
# ===== 使用示例 =====
if __name__ == "__main__":
# — 第一步:你生成授权码(在自己电脑上运行,得到授权码字符串) —
# YOUR_TEAM = "言乐电竞"
# YOUR_EXPIRE = "2027-01-01"
# YOUR_CODE = generate_license(YOUR_TEAM, YOUR_EXPIRE)
# print(f"请将此授权码发给使用者:{YOUR_CODE}")
# — 生成后,把这段代码注释掉,只保留验证部分 —
# — 第二步:使用者验证(队伍名称和有效期是公开的,授权码是私密的) —
TEAM = "❌❌电竞"
EXPIRE = "2027-01-01"
LICENSE = input("请输入授权码: ") # 从用户输入获取
if verify_license(TEAM, EXPIRE, LICENSE):
print("程序启动中…")
# 这里放主程序代码
else:
print("授权失败,程序退出")
time.sleep(3)
sys.exit(1)
网硕互联帮助中心






评论前必须登录!
注册