搜索
bottom↓
回复: 18

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

[复制链接]

出0入0汤圆

发表于 2018-2-28 09:01:28 | 显示全部楼层 |阅读模式
就是说  树莓派运行python的时候不被看到源码怎么操作?有人提点一下吗   谢谢

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2018-2-28 09:13:24 | 显示全部楼层
打包成可执行文件就好

出0入0汤圆

发表于 2018-2-28 09:15:05 | 显示全部楼层
up的意思是只要运行时看不到源码,还是要将源码混淆加密?
看不到那直接把想隐藏的单独分个文件,使用时import文件的内容
混淆加密在windows平台下我用了cpython,将源码转换为C文件,然后C文件打包为库文件再由python调用

出0入0汤圆

 楼主| 发表于 2018-2-28 09:44:32 | 显示全部楼层
roasn 发表于 2018-2-28 09:13
打包成可执行文件就好

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

出0入0汤圆

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

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

出0入0汤圆

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

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

出0入0汤圆

发表于 2018-2-28 11:08:03 | 显示全部楼层
pyn 好像就是没有源码的吧.

出0入0汤圆

发表于 2018-2-28 11:25:42 | 显示全部楼层
python打包的exe是可以解出来py文件的。因为打包只是把py文件和解释器以及库文件放在exe里面,实际运行的时候就会类似解压

出0入0汤圆

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

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

出0入25汤圆

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


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

你想说的是Cython吧??

出0入0汤圆

 楼主| 发表于 2018-2-28 13:58:58 来自手机 | 显示全部楼层
谢谢大家回复   我只要能实现简单的看不见  就行,不考虑复杂的反编译

出0入0汤圆

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

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

出130入129汤圆

发表于 2018-2-28 14:54:03 来自手机 | 显示全部楼层
pyinstaller就行,我在树莓派+python3环境里用过。

出0入25汤圆

发表于 2018-2-28 15:45:50 | 显示全部楼层
vipcff 发表于 2018-2-28 13:58
谢谢大家回复   我只要能实现简单的看不见  就行,不考虑复杂的反编译


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

出0入0汤圆

发表于 2018-2-28 15:49:53 | 显示全部楼层
68336016 发表于 2018-2-28 14:54
pyinstaller就行,我在树莓派+python3环境里用过。

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

出0入0汤圆

发表于 2018-2-28 16:24:05 | 显示全部楼层
上传一个混淆工具,

装好后,命令行运行下面的命令
pyminifier -o output.py -O --replacement-length=10  input.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__=()

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-3-1 09:23:18 | 显示全部楼层
zhonghua_li 发表于 2018-2-28 14:31
具体怎么弄的呢,能做个例子吗

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

出0入0汤圆

发表于 2018-3-1 09:23:53 | 显示全部楼层
XIVN1987 发表于 2018-2-28 13:51
“目前我能找到最简单隐藏源码且防反编译的方法就是cpython了”

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

是的是的,是Cython,不是Cpython

出0入0汤圆

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

感谢分享,网上看了很多,好像CYTHON是目前比较认同的保密性较好的方法了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 21:36

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表