Package documentation for CodeSafe. An open-source Python library for code encryption, decryption, and safe evaluation using Python's built-in AST module, with complete control over execution.
0.0.2 (Latest): Removed unnecessary print statements and added error handling for most functions. Related to . Thanks to for contributing!
0.0.1: Initial release.
Installation
You can install CodeSafe using PyPi, please make sure that you are using Python 3.6 or later before installing CodeSafe:
pip install codesafe
CodeSafe is an experimental library, and we're still running some tests on it. Please let us know if you encounter any issues or have an edge use case.
CodeSafe is intended to quickly encrypt/decrypt code files, and run them (only for Python script files / other formats that Python understands) while in their encrypted form, but not as a means for powerful encryption, just for code obfuscation. We have also included a safe_eval function, that can safely evaluate expressions within a safe and controlled environment.
Example Usage
Safe Eval
from codesafe import safe_eval
if __name__ == '__main__':
# Run a normal, safe expression
expression = "1 + 1"
disallowed_expression = "os.getcwd()"
result1 = safe_eval(expression, timeout=10, immediate_termination=True)
result2 = safe_eval(disallowed_expression, timeout=10, immediate_termination=True)
Encrypt & Run Code
from codesafe import encrypt_to_file, decrypt_to_file, run
code = """
greetJohnny = "Hello Johnny!"
def greet_someone(greeting):
print(greeting)
greet_someone(greetJohnny)
"""
# Encrypt the code
encrypted_file_path = "encrypted_code.encrypt"
encrypt_to_file(code, encrypted_file_path)
# Run the encrypted code
run(encrypted_file_path) # Hello Johnny!
# Decrypt code to another file
output_file = "decrypted_code.py"
decrypt_to_file(encrypted_file_path, output_file)
Attribute inspection is disabled when using safe_eval. You can read more about how to use safe_eval from .