Skip to main content

Restricted Python Virtual Machine

Project description

Restricted Python Virtual Machine

Restricted Python Virtual Machine (R-PVM) implemented by pure python.

specification

  • aim for complete safe sandbox
  • designed for Python3.6 bytecode
  • execute one by one
  • good for smart contract of crypto currency
  • No warranty and unstable

check

  • cannot use MAKE_FUNCTION op (lambda, comprehension and inner fnc)
  • cannot use async/await
  • limit to execute function
  • YOU must select safe function

Install

pip3 install rpvm

How to use

from rpvm.vm import VirtualMachine
from RestrictedPython import safe_builtins, safe_globals
 
source = """
a = 1
b = 2
c = a + b
"""
code = compile(source, '<example>', 'exec')
 
b = safe_builtins.copy()
l = dict()
g = safe_globals.copy()
vm = VirtualMachine(code, b, l, g)
 
steps = 0
max_steps = 500
while not vm.finish and steps < max_steps:
    vm.exec()
    steps += 1
print("complete?", vm.finish)
print("result", vm.return_value)
print("c is", l['c'])

test

python3 -m pytest tests

Author

@namuyan_mine

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpvm-0.1.0a1.tar.gz (8.0 kB view details)

Uploaded Source

File details

Details for the file rpvm-0.1.0a1.tar.gz.

File metadata

  • Download URL: rpvm-0.1.0a1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.19.5 CPython/3.6.8

File hashes

Hashes for rpvm-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 4d352685e38b9bca4355419a5238ecb07802aa0bb0593366fbf0ca442381ba15
MD5 6b0c13687931450779997565f0a4ac8c
BLAKE2b-256 588d965446ed7bc26253a6bedf1148b3c207009c206975765e67f16a28f3349c

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page