使用文档
国家商用密码算法(国密SM),Python桌面应用,一机一码,授权许可模块
文档: https://smoky.jiangbaihe.top
Pypi: https://pypi.org/project/smoky
购买方式
合理的物质激励能维持我们将这个项目维护下去,您可以通过下面的方式购买Smoky:
唯一销售渠道: 白河工作室
Tip
购买成功后,您可以享受到:
- 有效期内免费更新
- 加入内部交流群
- 优先获得技术支持
- 优先实现您的改进建议
简介
Smoky的名字灵感来源于国密算法(sm)、一机一码(one key)、以及英文单词Okay;
是一款用于Python程序的扩展模块,可为您的Python应用增加授权许可功能,保护您的应用及权益;
采用国家商用密码算法(国密SM),相较市面常见算法,拥有更高的性能和安全性。
特性
- 简单易用:集成方式极简,自动生成代码,方便快捷地为您的Python应用集成授权许可功能。
- 支持国产:使用国家商用密码算法(国密SM),包含对称和非对称以及摘要算法。
- 安全高效:大量评测报道,国密算法比市面常用的AES、RSA、SHA等算法性能更好、安全性更高。
- 界面美观:使用QT开发的用户界面,漂亮的样式和动画,提升用户观感。
- 灵活授权:可选绑定机器码,支持一机一码和多机一码、精确到秒的许可证有效期、自定义版本名称和用户名称。
- 反作弊:内置反作弊机制,包括签名校验、时间校验、文件校验等。
- 操作系统:支持Windows7及以上的64位系统。
- Python版本:支持Python3.8 - 3.11。
Preview
目前为本地版,网络版开发中,敬请期待……
流程
graph LR
程序入口 --> 校验许可证;
校验许可证 --> |成功| 正常运行;
校验许可证 --> |失败| 认证弹窗;
认证弹窗 --> |取消| 退出程序;
认证弹窗 --> 复制机器码;
复制机器码 --> |发送给管理员| 生成许可证;
生成许可证 --> |发送给用户| 导入许可证;
导入许可证 --> 校验许可证;
集成Smoky到您的应用
安装扩展模块
要为您的应用集成Smoky,先在虚拟环境中安装:
生成入口代码
在许可证管理器中生成代码,将生成的代码写到项目入口的py文件中,并做适当修改:
体验模块功能
运行您的项目,即可看到授权认证窗口:
在许可证管理器中,生成对应的许可证:
导入或粘贴许可证,即可完成授权认证:
发布您的应用并保护源码
通过上面的步骤,相信您了解Smoky的基本用法,但在接下来的使用中,还面临一个问题:
Danger
此时您的Python源码是明文可见的,任何人都可以随意修改,甚至删掉Smoky部分的调用,让授权许可功能失效。
因此我们需要将源码保护起来,让用户不能随意篡改代码内容。
Pyinstaller打包exe
这是最简单的方案,通过将源码和Python环境集成打包成exe文件,让源码不再是明文,且用户不需要安装和配置Python环境,只需要像传统应用那样双击exe文件即可运行。
同时它也是兼容性问题最少的第三方打包方案,是的,Python官方并没有提供打包可执行文件的功能,所有的打包方案都由第三方开发,并都存在兼容性问题。
但这也是安全性最弱的打包方案,在3.10之前版本的Python,打包出来的exe,很容易通过技术手段反编译成源码,虽然从3.10开始反编译难度大了很多,但仍有反编译的可能。
一般的使用方法是这样:
# 在Python环境中安装Pyinstaller打包工具
pip install pyinstaller
# 打包exe,假设main.py是您的入口文件
pyinstaller main.py -F
Note
打包失败或运行exe出现闪退等现象,通常跟项目逻辑、资源文件、依赖兼容性等有关
这类不属于Smoky的问题,我们可以提供有偿技术支持。
Nuitka编译打包exe(推荐)
与上面的Pyinstaller很相似,但原理完全不同,
Nuitka基于Cython,将Python源码转换为C语言的源码,再由C语言源码编译为PYD(Python DLL)动态链接库,并集成Python环境。
这样打包出来的exe经过了C语言的转码编译,已经完全不可能再反编译回源码,从而极大增加破解难度。
但相比Pyinstaller,Nuitka的缺点也很明显:
- 编译时间长
- 兼容性问题多得多
一般的使用方法是这样:
# 在Python环境中安装Nuitka打包工具
pip install nuitka
# 打包exe,假设main.py是您的入口文件
nuitka main.py ^
--standalone ^
--enable-plugin=pyside6 --include-package-data=PySide6.translations ^
--output-dir=dist
Note
打包失败或运行exe出现闪退等现象,通常跟项目逻辑、资源文件、依赖兼容性等有关
这类不属于Smoky的问题,我们可以提供有偿技术支持。
其他方式
保护源码的方案有很多,例如混淆、打包、编译PYD、加壳等,实际情况可能只采纳其中一部分、或多个方案组合使用,不再赘述。
结语
世上没有不透风的墙,也没有不能破解的软件,即便是像微软、Adobe这样的行业巨头们的产品一样存在盗版。
加密的措施只能增大破解难度,当破解的成本远大于购买软件的成本时,加密保护的目的就算达到了。
比方说花钱请人破解要几千、几万,买正版只要几十、几百,该不会有人闲的蛋疼去搞破解吧……
