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 相关文章推荐
tensorflow识别自己手写数字
Mar 14 Python
python 多维切片之冒号和三个点的用法介绍
Apr 19 Python
完美解决安装完tensorflow后pip无法使用的问题
Jun 11 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
pandas 空的dataframe 插入列名的示例
Oct 30 Python
Python docx库用法示例分析
Feb 16 Python
Python生成rsa密钥对操作示例
Apr 26 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
python如何保证输入键入数字的方法
Aug 23 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
python将图片转为矢量图的方法步骤
Mar 30 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 $_SERVER当前完整url的写法
2009/11/12 PHP
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
php调用Google translate_tts api实现代码
2013/08/07 PHP
PHP中使用jQuery+Ajax实现分页查询多功能操作(示例讲解)
2017/09/17 PHP
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
2020/05/26 PHP
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
如何解决谷歌浏览器下jquery无法获取图片的尺寸
2015/09/10 Javascript
jQuery 3.0中存在问题及解决办法
2016/07/15 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
Vue.js中数组变动的检测详解
2016/10/12 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
Python聚类算法之DBSACN实例分析
2015/11/20 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python线性方程组求解运算示例
2018/01/17 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python实现打砖块小游戏代码实例
2019/05/18 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
Python Celery多队列配置代码实例
2019/11/22 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
第二层交换机和路由器的区别?第三层交换机和路由器的区别?
2013/05/23 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
绝对经典成功的大学生推荐信
2013/11/08 职场文书
大门门卫岗位职责
2013/11/30 职场文书
学习决心书
2014/03/11 职场文书
群众路线教育实践活动个人对照检查材料思想汇报(社区班子)
2014/10/06 职场文书
教导主任个人总结
2015/03/03 职场文书
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js