Skip to main content

obfupy -- Python source code obfuscator aiming to produce correct and functional code

obfupy is a Python 3 library that can obfuscate entire Python 3 projects, transforming source code into obfuscated and difficult-to-understand code. obfupy aims to produce correct and functional code. Several non-trivial real-world projects were tested using obfupy, such as Flask, Nodezator, Algorithms collection, and Django (not all features are enabled for Django).

Facts and features

  • Obfuscation methods
    • Rewrite the "if" conditional to include many confusing branches.
    • Rename local variable names.
    • Extract the function and have the original function call the extracted function, then rename the parameters in the extracted function.
    • Create alias for function arguments.
    • Obfuscate numeric and string constants and replace them with random variable names.
    • Replace built-in function names (e.g. "print") with random variable names.
    • Add useless control flow to for and while.
    • Remove doc strings.
    • Remove comments.
    • Add extra spaces around operators.
    • Make indents larger to make it harder to read.
    • Add extra blank lines between code lines.
    • Encode the whole Python source file with base64, zip, bz2, byte obfuscator, and easy to add your own codec.
  • Customizable
    • There are multiple layers of independent transformers. You can choose which transformers to use and which not to use.
    • The non-trivial transformers such as Rewriter, Formatter, support comprehensive options to enable/disable features. If any feature doesn't work well for your project, you can just disable it.
  • Well tested
    • There are tests that cover all features.
    • Tested with several real world non-trivial projects such as Flask, Nodezator, Algorithms collection, and Django.

License

Apache License, Version 2.0

Version 0.1.1

Source code

https://github.com/wqking/obfupy

Dependencies

obfupy requires Python 3.9 or later, it doesn't have any other dependencies.

Install

Install from pip package
pip install obfupy

Install from source code
Clone obfupy repository, change directory to the root of obfupy, then,
pip install -e .

Use from source code without installation
Clone obfupy repository, add following lines in the beginning of your script,

import sys
sys.path.append(PATH_TO_OBFUPY)

Quick start

A typical Python script using obfupy looks like,

import obfupy.documentmanager as documentmanager
import obfupy.util as util
import obfupy.transformers.rewriter as rewriter
import obfupy.transformers.formatter as formatter

inputPath = PATH_TO_THE_SOURCE_CODE
outputPath = PATH_TO_OUTPUT

# Prepare source code files as DocumentManager
fileList = util.findFiles(inputPath)
documentManager = documentmanager.DocumentManager()
documentManager.addDocument(util.loadDocumentsFromFiles(fileList))

# Transform the source code with various transformers

# Transformer Rewriter
rewriter.Rewriter().transform(documentManager)
# Transformer Formatter
formatter.Formatter().transform(documentManager)
# There are other transformers

# Write the obfuscated code to outputPath
util.writeOutputFiles(documentManager, inputPath, outputPath)

Documentations

Metadata

Release files for obfupy 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for obfupy 0.1.1
File Size Uploaded
obfupy-0.1.1.tar.gz 28.7 kB Details

Release files / obfupy-0.1.1.tar.gz

Download URL obfupy-0.1.1.tar.gz
Size 28.7 kB
Tags Source
SHA-256 checksum
How to use checksums
0c6d689972eb20bdce8cfc031d61bb8a07382abd92126833cf01dd2f9a705a67
BLAKE2b-256 checksum
How to use checksums
6cfe79018685c043a274c7f3a9679be42d53b436a6408783ab0c0d420e8bfe35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.7

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page