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.2.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.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (51.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

orendos-1.0.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl (50.0 kB view details)

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

orendos-1.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (52.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

orendos-1.0.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl (50.1 kB view details)

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

orendos-1.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (51.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

orendos-1.0.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl (49.9 kB view details)

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

orendos-1.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (51.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

orendos-1.0.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl (49.9 kB view details)

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

orendos-1.0.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (51.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

orendos-1.0.2-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl (49.7 kB view details)

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

File details

Details for the file orendos-1.0.2.tar.gz.

File metadata

  • Download URL: orendos-1.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 22d5971d44de6425c47d724a67594b58b6f95cc803b068a4282f5092a9f52709
MD5 22ab8df03aeb09100dd2e63a40a935f1
BLAKE2b-256 9170a1568cdce37a3ba916ea72beee963bcab426f0eefd0eec1b01effe7599c9

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a74dfff593a8cdb2609d28c79e8e998c1c2365a649534f1c8f8f8aaa9d575774
MD5 a710e72b3ee50288aeb9a7e7cabaebd7
BLAKE2b-256 27f926bea5e04a36f0166a436e7a2f87ef64e8e490318ce2975c8ca3c41fcf17

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 ea417bcc4ea0fc272b3c9b94ea67c7cdf281ef72fa65e521b4a0b64a3dede5d2
MD5 fb656ba9fd33b3870d8595d33575f586
BLAKE2b-256 ce725aa3fbe597c668d98c960cb76cf1aa0ceb6287dd2481b212b0afa990bbd7

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 59f4f7a22a0b372787e5b959e0a42ff9efc88e5c343d78aee0fa8cb2d6be6b72
MD5 70490ff6d9e532ab859ef69afad4ed1f
BLAKE2b-256 ed987d8985b9b9fbe94cfffa8278084f882c317dc76378846c53b3d476d98d7b

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 5efa4b0c6ad65a139b971f08a80f2d4c93804773a49690def5a7966f0833c224
MD5 50e0c1371b41477306786e8d6952d2e9
BLAKE2b-256 9cd4a9ebe77890c9913d2a095908d976f8caebafa5e628115869aa22ff05dd0f

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 6e09d941f8a6a7abd30d1d1ca3eb5f2e85b061d581f6dfa72d552aa0b468cf95
MD5 9060e9e2dfa19bbdeb458f319665b835
BLAKE2b-256 9bacae421eb7cb72af15952b7875ed93a4fefc275e6dd24f0033ff1aab99c8fc

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 6610a0106615ee96425291f995ac8bce33bba412fdd38ae4a72bdee1b36e9a6f
MD5 a2072bc39ae12e7a4274d7474d5f8e35
BLAKE2b-256 9392fcba825fbdce54aa1ee766756103a35af34dc2e7214e06e6a661ba4b512f

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7f9a544099c942bf42462f7c4d08d4b4e704b03ffa2b47421931f78a2081a691
MD5 52569625f0d756520f03247cfd6d4fdc
BLAKE2b-256 b404063de5e6c0828d6cb27b03bb2f8cae3e538ddad1b223e8e8ee0e1cda7325

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 3ad7139b6ba2ca983a4c1c2276819f45a0b36db19aeec6694b4efd3655f49dfc
MD5 ce43a1f090cc50255b392f502c8633cb
BLAKE2b-256 238ccb139e798af95530e9a75ef1885ddfbc4c3bba4507fdaba7843fde20afd5

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 5d02097094dfa9cbe1b00217dae726181d6560c1189a11fcf6af42dda1ba434e
MD5 72900d1f5daa357b41bd98def62557fd
BLAKE2b-256 098c5ec48882a17f1f5115d69a58dfdd64c618a5ea0f7157686e75d9ea1d2825

See more details on using hashes here.

File details

Details for the file orendos-1.0.2-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for orendos-1.0.2-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 f88e5b3259395a24a72303c37ef507eaf311550278c883fd8d9b86a51d887a83
MD5 6dd4d97eabd8a4d7e0d2344b36c7067f
BLAKE2b-256 c7eacae78c04d198cbfcc94bf92aba781e98bb19a0e5b0e31cc5b8f74ab687e7

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