Python游戏水平测试辅助系统

"""

授权验证模块 - 绑定队伍 + 机器码 + 有效期

"""

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)

相关推荐
曹牧14 分钟前
C#:线程间操作无效,不是从创建控件线程访问
开发语言·c#
2601_9623004720 分钟前
Python TensorFlow对比PyTorch_Python TensorFlow和PyTorch在机器学习中的差异
pytorch·python·深度学习·机器学习·tensorflow
承渊政道2 小时前
【Python编程—从入门到实践】(Python条件判断完全入门:从布尔表达式到列表中的if实战)
开发语言·python·pycharm·条件判断·布尔表达式
小灰灰搞电子2 小时前
Rust 相关容器(集合)详解
开发语言·容器·rust
circuitsosk2 小时前
企业知识库 RAG 从 62% 到 91%:分块策略、混合检索与重排序的调优全记录
python·知识库问答·rag·面试项目·ai工程化·混合检索
烂蜻蜓3 小时前
Flask入门教程(二十六):Session API——用户会话状态管理
后端·python·flask
2603_965148115 小时前
家居百货蓝海:API挖掘高复购率生活小商品
大数据·服务器·人工智能·python·生活
萧瑟余晖5 小时前
Java深入解析篇三十三之密封类与接口(Sealed Classes)详解
java·开发语言
阿童木写作8 小时前
跨境电商图片翻译工具推荐:批量图片翻译+视频字幕翻译+智能抠图
python·macos·音视频·xcode
cui_ruicheng9 小时前
LangChain 应用开发(十四):Agent 上下文与记忆机制
服务器·人工智能·python·langchain