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


Posted in Python onJanuary 08, 2020

这篇文章主要介绍了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 Des加密解密如何实现软件注册码机器码

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

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

Python 相关文章推荐
Python基于smtplib实现异步发送邮件服务
May 28 Python
Python的Django框架中settings文件的部署建议
May 30 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
Python中的TCP socket写法示例
May 11 Python
PYQT5设置textEdit自动滚屏的方法
Jun 14 Python
Python利用神经网络解决非线性回归问题实例详解
Jul 19 Python
Django框架HttpRequest对象用法实例分析
Nov 01 Python
pytorch实现mnist数据集的图像可视化及保存
Jan 14 Python
基于python实现获取网页图片过程解析
May 11 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
python urllib和urllib3知识点总结
Feb 08 Python
python析构函数用法及注意事项
Jun 22 Python
Pytorch技巧:DataLoader的collate_fn参数使用详解
Jan 08 #Python
Pytorch DataLoader 变长数据处理方式
Jan 08 #Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 #Python
使用pytorch和torchtext进行文本分类的实例
Jan 08 #Python
python爬虫爬取监控教务系统的思路详解
Jan 08 #Python
Pytorch实现基于CharRNN的文本分类与生成示例
Jan 08 #Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
Jan 08 #Python
You might like
PHP IDE PHPStorm配置支持友好Laravel代码提示方法
2015/05/12 PHP
javascript while语句和do while语句的区别分析
2007/12/08 Javascript
一个简单的JavaScript 日期计算算法
2009/09/11 Javascript
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
原生js结合html5制作小飞龙的简易跳球
2015/03/30 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
js实现图片轮播效果
2015/12/19 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
angular之ng-template模板加载
2017/11/09 Javascript
Vue 中批量下载文件并打包的示例代码
2017/11/20 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
Python基于tkinter模块实现的改名小工具示例
2017/07/27 Python
Python内建函数之raw_input()与input()代码解析
2017/10/26 Python
python 通过xml获取测试节点和属性的实例
2018/03/31 Python
Python使用gRPC传输协议教程
2018/10/16 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
tensorflow 获取所有variable或tensor的name示例
2020/01/04 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
使用pytorch实现论文中的unet网络
2020/06/24 Python
如何用Matplotlib 画三维图的示例代码
2020/07/28 Python
python 密码学示例——凯撒密码的实现
2020/09/21 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
使用HTML5技术开发一个属于自己的超酷颜色选择器
2013/09/22 HTML / CSS
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
波兰办公用品和学校用品在线商店:Dlabiura24.pl
2020/11/18 全球购物
C语言笔试题回忆
2015/04/02 面试题
工商管理专业毕业生求职信
2014/05/26 职场文书
学生会辞职信
2015/03/02 职场文书
2015年度保密工作总结
2015/04/24 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
springboot如何初始化执行sql语句
2021/06/22 Java/Android
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js