Python Des加密解密如何实现软件注册码机器码

 更新时间:2020年01月08日 09:48:10   作者:小锋学长  
这篇文章主要介绍了Python Des加密解密如何实现软件注册码机器码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了Python Des加密解密如何实现软件注册码机器码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

原理

  • 判断路径下是否存在识别文件,若存在就解密对比,若不存在就进入机器码注册:
  • 获取系统C盘序列号作为识别ID,并添加随机数作为混淆,生成最终机器码。
  • 将机器码发给软件开发者,开发者将机器码解密后,添加自己的标识符号并加密生成key,发给用户。
  • 用户输入key,程序对比并保存。
  • 用户下次打开软件时,重新开始步骤‘1'。

说明

  • 加密:将序列号经过Des加密,再经过base64编码。
  • 解密:将密码经过base64解码,再经过Des解密。
  • 写文件:将二进制字符转为十六进制保存。
  • 读文件:将十六进制转为二进制。

代码

# coding: utf-8
 
import win32api
import pyDes
from binascii import b2a_hex, a2b_hex
import base64
import os
def getCVolumeSerialNumber():
  CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1]
  # print(CVolumeSerialNumber)
  if CVolumeSerialNumber:
    return str(CVolumeSerialNumber)
  else:
    return 0
 
def DesEncrypt(str):
  k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5)
  encryptStr = k.encrypt(str)
  string = base64.b64encode(encryptStr)
  # print(string)
  return string # 转base64编码返回
 
def DesDecrypt(string):
  string = base64.b64decode(string)
  k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5)
  decryptStr = k.decrypt(string)
  # print(decryptStr)
  return decryptStr
 
Des_Key = "12345678" # Key
Des_IV = "12345678" # 自定IV向量
def Register():
  if os.path.isfile('conf.bin'):
    with open('conf.bin', 'rb') as fp:
      key = a2b_hex(fp.read())
      print(key)
    serialnumber = getCVolumeSerialNumber()
    decryptstr = DesDecrypt(key).decode('utf8')
    print(decryptstr)
    if serialnumber in decryptstr:
      if 'Buy' in decryptstr:
        print('>> Buy')
        print(">> 验证完成")
        return 1
      elif 'Trial' in decryptstr:
        print('>> Trial')
        return 2
  rand = str(random.randrange(1, 1000))
  serialnumber = getCVolumeSerialNumber() + rand
  print(serialnumber)
  encryptstr = DesEncrypt(serialnumber).decode('utf8')
  print(">> 序列号:", encryptstr)
  while True:
    key = input(">> 验证码:")
    try:
      decryptstr = DesDecrypt(key.encode('utf8')).decode('utf8')
      print(decryptstr)
      if serialnumber in decryptstr:
        if 'Buy' in decryptstr:
          print('>> Buy')
          with open('conf.bin', 'wb') as fp:
            fp.write(b2a_hex(key.encode('utf8')))
            print(">> 验证完成")
          return 1
        elif 'Trial' in decryptstr:
          print('>> Trial')
          return 2
    except Exception as e:
      print(e)
      print(">> 输入错误")
      continue

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Python利用memory_profiler实现内存分析

    Python利用memory_profiler实现内存分析

    memory_profiler是第三方模块,用于监视进程的内存消耗以及python程序内存消耗的逐行分析。本文将利用memory_profiler实现内存分析,需要的可以参考一下
    2022-10-10
  • Python实现读取Excel表数据并转为JSON格式文件

    Python实现读取Excel表数据并转为JSON格式文件

    这篇文章主要为大家详细介绍了Python如何使用pandas库读取Excel表并将其转为JSON格式文件,文中的示例代码讲解详细,感兴趣的小伙伴可以参考下
    2025-04-04
  • python如何将mat文件转为png

    python如何将mat文件转为png

    这篇文章主要介绍了python如何将mat文件转为png,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • matplotlib绘制多个子图(subplot)的方法

    matplotlib绘制多个子图(subplot)的方法

    这篇文章主要介绍了matplotlib绘制多个子图(subplot)的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 简述:我为什么选择Python而不是Matlab和R语言

    简述:我为什么选择Python而不是Matlab和R语言

    这篇文章主要介绍了简述:我为什么选择Python而不是Matlab和R语言,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • OpenCV2学习笔记之视频流读取与处理

    OpenCV2学习笔记之视频流读取与处理

    为OpenCV是搞计算机视觉必须要掌握的基础,这篇文章主要给大家介绍了关于OpenCV2学习笔记之视频流读取与处理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-01-01
  • Python 中将二进制转换为整数的多种方法

    Python 中将二进制转换为整数的多种方法

    这篇文章主要介绍了Python 中将二进制转换为整数,Python 中提供了多种方式将二进制字符串转换为整数,其中包括使用 int() 函数、使用二进制前缀和使用 eval() 函数,本文通过实例代码讲解的非常详细,需要的朋友可以参考下
    2023-05-05
  • python遍历文件夹找出文件夹后缀为py的文件方法

    python遍历文件夹找出文件夹后缀为py的文件方法

    今天小编就为大家分享一篇python遍历文件夹找出文件夹后缀为py的文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python实现基于C/S架构的聊天室功能详解

    Python实现基于C/S架构的聊天室功能详解

    这篇文章主要介绍了Python实现基于C/S架构的聊天室功能,结合实例形式详细分析了Python实现聊天室功能的客户端与服务器端相关实现技巧与操作注意事项,需要的朋友可以参考下
    2018-07-07
  • 浅谈keras中的Merge层(实现层的相加、相减、相乘实例)

    浅谈keras中的Merge层(实现层的相加、相减、相乘实例)

    这篇文章主要介绍了浅谈keras中的Merge层(实现层的相加、相减、相乘实例),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05

最新评论