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中的数学运算操作符使用进阶
Jun 20 Python
python生成圆形图片的方法
Mar 25 Python
python 同时运行多个程序的实例
Jan 07 Python
python中yield的用法详解——最简单,最清晰的解释
Apr 04 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
python二进制文件的转译详解
Jul 03 Python
python Django的web开发实例(入门)
Jul 31 Python
python 实现矩阵按对角线打印
Nov 29 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
Pytorch释放显存占用方式
Jan 13 Python
Python如何操作docker redis过程解析
Aug 10 Python
解决Python字典查找报Keyerror的问题
May 26 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/11/29 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
php简单创建zip压缩文件的方法
2016/04/30 PHP
无需数据库在线投票调查php代码
2016/07/20 PHP
js GridView 实现自动计算操作代码
2009/03/25 Javascript
如何让easyui gridview 宽度自适应窗口改变及fitColumns应用
2013/01/25 Javascript
Nodejs中自定义事件实例
2014/06/20 NodeJs
jQuery实现单击和鼠标感应事件
2015/02/01 Javascript
JS中使用正则表达式g模式和非g模式的区别
2017/04/01 Javascript
vuejs如何配置less
2017/04/25 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
详解Vue中Axios封装API接口的思路及方法
2020/10/10 Javascript
JavaScript实现网页留言板功能
2020/11/23 Javascript
[15:23]教你分分钟做大人:虚空假面
2014/10/30 DOTA
[00:48]DOTA2国际邀请赛公开赛报名开始 扫码开启逐梦之旅
2018/06/06 DOTA
Python爬虫模拟登录带验证码网站
2016/01/22 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
在Python中调用Ping命令,批量IP的方法
2019/01/26 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
在Django下创建项目以及设置settings.py教程
2019/12/03 Python
pycharm 2020 1.1的安装流程
2020/09/29 Python
python切割图片的示例
2020/11/12 Python
美国领先的家居装饰和礼品商店:Kirkland’s
2017/01/30 全球购物
英国高街电视:High Street TV
2018/05/22 全球购物
德国黑胶唱片、街头服装及运动鞋网上商店:HHV
2018/08/24 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
干部培训自我鉴定
2014/01/22 职场文书
植物生产学专业求职信
2014/08/08 职场文书
自查自纠工作总结
2014/10/15 职场文书
2014年个人总结范文
2015/03/09 职场文书
2015民办小学年度工作总结
2015/05/26 职场文书
浅谈怎么给Python添加类型标注
2021/06/08 Python