一种Python工具的License授权机制

本文介绍了如何为Python工具创建一个简单的License授权机制,包括生成包含MAC地址和有效期的加密License文件、License文件的验证以及使用Cython进行Python代码加密,以保护工具不被随意修改和传播。
摘要由CSDN通过智能技术生成

       作为一种流行语言,在不同的应用领域,利用Python书写的工具越来越多。Python具有应用领域广泛、简单易学、功能强大等特点,但是在很多场合它也具有一些较难克服的缺点:

  1. 代码明文,较难加密。
  2. 由于#1,python脚本很难应用于收费工具领域。

 

       那么如果我想对一个Python工具的使用加以限制,有没有什么方法可以实现呢?本文提供一种简易的License授权机制实现思路,它主要包括如下几部分内容:

  1. 如何生成一个加密的License文件。
  2. 如何做License内容核验。
  3. 如何加密Python代码。

 

       其主要流程逻辑如下:

图1 License授权机制流程

 

一、引题

       我写了一个python脚本eda.py,内容如下。

#!/usr/bin/env python3



def function():

    print('I am an EDA tool!')



function()

 

       我在Linux操作系统中执行了这个程序,成功了,输出如下。

[liyanqing@ic001 license]$ ./eda.py

I am an EDA tool!

 

       我决定把这个“牛逼”的脚本分享给别人使用。但是主要的障碍在于,我不希望别人随便传播这个脚本,不希望别人无限期使用这个脚本,不希望别人学会这几行代码的写法,于是我决定对它加上License限制。

 

二、生成License文件

       工具License常在如下方面对工具的使用加以限制:

  1. 使用的MAC地址。(防止工具被随意拷贝使用)
  2. 使用期限。(过期失效)

 

       更加复杂的应用场景,还可以对License使用数量、用户列表、工具feature等因素加以限制。

       按照这个需求,我们要设计一个简化的License文件,它需要包含以下内容:

  1. MAC :允许工具启动的机器的MAC地址。
  2. Date :工具有效期。
  3. Sign :签名,对以上明文内容的加密,用作内容核验。

 

       首先,我们可以用下面的Linux指令获取机器的MAC地址。

[liyanqing@ic001 license]$ ifconfig -a

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 192.168.246.128  netmask 255.255.255.0  broadcast 192.168.246.255

        inet6 fe80::7e02:97:820d:1bd3  prefixlen 64  scopeid 0x20<link>

        ether 00:0c:29:4a:d4:6c  txqueuelen 1000  (Ethernet)

        RX packets 1491722  bytes 1542769755 (1.4 GiB)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 533500  bytes 32951033 (31.4 MiB)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值