用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
网友评论