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 FTP操作类代码分享
May 13 Python
Python中比较特别的除法运算和幂运算介绍
Apr 05 Python
简单介绍Python中的floor()方法
May 15 Python
Python实现线程池代码分享
Jun 21 Python
Python实现二叉搜索树
Feb 03 Python
Python实现二分查找与bisect模块详解
Jan 13 Python
Python分支结构(switch)操作简介
Jan 17 Python
Python 将pdf转成图片的方法
Apr 23 Python
pytorch 预训练层的使用方法
Aug 20 Python
Python的条件锁与事件共享详解
Sep 12 Python
使用Python的networkx绘制精美网络图教程
Nov 21 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
Sep 15 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
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境
2009/04/25 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
php ios推送(代码)
2013/07/01 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
AngularJS入门教程之ng-class 指令用法
2016/08/01 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
2016/08/08 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
2017/08/15 Javascript
Vue组件实例间的直接访问实现代码
2017/08/20 Javascript
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
原生js+css实现tab切换功能
2020/09/17 Javascript
Python中的XML库4Suite Server的介绍
2015/04/14 Python
python下载图片实现方法(超简单)
2017/07/21 Python
Python八皇后问题解答过程详解
2019/07/29 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
英国高档时尚男装购物网站:MR PORTER
2016/08/09 全球购物
户外拓展活动方案
2014/02/11 职场文书
关于做家务的心得体会
2016/01/23 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
react合成事件与原生事件的相关理解
2021/05/13 Javascript
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL