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的Lambda函数与排序
Oct 25 Python
Python通过future处理并发问题
Oct 17 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
python实现图片文件批量重命名
Mar 23 Python
Python中循环后使用list.append()数据被覆盖问题的解决
Jul 01 Python
pytorch 求网络模型参数实例
Dec 30 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
在keras中对单一输入图像进行预测并返回预测结果操作
Jul 09 Python
python 偷懒技巧——使用 keyboard 录制键盘事件
Sep 21 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
Python爬虫基础之爬虫的分类知识总结
May 13 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 Undefined index报错的修复方法
2011/07/17 PHP
php文件上传的简单实例
2013/10/19 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
地址栏传递中文参数乱码在js里用escape转码
2013/08/28 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
jQuery使用toggleClass方法动态添加删除Class样式的方法
2015/03/26 Javascript
浅析JavaScript中命名空间namespace模式
2016/06/22 Javascript
Bootstrap基本组件学习笔记之导航(10)
2016/12/07 Javascript
JS 实现 ajax 异步浏览器兼容问题
2017/01/21 Javascript
浅谈js中同名函数和同名变量的执行问题
2017/02/12 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue.js用法详解
2017/11/13 Javascript
Bootstrap实现翻页效果
2017/11/27 Javascript
AngularJS与后端php的数据交互方法
2018/08/13 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
分享5个好用的javascript文件上传插件
2018/09/16 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
王纯业的Python学习笔记 下载
2007/02/10 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
Python中的引用和拷贝浅析
2014/11/22 Python
Python字符串处理函数简明总结
2015/04/13 Python
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
Topshop法国官网:英国快速时尚品牌
2018/04/08 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
道路交通安全实施方案
2014/03/12 职场文书
校庆活动方案
2014/03/31 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
个人债务授权委托书
2014/10/17 职场文书
小学语文教学随笔
2015/08/14 职场文书