云计算百科
云计算领域专业知识百科平台

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)

赞(0)
未经允许不得转载:网硕互联帮助中心 » Python游戏水平测试辅助系统
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!