欢迎光临UUpython
最大、最新、最全的Python代码收集站

生成校验软件的注册密钥

这段代码是一个简单的Python脚本,用于生成和校验软件的注册密钥。脚本使用了wmi库来获取计算机的CPU序列号,并使用hashlib库进行MD5哈希加密。

以下是代码的主要功能和流程:

  1. 定义常量和文件路径:
  • AUTHOR:作者或标识,用于生成密钥。
  • KEYFILENAME:存储密钥的文件名。
  1. 获取本地机器的加密字符串:
  • 使用wmi库获取计算机的CPU序列号,然后将其与AUTHOR拼接。
  • 对拼接后的字符串进行一次MD5哈希加密。
  • 将加密结果与AUTHOR再次拼接,进行第二次MD5哈希加密。
  • 返回最终的加密字符串。
  1. 从文件中获取密钥:
  • 打开存储密钥的文件,读取第一行内容作为密钥。
  • 返回读取的密钥字符串。
  1. 校验是否注册:
  • 获取本地机器的加密字符串。
  • 从文件中获取密钥。
  • 将文件中的密钥与本地机器的加密字符串进行比较。
  • 如果比较结果相等,则返回True表示已注册,否则返回False表示未注册。
  1. 生成注册密钥文件:
  • 获取CPU序列号。
  • 将CPU序列号与AUTHOR拼接,并进行一次MD5哈希加密。
  • 将加密结果写入存储密钥的文件。
  1. 生成注册密钥文件(重载函数):
  • 接受一个解密字符串参数。
  • 将解密字符串与AUTHOR拼接,并进行一次MD5哈希加密。
  • 将加密结果写入存储密钥的文件。
  1. 显示CPU序列号:
  • 使用wmi库获取计算机的CPU序列号。

这段代码可以用于生成和验证软件的注册密钥,通过对CPU序列号的加密和校验,实现了简单的注册功能。在使用之前,需要替换AUTHOR为相应的标识,然后根据需要调用相应的函数。

import wmi
import hashlib
import os
 
AUTHOR='52pj'
KEYFILENAME='./RegisterKey.key'
 
#获取CPU的序列号加上Author字段,MD5一次,再在结果加上Author字段再MD5一次,形成最终的比较密码
def GetLocalMachineEncrypedString():
    try:
        c = wmi.WMI()
        decryptString = c.win32_Processor()[0].ProcessorId.strip() + AUTHOR
        encrypedString = hashlib.md5(decryptString.encode('utf-8')).hexdigest()
        decryptString = encrypedString + AUTHOR
        encrypedString = hashlib.md5(decryptString.encode('utf-8')).hexdigest()
    except:
        encrypedString = hashlib.md5(AUTHOR.encode('utf-8')).hexdigest()
    return encrypedString
 
#文件中储存的Key是CPU序列号加Author,一次MD5结果
def GetKeyFromFile():
    try:
        f=open(KEYFILENAME,'r')
        lines=f.readlines()
        keyString=lines[0]
        return keyString
    except:
        return ''
 
#把文件的key加上author,做最后一次MD5生成最终结果
def CheckIsRegistered():
    decryptString=GetKeyFromFile()+AUTHOR
    encrypedString = hashlib.md5(decryptString.encode('utf-8')).hexdigest()
    if encrypedString==GetLocalMachineEncrypedString():
        return True
    else:
        return False
 
#生成key文件
def BuildRegisterKey():
    try:
        c = wmi.WMI()
        decryptString = c.win32_Processor()[0].ProcessorId.strip() + AUTHOR
        encrypedString = hashlib.md5(decryptString.encode('utf-8')).hexdigest()
    except:
        encrypedString=''
 
    try:
        f=os.open(KEYFILENAME,os.O_CREAT|os.O_WRONLY)
        os.write(f,encrypedString.encode('utf-8'))
        print('写入', KEYFILENAME, '成功')
    except:
        print('写入',KEYFILENAME,'失败')
 
def BuildRegisterKey(decryptString):
    if decryptString:
        decryptString = decryptString + AUTHOR
        encrypedString = hashlib.md5(decryptString.encode('utf-8')).hexdigest()
    else:
        encrypedString=''
 
    try:
        f=os.open(KEYFILENAME,os.O_CREAT|os.O_WRONLY)
        os.write(f,encrypedString.encode('utf-8'))
        print('写入', KEYFILENAME, '成功')
    except:
        print('写入',KEYFILENAME,'失败')
 
def ShowCPUSerialNumber():
    try:
        c = wmi.WMI()
        decryptString = c.win32_Processor()[0].ProcessorId.strip()
    except:
        decryptString=''
    return decryptString
赞(0) 打赏
未经允许不得转载:UUpython » 生成校验软件的注册密钥
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!