vipcff 发表于 2018-2-28 09:01:28

树莓派上如何生成可执行的或者是不被看见源码的python脚...

就是说树莓派运行python的时候不被看到源码怎么操作?有人提点一下吗   谢谢

roasn 发表于 2018-2-28 09:13:24

打包成可执行文件就好

liansh2002 发表于 2018-2-28 09:15:05

up的意思是只要运行时看不到源码,还是要将源码混淆加密?
看不到那直接把想隐藏的单独分个文件,使用时import文件的内容
混淆加密在windows平台下我用了cpython,将源码转换为C文件,然后C文件打包为库文件再由python调用

vipcff 发表于 2018-2-28 09:44:32

roasn 发表于 2018-2-28 09:13
打包成可执行文件就好

树莓派下 打包工具是什么名称?谢谢指导直接在树莓派里打包可以吧? 不想通过pc。

vipcff 发表于 2018-2-28 09:47:10

liansh2002 发表于 2018-2-28 09:15
up的意思是只要运行时看不到源码,还是要将源码混淆加密?
看不到那直接把想隐藏的单独分个文件,使用时imp ...

最简单的方法实现 ,拿vb 举例(当然vb 不能在树莓派下跑), 不想在树莓派中提供vb工程,只想提供exe 文件 。只是不知道针对在树莓派下使用python语言怎么操作,使用什么工具。 谢谢 。

roasn 发表于 2018-2-28 09:50:37

vipcff 发表于 2018-2-28 09:44
树莓派下 打包工具是什么名称?谢谢指导直接在树莓派里打包可以吧? 不想通过pc。 ...

工具很多,没有在树莓派上试过,理论上当然是可以的,本来就是有linux下的打包工具

jcrorxp 发表于 2018-2-28 11:08:03

pyn 好像就是没有源码的吧.

gc56198 发表于 2018-2-28 11:25:42

python打包的exe是可以解出来py文件的。因为打包只是把py文件和解释器以及库文件放在exe里面,实际运行的时候就会类似解压

liansh2002 发表于 2018-2-28 13:19:22

gc56198 发表于 2018-2-28 11:25
python打包的exe是可以解出来py文件的。因为打包只是把py文件和解释器以及库文件放在exe里面,实际运行的时 ...

是啊,exe的打包就是把.py文件和额外需要的资源拖到目录里,而且这种打包出来的exe还不能加壳,对于保密毫无用处
目前我能找到最简单隐藏源码且防反编译的方法就是cpython了

XIVN1987 发表于 2018-2-28 13:51:56

liansh2002 发表于 2018-2-28 13:19
是啊,exe的打包就是把.py文件和额外需要的资源拖到目录里,而且这种打包出来的exe还不能加壳,对于保密 ...


“目前我能找到最简单隐藏源码且防反编译的方法就是cpython了”

你想说的是Cython吧??

vipcff 发表于 2018-2-28 13:58:58

谢谢大家回复   我只要能实现简单的看不见就行,不考虑复杂的反编译

zhonghua_li 发表于 2018-2-28 14:31:27

liansh2002 发表于 2018-2-28 09:15
up的意思是只要运行时看不到源码,还是要将源码混淆加密?
看不到那直接把想隐藏的单独分个文件,使用时imp ...

具体怎么弄的呢,能做个例子吗

68336016 发表于 2018-2-28 14:54:03

pyinstaller就行,我在树莓派+python3环境里用过。

XIVN1987 发表于 2018-2-28 15:45:50

vipcff 发表于 2018-2-28 13:58
谢谢大家回复   我只要能实现简单的看不见就行,不考虑复杂的反编译


你运行一下程序,会自动生成.pyc文件,,然后把.py文件删掉只留着.pyc文件就行了。。

zhonghua_li 发表于 2018-2-28 15:49:53

68336016 发表于 2018-2-28 14:54
pyinstaller就行,我在树莓派+python3环境里用过。

这种方法已经被证实,可以还原成源码。

zhonghua_li 发表于 2018-2-28 16:24:05

上传一个混淆工具,

装好后,命令行运行下面的命令
pyminifier -o output.py -O --replacement-length=10input.py
得到类似下面这样的结果。

rSDqNQBinv=unicode
rSDqNQBinK=AttributeError
rSDqNQBinz=False
rSDqNQBinl=object
rSDqNQBinj=property
rSDqNQBinF=True
rSDqNQBinb=tuple
rSDqNQBinh=list
rSDqNQBinJ=None
rSDqNQBiGa=ValueError
rSDqNQBiGY=IndexError
rSDqNQBiGW=enumerate
rSDqNQBiGc=int
rSDqNQBiGn=LookupError
rSDqNQBiGp=NotImplementedError
rSDqNQBiGV=len
rSDqNQBiGo=repr
rSDqNQBiGX=hash
rSDqNQBiGe=set
rSDqNQBiGu=super
rSDqNQBiGA=str
rSDqNQBiGC=bool
rSDqNQBiGU=reversed
rSDqNQBiGd=KeyError
rSDqNQBiGI=dict
rSDqNQBiGk=range
import os
rSDqNQBinx=os.path
import re
rSDqNQBinP=re.search
rSDqNQBinf=re.escape
rSDqNQBint=re.sub
from inspect import cleandoc
from itertools import chain
rSDqNQBiny=chain.from_iterable
import textwrap
rSDqNQBinw=textwrap.wrap
import abc
rSDqNQBinH=abc.abstractmethod
from jedi._compatibility import(Python3Method,encoding,is_py3,utf8_repr,
literal_eval,use_metaclass,rSDqNQBinv)
from jedi.parser import token
rSDqNQBinR=token.tok_name
from jedi.parser.utils import underscore_memoization


def rSDqNQBiYf(rSDqNQBiac,*symbol_names):
try:
rSDqNQBico=rSDqNQBiac.type
except rSDqNQBinK:
return rSDqNQBinz
else:
return rSDqNQBico in symbol_names
class rSDqNQBicO(rSDqNQBinl):
def __init__(rSDqNQBiaY):
rSDqNQBiaY.line=0
rSDqNQBiaW=rSDqNQBicO()
class rSDqNQBicE(rSDqNQBinl):
__slots__=()

liansh2002 发表于 2018-3-1 09:23:18

zhonghua_li 发表于 2018-2-28 14:31
具体怎么弄的呢,能做个例子吗

1.首先要安装Cytrhon和GCC
2.把需要隐藏的源码文件后缀名由.py改成.pyx。内容不用更改
3.写一个setup.py文件(例如需要被编译的文件名为func.pyx),内容如下:
from distutils.core import setup
from distutils.extension import Extension
from Cython.Distutils import build_ext
from Cython.Build import cythonize
extensions = [
    Extension('func', ['func.pyx'], #func是我们要生成的动态链接库的名字
            language = 'c',       #其实默认就是 c,如果要用 C++,就改成 c++ 就好了
            include_dirs = [],    #这个就是传给 gcc 的 -I 参数
            libraries = [],       #这个就是传给 gcc 的 -l 参数
            library_dirs = [],    #这个就是传给 gcc 的 -L 参数
            extra_compile_args=[],#就是传给 gcc 的额外的编译参数,比方说你可以传一个 -std=c++11
            extra_link_args=[])   #就是传给 gcc 的额外的链接参数(也就是生成动态链接库的时候用的)
]
setup(
    name = 'test',
    ext_modules = cythonize(extensions),
)4.使用命令:python setup.py build_ext --inplace 完成编译,会在目录下生成一堆文件,只保留func.xxxx.pyd文件
5.在需要使用时,import func.pyd 载入

liansh2002 发表于 2018-3-1 09:23:53

XIVN1987 发表于 2018-2-28 13:51
“目前我能找到最简单隐藏源码且防反编译的方法就是cpython了”

你想说的是Cython吧?? ...

是的是的,是Cython,不是Cpython

zhonghua_li 发表于 2018-3-1 10:27:16

liansh2002 发表于 2018-3-1 09:23
1.首先要安装Cytrhon和GCC
2.把需要隐藏的源码文件后缀名由.py改成.pyx。内容不用更改
3.写一个setup.py ...

感谢分享,网上看了很多,好像CYTHON是目前比较认同的保密性较好的方法了。
页: [1]
查看完整版本: 树莓派上如何生成可执行的或者是不被看见源码的python脚...