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数组的处理代码
Jan 04 Python
python实现从字符串中找出字符1的位置以及个数的方法
Aug 25 Python
Python中多线程及程序锁浅析
Jan 21 Python
Python中集合类型(set)学习小结
Jan 28 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python爬虫超时的处理的实例
Dec 19 Python
python实现剪切功能
Jan 23 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
Pytorch 保存模型生成图片方式
Jan 10 Python
python GUI库图形界面开发之PyQt5布局控件QVBoxLayout详细使用方法与实例
Mar 06 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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 foreach循环中使用引用的问题
2013/11/06 PHP
ThinkPHP CURD方法之order方法详解
2014/06/18 PHP
PHP编写简单的App接口
2016/08/28 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
juqery 学习之三 选择器 简单 内容
2010/11/25 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
jQuery实现简单的列表式导航菜单效果代码
2015/08/31 Javascript
JavaScript控制浏览器全屏及各种浏览器全屏模式的方法、属性和事件
2015/12/20 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
2016/05/30 Javascript
解决wx.onMenuShareTimeline出现的问题
2016/08/16 Javascript
通过AngularJS实现图片上传及缩略图展示示例
2017/01/03 Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
2017/07/06 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
Angular.js实现获取验证码倒计时60秒按钮的简单方法
2017/10/18 Javascript
vue使用iframe嵌入网页的示例代码
2020/06/09 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
layui的面包屑或者表单不显示的解决方法
2019/09/05 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
Python中有趣在__call__函数
2015/06/21 Python
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Python是怎样处理json模块的
2020/07/16 Python
给交警的表扬信
2014/01/12 职场文书
《赵州桥》教学反思
2014/02/17 职场文书
母亲节感恩寄语
2014/02/21 职场文书
小学三年级学生评语
2014/04/22 职场文书
超市工作总结范文2014
2014/12/19 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
Win11 引入 Windows 365 云操作系统,适应疫情期间混合办公模式:启动时直接登录、模
2022/04/06 数码科技