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中as用法实例分析
Apr 30 Python
python制作websocket服务器实例分享
Nov 20 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Python从Excel中读取日期一列的方法
Nov 28 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
Jul 15 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
使用 Python 快速实现 HTTP 和 FTP 服务器的方法
Jul 22 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
python GUI库图形界面开发之PyQt5打印控件QPrinter详细使用方法与实例
Feb 28 Python
python实现黄金分割法的示例代码
Apr 28 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编程中字符串处理的5个技巧小结
2007/11/13 PHP
Apache+php+mysql在windows下的安装与配置图解(最新版)
2008/11/30 PHP
简单的php中文转拼音的实现代码
2014/02/11 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
ThinkPHP表单自动提交验证实例教程
2014/07/18 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
纯js实现的论坛常用的运行代码的效果
2008/07/15 Javascript
三种取消选中单选框radio的方法
2014/09/09 Javascript
Jquery对象和Dom对象的区别分析
2014/11/20 Javascript
JavaScript使用shift方法移除素组第一个元素实例分析
2015/04/06 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
简单对比分析JavaScript中的apply,call与this的使用
2015/12/04 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
window下eclipse安装python插件教程
2017/04/24 Python
python机器人行走步数问题的解决
2018/01/29 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
python3读取autocad图形文件.py实例
2020/06/05 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python os库常用操作代码汇总
2020/11/03 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
Canvas系列之滤镜效果
2019/02/12 HTML / CSS
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
技术人员面试提纲
2013/11/28 职场文书
小学生新学期寄语
2014/01/19 职场文书
乡镇保密工作责任书
2014/07/28 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
公司要求试用期员工提交“述职报告”,该怎么写?
2019/07/17 职场文书
MySQL 数据类型选择原则
2021/05/27 MySQL