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 相关文章推荐
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Python实现进程同步和通信的方法
Jan 02 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Python assert关键字原理及实例解析
Dec 13 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
Jun 03 Python
几款好用的python工具库(小结)
Oct 20 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python中全局变量和局部变量的理解与区别
Feb 07 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中addslashes与mysql_escape_string的区别分析
2016/04/25 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
js常用代码段整理
2011/11/30 Javascript
js获得页面的高度和宽度的方法
2014/02/23 Javascript
为什么Node.js会这么火呢?Node.js流行的原因
2014/12/01 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
2015/06/09 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
ES6下React组件的写法示例代码
2017/05/04 Javascript
微信小程序获取用户openId的实现方法
2017/05/23 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
2017/08/20 Javascript
jQuery滑动效果实现方法分析
2018/09/05 jQuery
Vue中key的作用示例代码详解
2020/06/10 Javascript
Openlayers+EasyUI Tree动态实现图层控制
2020/09/28 Javascript
利用python批量检查网站的可用性
2016/09/09 Python
PyTorch读取Cifar数据集并显示图片的实例讲解
2018/07/27 Python
Python控制键盘鼠标pynput的详细用法
2019/01/28 Python
python手写均值滤波
2020/02/19 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
HTML5图片预览实例分享
2014/06/04 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
租房协议书范本
2014/04/09 职场文书
学生安全承诺书
2014/05/22 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
法院四风对照检查材料思想汇报
2014/10/06 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
护士求职简历自我评价
2015/03/10 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
党支部培养考察意见
2015/06/02 职场文书
婚育证明样本
2015/06/16 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书