dcexpert 发表于 2016-6-19 18:29

使用mpy-cross保护py文件

<div class='showpostmsg'>大家知道,在python中,可以将py文件编译为pyc文件。编译后的pyc文件是二进制格式,一是可以加快加载速度,更重要的是可以保护原始代码。

在micropython中同样提供了这个功能,只是它将pyc改名为mpy,编译出的文件扩展名是.mpy。要使用这个功能,首先,我们需要产生mpy-cross工具。在micropython目录下,进入mpy-cross子目录,然后在命令行下输入make编译产生mpy-cross执行文件(需要先安装gcc编译器)。在windows会产生mpy-cross.exe,在linux下会产生mpy-cross。

然后用mpy-cross处理py文件,如:mpy-cross user.py,就会产生user.mpy,我们可以直接用user.mpy代替原有的user.py文件,使用起来和原来一样。前一段时间还有网友担心使用micropython时的安全问题,使用mpy-cross就没有问题了。


</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lkl0305 发表于 2016-6-19 18:41

多谢版主的经验分享,这样的确是个不错的选择!在很大程度上保护源码,再加上硬件保护,回头试试

strong161 发表于 2016-6-21 16:07

不过还是存在问题!micropthon 源代码看不到了 mpy文件还是在的,相于源代码来说是更加好了,不过还是与MBED有些差距,MBED的bin文件写入MCU后是不能直接拷出来,而这个依然是直接可以拷走。

dcexpert 发表于 2016-6-21 16:45

strong161 发表于 2016-6-21 16:07
不过还是存在问题!micropthon 源代码看不到了 mpy文件还是在的,相于源代码来说是更加好了,不过还是与MBE ...

对于一个简单应用,这个可能容易复制。对于一个复杂系统,可能会和很多硬件绑定或者有复杂的通信机制,直接复制过去就很难保证不出问题。应该有很多办法来保护你的程序。

balabalaxmx 发表于 2016-6-23 08:47

您好,我想请问make编译生成mpy-cross执行文件是什么意思呢 我没有发现 micropython目录下存在mpy-cross目录呢是被我删除了吗?

dcexpert 发表于 2016-6-23 09:32

balabalaxmx 发表于 2016-6-23 08:47
您好,我想请问make编译生成mpy-cross执行文件是什么意思呢 我没有发现 micropython目录下存在mpy-cross目 ...

需要下载micropython的源码,然后自己编译产生执行文件。windows下编译时需要安装gcc编译器(PC版的,不是arm版的)。

balabalaxmx 发表于 2016-6-23 09:39

dcexpert 发表于 2016-6-23 09:32
需要下载micropython的源码,然后自己编译产生执行文件。windows下编译时需要安装gcc编译器(PC版的,不 ...

thx,我试一下

curry30 发表于 2016-6-28 12:30

make之后,执行mpy-cross test.py 错误,找不到命令

dcexpert 发表于 2016-6-28 12:33

curry30 发表于 2016-6-28 12:30
make之后,执行mpy-cross test.py 错误,找不到命令

你没有将mpy-cross的目录加到路径吧,或者在mpy-cross前加上完整路径才行。

47857872 发表于 2016-7-8 21:41

这个有意思 貌似是准备商用的准备了

dcexpert 发表于 2016-7-8 21:49

47857872 发表于 2016-7-8 21:41
这个有意思 貌似是准备商用的准备了

看起来是的。

allankliu 发表于 2016-7-20 07:07

太棒了!

curry30 发表于 2016-8-3 11:51

dcexpert 发表于 2016-6-28 12:33
你没有将mpy-cross的目录加到路径吧,或者在mpy-cross前加上完整路径才行。

我把main.py编译成main.mpy,如何执行?

wugx 发表于 2016-8-3 12:18

很赞

wugx 发表于 2016-8-3 12:19

curry30 发表于 2016-8-3 11:51
我把main.py编译成main.mpy,如何执行?

执行因该是一样的吧,重启啊

curry30 发表于 2016-8-3 12:22

wugx 发表于 2016-8-3 12:19
执行因该是一样的吧,重启啊

不执行.mpy文件

dcexpert 发表于 2016-8-3 21:08

curry30 发表于 2016-8-3 12:22
不执行.mpy文件

main.py是在内核中直接调用的,所以main.mpy不会自动运行,但是可以在main.py中import其他程序,这样同样可以起到保护作用。

yang_alex 发表于 2016-8-4 18:21

保密性还是没有太大改观。稍好一点。

szqt 发表于 2016-8-7 14:44

strong161 发表于 2016-6-21 16:07
不过还是存在问题!micropthon 源代码看不到了 mpy文件还是在的,相于源代码来说是更加好了,不过还是与MBE ...

mbed是可以读出来的,除非你自己另做保护。

凉冰 发表于 2016-8-8 11:29

请问一下mpy == pyc吗?另外pyc是可以逆出来的
页: [1] 2 3
查看完整版本: 使用mpy-cross保护py文件