提供简单加密的mpy模块,可以放到固件内部,也可以手动上传到flash。
在主程序或者boot.py调用后,会禁用repl 和 repl的文件管理功能,并在repl上提示输入密码。采用严格的密码放置爆破功能,哪怕6位数字都无法爆破。
兼容webrepl
特性
- 可以在 usb口的repl 上加上密码,同时webrepl也会增加密码
- 无密码的情况下,relp口只可以显示打印信息,无法执行python命令,更加无法查看flash内文件
- 输入密码后,不重启的情况下不需要再次输入密码
- 可以集成到固件内
- 可以随意选择在随意boot.py 或者 main.py加载
- 可以限制密码尝试间隔,并在N次后增加重试间隔时间,简单的密码也很难通过爆破来绕过
- 依赖:micropython time 和 _thread 三个库
获取和使用
下载 mpy
放到flash 内 或者固件内部均可。 下载地址:https://github.com/joyanhui/file.leiyanhui.com/raw/main/esp32/repl_psw.mpy 暂时不开源,需要源码的请联系 joyanhui@qq.com
修改你的boot.py 或main.py
使得代码保护在开机后可以马上运行。下面是一个 boot.py的演示
|
|
main.py的代码应该是你的业务逻辑部分,简单的一个实例如下
|
|
其他建议
上面的演示代码只是提供了一个简单的例子,实际使用的时候,密码最好与设备的mac地址或token关联 或者从单独的授权服务器获取,做到一机一密
在esp8266 等内存较少的micropython设备上,使用 _thread 可能比较奢侈,请自己选择是否使用 repl_psw模块大概需要占用1.2kb的内存 。
repl 的加密,只能一定程度上保护代码,只是提供简单灵活的方式防止别人直接窥视你的代码。无法避免绕过repl直接从物理层面下手的
建议 核心代码还是用c来写,并不是非常核心的代码 编译成mpy放到固件内部。 如果代码安全性要求非常高,还是要用加密芯片的昂。