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
Metadata
Release files for orendos 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| orendos-1.0.2.tar.gz | 24.0 kB | Details |
Built distributions (wheels)
Total release size: 532.1 kB
Release files / orendos-1.0.2.tar.gz
| Download URL | orendos-1.0.2.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
22d5971d44de6425c47d724a67594b58b6f95cc803b068a4282f5092a9f52709
|
|
BLAKE2b-256 checksum How to use checksums |
9170a1568cdce37a3ba916ea72beee963bcab426f0eefd0eec1b01effe7599c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | orendos-1.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 51.9 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
a74dfff593a8cdb2609d28c79e8e998c1c2365a649534f1c8f8f8aaa9d575774
|
|
BLAKE2b-256 checksum How to use checksums |
27f926bea5e04a36f0166a436e7a2f87ef64e8e490318ce2975c8ca3c41fcf17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
| Download URL | orendos-1.0.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl |
|---|---|
| Size | 50.0 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
ea417bcc4ea0fc272b3c9b94ea67c7cdf281ef72fa65e521b4a0b64a3dede5d2
|
|
BLAKE2b-256 checksum How to use checksums |
ce725aa3fbe597c668d98c960cb76cf1aa0ceb6287dd2481b212b0afa990bbd7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | orendos-1.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 52.0 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
59f4f7a22a0b372787e5b959e0a42ff9efc88e5c343d78aee0fa8cb2d6be6b72
|
|
BLAKE2b-256 checksum How to use checksums |
ed987d8985b9b9fbe94cfffa8278084f882c317dc76378846c53b3d476d98d7b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
| Download URL | orendos-1.0.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl |
|---|---|
| Size | 50.1 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
5efa4b0c6ad65a139b971f08a80f2d4c93804773a49690def5a7966f0833c224
|
|
BLAKE2b-256 checksum How to use checksums |
9cd4a9ebe77890c9913d2a095908d976f8caebafa5e628115869aa22ff05dd0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | orendos-1.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 51.6 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
6e09d941f8a6a7abd30d1d1ca3eb5f2e85b061d581f6dfa72d552aa0b468cf95
|
|
BLAKE2b-256 checksum How to use checksums |
9bacae421eb7cb72af15952b7875ed93a4fefc275e6dd24f0033ff1aab99c8fc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
| Download URL | orendos-1.0.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl |
|---|---|
| Size | 49.9 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
6610a0106615ee96425291f995ac8bce33bba412fdd38ae4a72bdee1b36e9a6f
|
|
BLAKE2b-256 checksum How to use checksums |
9392fcba825fbdce54aa1ee766756103a35af34dc2e7214e06e6a661ba4b512f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | orendos-1.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 51.6 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
7f9a544099c942bf42462f7c4d08d4b4e704b03ffa2b47421931f78a2081a691
|
|
BLAKE2b-256 checksum How to use checksums |
b404063de5e6c0828d6cb27b03bb2f8cae3e538ddad1b223e8e8ee0e1cda7325
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
| Download URL | orendos-1.0.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl |
|---|---|
| Size | 49.9 kB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
3ad7139b6ba2ca983a4c1c2276819f45a0b36db19aeec6694b4efd3655f49dfc
|
|
BLAKE2b-256 checksum How to use checksums |
238ccb139e798af95530e9a75ef1885ddfbc4c3bba4507fdaba7843fde20afd5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
| Download URL | orendos-1.0.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl |
|---|---|
| Size | 51.4 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
5d02097094dfa9cbe1b00217dae726181d6560c1189a11fcf6af42dda1ba434e
|
|
BLAKE2b-256 checksum How to use checksums |
098c5ec48882a17f1f5115d69a58dfdd64c618a5ea0f7157686e75d9ea1d2825
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / orendos-1.0.2-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
| Download URL | orendos-1.0.2-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl |
|---|---|
| Size | 49.7 kB |
| Tags | CPython 3.9 Linux glibc 2.17+ x86-32 Linux glibc 2.5+ x86-32 |
|
SHA-256 checksum How to use checksums |
f88e5b3259395a24a72303c37ef507eaf311550278c883fd8d9b86a51d887a83
|
|
BLAKE2b-256 checksum How to use checksums |
c7eacae78c04d198cbfcc94bf92aba781e98bb19a0e5b0e31cc5b8f74ab687e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|