Python学习

苦心研究python非在线软件授权认证,教你如何保护自己的知识产

2019-07-23  本文已影响0人  星星课

用python编写出来的程序可以通过pyinstaller打包成exe可执行文件,从而广泛的发布和分享,程序往往是我们花费很大心血写出来的,具有一定的商用价值,那么如何保护自己的知识产权呢?无非就是在使用前加上授权验证,通过就运行,不通过就退出程序,验证分为在线和离线两种,本篇文章介绍的是离线授权验证,这种验证的好处是不用再额外花钱买服务器了,也比较简单。

首先说下我个人对离线授权的理解:软件不需要从服务器获得授权信息,只需要检查本地文件即可确定使用者是否被授权。

接下来我们先说下基本思想:1.客户端生成待授权的文件;2.使用者将待授权文件发送给软件作者;3.软件作者对待授权文件进行授权;4.软件作者将已授权的文件发送给使用者;5.使用者可以正常使用软件。

那么,今天我们先来说所第一步:如何生成待授权文件

如图:

代码及注释在下边:


import base64

import hashlib

import datetime

import wmi

from os import getcwd

def create_register_file():

lianjie_fuhao=“woshilianjiefuhao”

#获得主板序列号

bios_num = wmi.WMI().Win32_BaseBoard()[0].SerialNumber.strip()

#获取当前时间字符串

cur_time = datetime.datetime.now().strftime('%Y-%m-%d')

#填充最原始的字符串(流程图的第二步)

t_str = '{}>>{cur_time}>>{cur_time}>>{cur_time}'.format(

bios_num, cur_time=cur_time)

#先按照utg-8的编码类型编码为二进制

content = t_str.encode('utf-8')

#生成base64字符串(第3步的前半部分)

content = base64.b64encode(content)

#计算base64字串的MD5值(第3步的后半部分)

b64_str = content.decode('utf-8')

md5 = hashlib.md5()

md5.update(content)

md5_str = md5.hexdigest()

#将base64字串通过连接符号和MD5字串进行拼接(连接符号随便定义都行,目的是

#为了防止被人太顺利的破解我们加密方法)

content = '{}{}{}'.format(b64_str, lianjie_fuhao, md5_str)

#再次进行base64编码

content = content.encode('utf-8')

content = base64.b64encode(content)

#写入到程序目录下

baocun_lujing="{}\\授权文件.txt".format(getcwd())

with open(baocun_lujing, 'wb') as f:

f.write(content)

if __name__ == "__main__":

#创建待授权文件

create_register_file()

print("待授权文件已创建")


至此,我们的包含待授权电脑、日期文件就被我们生成了,下一步就是对待授权文件进行授权,我们随后再说。(第一次在简书写文章,不知道怎么插入代码了,先这样凑活着看吧。。。。)


我的头条账号:跟我一起学python

上一篇下一篇

猜你喜欢

热点阅读