早上,迷糊醒了,第一步看看女盆友给我的消息,突然看到有人在讨论NodeMcu的安全处理,,在我们平时开发过程中,只需要将自己的lua程序上传到esp里即可,剩下就是他解释执行,这时问题来了,如果你是做的一个产品那么懂技术的人就可以直接通过串口轻松的下载你的lua程序文件,进行查看,或者修改!。索性去一看究竟,于是乎潜水几分钟,看看他们的聊天内容,其中另外佩服的大佬就谈到程序二进制化(后来他纠正了此说话),问了问,什么是二进制化,他提到,lua文件不只是解释执行,还可以编译运行,于是我闷逼了,lua居然还可以编译运行于是乎,我查了相关资料,貌似没这说话,查完会来看群消息,哈哈,结果出来了,你又纠正说话,是elua(elua是一个开源项目,拥有lua基础,同时用于单片机的),又查询了,果然有,哈哈,这下自己写的程序自己编译下就可以呗,相对来说比较安全,编译后生成lc文件,又查了查lc反编译,居然没有人搞这个,这下可以放心的说,lc文件相对来说很安全。他又提到,nodemcu自带了一个编译工具,顿时我就无语了,居然这么简单,算了,我去看看文档吧!
文档定义如下
这个说明了使用方法,哈哈一句代码解决问题,简直就轻松啊,原型C语言如下
我们可以到编译生成的字节码文件为lc文件,于是,我上机编译测试了下效果,编译后比源文件要大几百字节,不过这个没啥影响,安全才是重要,
出于好奇心,我打开了lc文件,效果如下:
在这里我只看到了我自己写的函数名,函数的具体业务逻辑代码是看不到的
我们都知道,nodemcu运行开机都是处理init.lua文件,那么lc文件怎么执行呢?哈哈思路给两种
ONE:自己在写一个init.lua文件,内容写dofile("xxx.lc")
TWO:直接将lc文件重命名为lua文件,哈哈我测试没问题,可以运行!
注意,发布前记得删除自己的源文件!
为更好的安全处理,我们又谈到了串口问题,群里哪位确实是老老司机,他直接把串口映射走,mmp,还有什么办法连接的上呢?,他在烧录估计时,就把程序直接烧录进去了,基本上没办法获取他的程序,于是我又查了查文档
有串口回调函数,于是我们可以在这里动点文章,做一个串口校验(和高中说了这个事,给我回复了一句,冗余校验,就和这个有点类似),满足条件则开放串口,否则就不能操作
这个不知道翻译准了没有,原文是英文的,具体逻辑代码没写,只能想想思路,
差不多,从程序编译实现加密到串口关闭,基本上,我们的安全性有一定保证,除非对方是超级超级牛逼的人,估计很难有人做到