受限python虚拟机
rpvm的Python项目详细描述
受限制的python虚拟机
纯python实现的受限python虚拟机(r-pvm)。
规格
- 以完全安全的沙箱为目标
- 专为python3.6字节码设计
- 逐个执行
- 适合加密货币的智能合约
- 无担保且不稳定
检查
- 不能使用make_函数op(lambda,comprehension和inner fnc)
- 无法使用async/await
- 限制执行函数
- 必须选择安全功能
安装
pip3 install rpvm
如何使用
fromrpvm.vmimportVirtualMachinefromRestrictedPythonimportsafe_builtins,safe_globalssource="""a = 1b = 2c = a + b"""code=compile(source,'<example>','exec')b=safe_builtins.copy()l=dict()g=safe_globals.copy()vm=VirtualMachine(code,b,l,g)steps=0max_steps=500whilenotvm.finishandsteps<max_steps:vm.exec()steps+=1print("complete?",vm.finish)print("result",vm.return_value)print("c is",l['c'])
测试
python3 -m pytest tests