Skip to main content

Deep algorithmic code protection for Python

Project description

orendos

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 mero is 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:

  1. ask for the Python file path
  2. compile with deep algorithmic transformation
  3. display done save and show the output paths
  4. 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


Download files

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

Source Distribution

orendos-1.0.0.tar.gz (24.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

orendos-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (50.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (50.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

orendos-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (55.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (50.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

orendos-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (50.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (49.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

orendos-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (50.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (49.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

orendos-1.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (49.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (49.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

orendos-1.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (50.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

orendos-1.0.0-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (50.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

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

Hashes for orendos-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bfaa809e082e0709ac65f1f7f247dcf9e8529cdb0036b1df6d26a943dec321d8
MD5 e7fbcc07fee39968b5bc2d403505033b
BLAKE2b-256 07880e363612b1f7971b2ecd3a837f836c815796945cc429238dfb12d5a49674

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ef5de2d0b799cb5e65af233f8ebb038d3f7ac258cff3a6e1a43b5fc4e7c76218
MD5 324fbcf22b3a87b87139119bd6eadb86
BLAKE2b-256 5cde744f9ff0804a1a80094f7cfa30f327e1e0530961c00467971cba0da28e8d

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 2d8bf89782a7b36db27ad8d751f00f9e3389fb3c5698241ca84b8ddfbd77ed82
MD5 fbd165ce6385f0e3a92437d1ee3afda1
BLAKE2b-256 8383a9481f51106faeb483f1d5cdbc0359310e79ce4889b64e81711b1520d604

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 419d21518a272ab9aa1f83b32b4f07e768116e11c7959bf329785e1ab9976f41
MD5 b61ec28a2242adecd21f460943269b15
BLAKE2b-256 14ec09dfe8cd7ed1bf4f05e885a4f610df1d90ee4b29e6c39b0b278bb7cfbf2e

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 4ff5e1f5148075bd9d59bd2f31beb3041192c474db110b207031541e004196a5
MD5 5c146b0146a3a38e7907c86639b6bfb5
BLAKE2b-256 64e1ddcc41bc68dafa695a6b4e348cf39760a208a35141103f9c04da94782007

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 64bec963738ed4477c91b460e9fc1a1d7e3c84e3ee6645d0c343078c63f9af9a
MD5 b402e35ff33c526512048d2a3728bf2e
BLAKE2b-256 d78ef6b4a0f6dc3a875571a0ddf60bfdbf6bc466aa4f4c10aa5fd724e50bd6c7

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 4b853fc9c723f053f0bcf8bc92efb9166796febfea5313bed3f1bef636b5f673
MD5 b153a15adf4779ba121ac79150a7290f
BLAKE2b-256 5e221260c64a66c0d0aee8cc68aeafb3cf11b6f7a7d3fd8b26ed912eaa72ce7f

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ffebd3a0216d8ab32d0ca67f812a19a2a67c36221ddd3b31b25e887ecdea38cd
MD5 9f25d04bcc3011fbf3db9faf643452b1
BLAKE2b-256 40b03b9ecc01258284516fb8d16c723d5221d1a90a680c8779bdc3b81539b237

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 95cbf7239fe91c21e2d45fc4b6e589725bf3577bb2b6e9a481fbe4af5a029aa8
MD5 cba2b0008d64566370aab89030b3350f
BLAKE2b-256 3043a22c51d1af684c4c8f93ae22612b1efadd83dfa93cb2dfd8423deb703869

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f1410a2542b43d0fb79237e7c0508b7682eb5b0eec5d984f67e936389b873825
MD5 96e6294cb7f29c40f1a56267dc0eb13a
BLAKE2b-256 e79cd49deda864ffc4ff180686a954d06da28cc3851ebaa3fda6a4213e4624eb

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp39-cp39-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 2631a5f7912b63a1d0ed9c26bff8bd629ecc1d9f3731c40f3c1afa30cccf5e5a
MD5 039ed302b822758870db535ed5921c9f
BLAKE2b-256 99ff4e94e4ccae1bc164ab62d73b6c3465f9c844f17adf8d487a721690f76fd9

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 28c5cb61fcf74fa169fd064626f0dcf1479adfdc5fd9868feda3680273f9b919
MD5 7f6a8692de2eb3a4569fc15dadb5211f
BLAKE2b-256 d92fbeaca1d7417529255cd76b3d8b255c1fc80ffb36e8aac4a6ca375456d282

See more details on using hashes here.

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

File hashes

Hashes for orendos-1.0.0-cp38-cp38-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 d5705d1416d016c48a6569515db2934852a0215acec5dfb318b768065694d6d5
MD5 b8f40ceeea63a5a434e74f846fe4f8bc
BLAKE2b-256 7b1fc0e6866ec41362b939760980c59f521260a39c2f8e1a6f46d3ad38891e0e

See more details on using hashes here.

Supported by

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