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中%r和%s的详解及区别
Mar 16 Python
python使用xpath中遇到:到底是什么?
Jan 04 Python
python:print格式化输出到文件的实例
May 14 Python
对numpy中向量式三目运算符详解
Oct 31 Python
NumPy中的维度Axis详解
Nov 26 Python
pytorch GAN伪造手写体mnist数据集方式
Jan 10 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
哪种Python框架适合你?简单介绍几种主流Python框架
Aug 04 Python
利用Python实现Json序列化库的方法步骤
Sep 09 Python
互斥锁解决 Python 中多线程共享全局变量的问题(推荐)
Sep 28 Python
python前后端自定义分页器
Apr 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编程中八种常见的文件操作方式
2006/11/19 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
非常有用的40款jQuery 插件推荐(系列二)
2011/12/25 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
js子页面获取父页面数据示例
2014/05/15 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
javascript Promise简单学习使用方法小结
2016/05/17 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
JavaScript获取某一天所在的星期
2019/09/05 Javascript
layui富文本编辑器前端无法取值的解决方法
2019/09/18 Javascript
详解如何在JS代码中消灭for循环
2019/12/11 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
python生成n个元素的全组合方法
2018/11/13 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python多进程写入同一文件的方法
2019/01/14 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
利用python在大量数据文件下删除某一行的例子
2019/08/21 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
西安交大自主招生自荐信
2014/01/27 职场文书
晨会主持词
2014/03/17 职场文书
高中生逃课检讨书
2014/10/10 职场文书
写给同事的离职感言
2015/08/04 职场文书
导游词之南京中山陵
2019/11/27 职场文书