Python code 保护方式(一)

Python code 保护(一)

(一)初衷

  Python优点很多,比如简单易学,代码量少,能做的事很多等等,和其他语言一样,Pyhton也有一些不可掩盖的缺点,版本不兼容,运行效率不高等等。

  其中一个缺点,让不少开发者头疼不已,由于Python解释器开源的关系,导致Python代码无法加密,代码的安全性得不到保障。

(二)加密方式

  主流的加密方式主要有使用字节码、创建可执行文件、使用Cython和代码混肴的方式

###1)使用字节码
  Python解释器在执行代码的过程中,会首先生成.pyc文件,然后再解释执行.pyc中的内容,当然,解释器也能直接执行.pyc文件。
.pyc文件是一个二进制的文件,是不具备可读性的。

  假如我们发到客户环境时,是.pyc文件,而不是.py,那么是不是就可以保护我们的Python代码?

  想要做到这一点,并不难。Python标准库就提供了一个名叫compileall的库,使用它就可以做到。

####优缺点:

  • 简单方便,提高了一定的破解门槛
  • 兼容性不好,不同的Python版本之间不能进行移植
  • 有现成的反编译软件Free Software Foundation site 可以破解,破解成本低
    ###2)使用可执行文件
      通过pyInstall和py2exe等工具,将python代码和解释器嵌入到一个可执行文件中
    #####优缺点:
  • 打包的可执行文件方便分发和执行,不依赖执行环境的python,相比.pyc门槛较高
  • 只能生成.exe文件,兼容性差
  • 生成的文件较大

###使用Cython
  将py/pyx编译成.c文件再将文件编译成.so(Unix)或者.pyd(Windows).可以有效的提升性能并且可以加密。

  • 创建.py文件
  • 编写setup.py
    from distutils.core inport setup
    from Cython.Build import cythonize
    setup(name="hello HIK",
    ext_modules=cythonize(main.py))
  • 编译成c,再进一步编译为.so或者是.pyd
python setup.py build_ext --inplance

–inplance 表示将.so创建在当前目录

执行python -c "from hello import hello()"即可直接引用盛恒的二进制文件中的hello()函数。
####优缺点:

  • 破解相对困难,并且有一定的性能提升
  • 不同的操作系统需要重新编译,兼容性不好
  • 不同的python版本也需要重新编译
  • 只能针对单个的文件加密,不能够进行联级加密

###代码混淆:
  代码混淆,也是一种常见的“加密”方式,严格意义上说,这一方法并不是加密,而是上代码的可读性变差。比如删除注释,添加毫无意义的注释,添加无效代码,对变量、函数、类进行重命名等。
内容不可读,代码就受到了保护。

  代码混淆的工具很多,一个比较好用的混淆库是pyobfuscate(GitHub - astrand/pyobfuscate: pyobfuscate)。这个库可以对类、函数进行重命名,并且插入无关的代码,甚至自动加空格等等。

  这一方法很简单,也提高了破解的门槛。但由于代码结构未发生变化,字节码也能获取,破解难度也不高。
一般而言,使用这一方式较为简单,实用.

####优缺点

  • 简单方便,兼容性好
  • 代码结构不变,而且访问字节码,破解并不困难。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值