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 相关文章推荐
PyChar学习教程之自定义文件与代码模板详解
Jul 17 Python
Python2实现的LED大数字显示效果示例
Sep 04 Python
Python3.6简单操作Mysql数据库
Sep 12 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
pygame游戏之旅 游戏中添加显示文字
Nov 20 Python
使用Template格式化Python字符串的方法
Jan 22 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
python将unicode和str互相转化的实现
May 11 Python
python变量的作用域是什么
May 26 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 Python
Python接口自动化测试的实现
Aug 28 Python
利用Python实现模拟登录知乎
May 25 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实现文件下载断点续传详解
2014/10/15 PHP
thinkphp框架下实现登录、注册、找回密码功能
2016/04/06 PHP
CodeIgniter集成smarty的方法详解
2016/05/26 PHP
解决Laravel5.2 Auth认证退出失效的问题
2019/10/14 PHP
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
javascript json2 使用方法
2010/03/16 Javascript
WEB高性能开发之疯狂的HTML压缩
2010/06/19 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
Angularjs 创建可复用组件实例代码
2016/10/09 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
详解Vue.use自定义自己的全局组件
2017/06/14 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
javascript获取图片的top N主色值方法详解
2018/01/26 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
详解关于Vue单元测试的几个坑
2020/04/26 Javascript
js观察者模式的弹幕案例
2020/11/23 Javascript
JavaScript实现简单动态表格
2020/12/02 Javascript
Django实现的自定义访问日志模块示例
2017/06/23 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
Django 使用Ajax进行前后台交互的示例讲解
2018/05/28 Python
详解Python最长公共子串和最长公共子序列的实现
2018/07/07 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
python清除字符串前后空格函数的方法
2018/10/21 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
python f-string式格式化听语音流程讲解
2019/06/18 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
python Yaml、Json、Dict之间的转化
2020/10/19 Python
《黄河颂》教学反思
2014/02/07 职场文书
春季运动会加油词
2015/07/18 职场文书
《三国志》赏析
2019/08/27 职场文书