Deep algorithmic code protection for Python
Project description
deep algorithmic code protection for Python
v1.0.0 | C/C++ kernel | Python runtime | cross-platform
what is orendos?
orendos is a code protection library that transforms Python source into a custom machine language that cannot be decompiled, reversed, or read. the final output is a binary format processed by a deep algorithmic engine written in C — no bytecode, no opcodes, no readable structures.
the interpreter executes the protected code directly through layered internal algorithms without ever decoding it back to Python.
protection layers
| layer | engine | description |
|---|---|---|
| feistel cipher | C | 16-round feistel network with dynamic S-boxes |
| xor stream | C | xorshift128+ stream cipher with entropy-derived keys |
| byte permutation | C | 256-entry permutation tables (fisher-yates) |
| data scattering | C | block interleaving with noise injection |
| anti-debug shield | C | debugger detection, timing checks, memory wiping |
| dynamic entropy | C | xoshiro256** PRNG — different output every compilation |
key features
- every compilation produces unique output — same source, different binary
- no standard bytecode or opcodes — custom internal representation
- the interpreter does not decode — it executes through deep algorithmic pipelines
- anti-debugging and anti-tampering built into the C kernel
- memory wiping after execution — no traces left in RAM
- supports all Python features, libraries, and frameworks
- works on Linux, Windows, macOS, Android
installation
pip install orendos
from source
git clone https://github.com/6x-u/orendos.git
cd orendos
pip install .
requires: Python >= 3.7, C compiler (gcc/clang/msvc)
usage
compile a Python file
from orendos.compiler import compile_file
oro_path, wrapper_path = compile_file("my_script.py")
print(f"protected: {oro_path}")
print(f"runner: {wrapper_path}")
run protected code
from orendos.runtime import execute_oro
execute_oro("my_script.oro")
protected file format
after compilation, a wrapper .py file is generated:
import orendos as mero
"my_script.oro"
o0o-run
as merois required — without it the runtime will not activate.
CLI
# compile
orendos compile my_script.py
# run
orendos run my_script_protected.py
orendos run my_script.oro
# info
orendos info
interactive converter script
python scripts/convert.py
the script will:
- ask for the Python file path
- compile with deep algorithmic transformation
- display
done saveand show the output paths - the generated file runs without any errors
how it works
Python Source
|
v
[AST Parse]
|
v
[Code Object → Marshal]
|
v
[C Engine: Feistel Encrypt (16 rounds)]
|
v
[C Engine: Data Scatter (8 blocks + noise)]
|
v
[C Engine: Byte Permutation (256-table)]
|
v
[C Engine: XOR Stream Cipher]
|
v
[Container: Header + Sections + Checksum]
|
v
.oro Binary File
at runtime:
.oro Binary File
|
v
[Shield: Anti-Debug + Integrity Check]
|
v
[VM: Load Container → Verify Checksum]
|
v
[C Engine: Reverse Pipeline (deep internal)]
|
v
[Direct Execution → Memory Wipe]
|
v
Output
the reverse pipeline operates through the C kernel — it never exposes the original code, bytecode, or any readable representation. even if someone captures the binary, the dynamic entropy ensures every compilation is unique and the internal structures are non-deterministic.
architecture
orendos/
├── src/core/ # C kernel
│ ├── engine.c/h # container format, serialization
│ ├── algorithms.c/h # feistel, permutation, scatter, xor
│ ├── vm.c/h # virtual machine, execution pipeline
│ ├── shield.c/h # anti-debug, integrity, memory wipe
│ ├── entropy.c/h # xoshiro256** PRNG, key derivation
│ └── orendos_core.c # Python C extension bridge
├── orendos/ # Python package
│ ├── compiler.py # source → .oro compilation
│ ├── runtime.py # .oro → execution
│ ├── cli.py # command-line interface
│ └── _compat.py # platform compatibility
├── scripts/
│ ├── convert.py # interactive converter
│ └── run.py # runner script
├── examples/ # example Python files
└── tests/ # test suite
security model
| attack | defense |
|---|---|
| decompilation | no standard bytecode — custom binary format |
| disassembly | no opcodes — layered algorithmic transformation |
| memory dump | secure memory wiping after execution |
| debugger attach | ptrace/IsDebuggerPresent detection |
| binary analysis | dynamic entropy — each build is unique |
| timing analysis | timing-based anomaly detection |
| file tampering | SHA-256 checksum + section signatures |
| copyright removal | embedded guard markers with integrity check |
examples
basic
# source: hello.py
print("hello world")
# compile
from orendos.compiler import compile_file
compile_file("hello.py")
# result: hello_protected.py
import orendos as mero
"hello.oro"
o0o-run
advanced
# any Python code works — classes, imports, frameworks
import json
class API:
def __init__(self):
self.data = {"status": "protected"}
def respond(self):
return json.dumps(self.data)
api = API()
print(api.respond())
compile it:
orendos compile api.py
orendos run api_protected.py
# output: {"status": "protected"}
platform support
| platform | status |
|---|---|
| Linux (x86_64, arm64) | supported |
| Windows (x86_64) | supported |
| macOS (x86_64, arm64) | supported |
| Android (termux) | supported |
dev
# build from source
pip install -e .
# run tests
python -m pytest tests/
# test compilation
python scripts/convert.py
orendos v1.0.0
dev by mero | tg @QP4RM | github.com/6x-u
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orendos-1.0.0.tar.gz.
File metadata
- Download URL: orendos-1.0.0.tar.gz
- Upload date:
- Size: 24.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bfaa809e082e0709ac65f1f7f247dcf9e8529cdb0036b1df6d26a943dec321d8
|
|
| MD5 |
e7fbcc07fee39968b5bc2d403505033b
|
|
| BLAKE2b-256 |
07880e363612b1f7971b2ecd3a837f836c815796945cc429238dfb12d5a49674
|
File details
Details for the file orendos-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 50.5 kB
- Tags: CPython 3.13, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef5de2d0b799cb5e65af233f8ebb038d3f7ac258cff3a6e1a43b5fc4e7c76218
|
|
| MD5 |
324fbcf22b3a87b87139119bd6eadb86
|
|
| BLAKE2b-256 |
5cde744f9ff0804a1a80094f7cfa30f327e1e0530961c00467971cba0da28e8d
|
File details
Details for the file orendos-1.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 50.1 kB
- Tags: CPython 3.13, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2d8bf89782a7b36db27ad8d751f00f9e3389fb3c5698241ca84b8ddfbd77ed82
|
|
| MD5 |
fbd165ce6385f0e3a92437d1ee3afda1
|
|
| BLAKE2b-256 |
8383a9481f51106faeb483f1d5cdbc0359310e79ce4889b64e81711b1520d604
|
File details
Details for the file orendos-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 55.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
419d21518a272ab9aa1f83b32b4f07e768116e11c7959bf329785e1ab9976f41
|
|
| MD5 |
b61ec28a2242adecd21f460943269b15
|
|
| BLAKE2b-256 |
14ec09dfe8cd7ed1bf4f05e885a4f610df1d90ee4b29e6c39b0b278bb7cfbf2e
|
File details
Details for the file orendos-1.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 50.1 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ff5e1f5148075bd9d59bd2f31beb3041192c474db110b207031541e004196a5
|
|
| MD5 |
5c146b0146a3a38e7907c86639b6bfb5
|
|
| BLAKE2b-256 |
64e1ddcc41bc68dafa695a6b4e348cf39760a208a35141103f9c04da94782007
|
File details
Details for the file orendos-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 50.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64bec963738ed4477c91b460e9fc1a1d7e3c84e3ee6645d0c343078c63f9af9a
|
|
| MD5 |
b402e35ff33c526512048d2a3728bf2e
|
|
| BLAKE2b-256 |
d78ef6b4a0f6dc3a875571a0ddf60bfdbf6bc466aa4f4c10aa5fd724e50bd6c7
|
File details
Details for the file orendos-1.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 49.9 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b853fc9c723f053f0bcf8bc92efb9166796febfea5313bed3f1bef636b5f673
|
|
| MD5 |
b153a15adf4779ba121ac79150a7290f
|
|
| BLAKE2b-256 |
5e221260c64a66c0d0aee8cc68aeafb3cf11b6f7a7d3fd8b26ed912eaa72ce7f
|
File details
Details for the file orendos-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 50.1 kB
- Tags: CPython 3.10, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ffebd3a0216d8ab32d0ca67f812a19a2a67c36221ddd3b31b25e887ecdea38cd
|
|
| MD5 |
9f25d04bcc3011fbf3db9faf643452b1
|
|
| BLAKE2b-256 |
40b03b9ecc01258284516fb8d16c723d5221d1a90a680c8779bdc3b81539b237
|
File details
Details for the file orendos-1.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 49.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95cbf7239fe91c21e2d45fc4b6e589725bf3577bb2b6e9a481fbe4af5a029aa8
|
|
| MD5 |
cba2b0008d64566370aab89030b3350f
|
|
| BLAKE2b-256 |
3043a22c51d1af684c4c8f93ae22612b1efadd83dfa93cb2dfd8423deb703869
|
File details
Details for the file orendos-1.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 49.9 kB
- Tags: CPython 3.9, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1410a2542b43d0fb79237e7c0508b7682eb5b0eec5d984f67e936389b873825
|
|
| MD5 |
96e6294cb7f29c40f1a56267dc0eb13a
|
|
| BLAKE2b-256 |
e79cd49deda864ffc4ff180686a954d06da28cc3851ebaa3fda6a4213e4624eb
|
File details
Details for the file orendos-1.0.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 49.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2631a5f7912b63a1d0ed9c26bff8bd629ecc1d9f3731c40f3c1afa30cccf5e5a
|
|
| MD5 |
039ed302b822758870db535ed5921c9f
|
|
| BLAKE2b-256 |
99ff4e94e4ccae1bc164ab62d73b6c3465f9c844f17adf8d487a721690f76fd9
|
File details
Details for the file orendos-1.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.
File metadata
- Download URL: orendos-1.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 50.5 kB
- Tags: CPython 3.8, manylinux: glibc 2.17+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28c5cb61fcf74fa169fd064626f0dcf1479adfdc5fd9868feda3680273f9b919
|
|
| MD5 |
7f6a8692de2eb3a4569fc15dadb5211f
|
|
| BLAKE2b-256 |
d92fbeaca1d7417529255cd76b3d8b255c1fc80ffb36e8aac4a6ca375456d282
|
File details
Details for the file orendos-1.0.0-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.
File metadata
- Download URL: orendos-1.0.0-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
- Upload date:
- Size: 50.2 kB
- Tags: CPython 3.8, manylinux: glibc 2.28+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5705d1416d016c48a6569515db2934852a0215acec5dfb318b768065694d6d5
|
|
| MD5 |
b8f40ceeea63a5a434e74f846fe4f8bc
|
|
| BLAKE2b-256 |
7b1fc0e6866ec41362b939760980c59f521260a39c2f8e1a6f46d3ad38891e0e
|