受限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

作者

@namuyan_mine

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
ElasticSearchJava客户端:Java。lang.OutOfMemoryError:无法创建新的本机线程   java仅选择一次jComboBox项,以便将行添加到jTable   数据结构在java中实现矩阵   java Jsoup从隐藏代码的html url读取   java从文件读取unicode行转换UTF8   java什么更便宜:减法还是更高的指数?   导出的GUI项目无法打开/运行,使用eclipse oxygen Java导出   在运行时验证Java错误   java如何处理“构建WebSocket失败:URL无效”的JavaScript异常?   java指定单向@OneToOne JPA映射的所有者   java如何查找训练错误或错误(D)和测试错误或错误(s)   现有工作簿中存在错误的单元格中的java Apache Poi值不会重新计算   java Android Studio Gradle CreateProcess错误=2   urlencode Java库,用于URL编码(如浏览器)   java如何跳过访问(重复)值的索引?   JScrollPane中的java图像原点位于JScrollPane原点之上   java joda时间消耗太多内存   java无法在Eclipse4.3.1开普勒中将double转换为double   java Hystrix CircuitBreakerSleepIndowWinMillicles无法按预期工作   java如果比较的两个对象都为null,equals方法应该返回什么?