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实现分析apache和nginx日志文件并输出访客ip列表的方法
Apr 04 Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 Python
PyQt5每天必学之事件与信号
Apr 20 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
Python列表与元组的异同详解
Jul 02 Python
利用python-docx模块写批量生日邀请函
Aug 26 Python
Python多线程及其基本使用方法实例分析
Oct 29 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python如何将函数值赋给变量
Apr 28 Python
keras的load_model实现加载含有参数的自定义模型
Jun 22 Python
python 绘制国旗的示例
Sep 27 Python
Pycharm快捷键配置详细整理
Oct 13 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开发规范
2018/02/05 PHP
Yii框架中使用PHPExcel的方法分析
2019/07/25 PHP
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
jQuery向上遍历DOM树之parents(),parent(),closest()之间的区别
2013/12/02 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
Vue数字输入框组件使用方法详解
2020/02/10 Javascript
vuex 多模块时 模块内部的mutation和action的调用方式
2020/07/24 Javascript
javascript前端和后台进行数据交互方法示例
2020/08/07 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
[01:02:00]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第三场 1月24日
2021/03/11 DOTA
Python 实现 贪吃蛇大作战 代码分享
2016/09/07 Python
ubuntu系统下 python链接mysql数据库的方法
2017/01/09 Python
Python tkinter事件高级用法实例
2018/01/31 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python 模拟贷款卡号生成规则过程解析
2019/08/30 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
澳大利亚在线家具店:Luxo Living
2019/03/24 全球购物
皇家阿尔伯特英国官方商店:Royal Albert骨瓷
2019/03/25 全球购物
沙特阿拉伯电子产品和家用电器购物网站:Black Box
2019/07/24 全球购物
应届生法律求职信
2013/10/22 职场文书
列车长先进事迹材料
2014/01/25 职场文书
初中同学聚会感言
2014/02/11 职场文书
推荐信怎么写
2014/05/09 职场文书
公司市场专员岗位职责
2014/06/29 职场文书
乡镇平安建设汇报材料
2014/08/25 职场文书
物流管理专业推荐信
2014/09/06 职场文书
周一给客户的问候语
2015/11/10 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android