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 相关文章推荐
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python3使用urllib模块制作网络爬虫
Apr 08 Python
使用Python判断质数(素数)的简单方法讲解
May 05 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
python实现转盘效果 python实现轮盘抽奖游戏
Jan 22 Python
Python multiprocessing多进程原理与应用示例
Feb 28 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
Pycharm配置PyQt5环境的教程
Apr 02 Python
Python接口测试文件上传实例解析
May 22 Python
pytorch实现线性回归以及多元回归
Apr 11 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中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
PHP防止post重复提交数据的简单例子
2014/06/07 PHP
php实现字符串翻转的方法
2015/03/27 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
Js sort排序使用方法
2011/10/17 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
ECMAScript5(ES5)中bind方法使用小结
2015/05/07 Javascript
jQuery实现自动切换播放的经典滑动门效果
2015/09/12 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
echarts实现获取datazoom的起始值(包括x轴和y轴)
2020/07/20 Javascript
[42:56]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
详解Python中列表和元祖的使用方法
2015/04/25 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
python线程池threadpool使用篇
2018/04/27 Python
Sanic框架安装与简单入门示例
2018/07/16 Python
python pycharm最新版本激活码(永久有效)附python安装教程
2020/09/18 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
美国领先的精品家居照明和装饰产品在线零售商:LightsOnline.com
2018/01/23 全球购物
T3官网:头发造型工具
2019/12/26 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
什么是serialVersionUID
2016/03/04 面试题
作为网站管理者应当如何防范XSS
2014/08/16 面试题
室内设计实习自我鉴定
2013/09/25 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
关于国庆节的演讲稿
2014/09/05 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
学籍证明模板
2015/06/18 职场文书
2015年小学总务工作总结
2015/07/21 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书