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数据类型详解(一)字符串
May 08 Python
在python的类中动态添加属性与生成对象
Sep 17 Python
Python中Django 后台自定义表单控件
Mar 28 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Django使用Jinja2模板引擎的示例代码
Aug 09 Python
python之MSE、MAE、RMSE的使用
Feb 24 Python
Python3批量创建Crowd用户并分配组
May 20 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
详解用 python-docx 创建浮动图片
Jan 24 Python
Python 实现劳拉游戏的实例代码(四连环、重力四子棋)
Mar 03 Python
利用Python实时获取steam特惠游戏数据
Jun 25 Python
python中validators库的使用方法详解
Sep 23 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数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php 中文字符串首字母的获取函数分享
2013/11/04 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
php生成圆角图片的方法
2015/04/07 PHP
php中分页及SqlHelper类用法实例
2017/01/12 PHP
PHP实现 APP端微信支付功能
2018/06/22 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
xss文件页面内容读取(解决)
2010/11/28 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
json数据处理及数据绑定
2017/01/25 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
2017/06/09 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
解决Vue开发中对话框被遮罩层挡住的问题
2018/11/26 Javascript
浅谈JS的原型和继承
2019/05/08 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
python 移除字符串尾部的数字方法
2018/07/17 Python
selenium处理元素定位点击无效问题
2019/06/12 Python
python web框架 django wsgi原理解析
2019/08/20 Python
Python爬虫库BeautifulSoup的介绍与简单使用实例
2020/01/25 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
python中xlutils库用法浅析
2020/12/29 Python
处理textarea中的换行和空格
2019/12/12 HTML / CSS
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
销售简历自我评价
2014/01/24 职场文书
小班重阳节活动方案
2014/02/08 职场文书
司法建议书范文
2014/05/13 职场文书
优秀纪检干部材料
2014/08/27 职场文书
公司周年庆典标语
2014/10/07 职场文书
详解Python内置模块Collections
2022/03/22 Python