PycDecompiler
A Request Based Pyc decompiler that supports python 3.6+ - 3.13 decompilation.
Install / Use
/learn @rajveerexe/PycDecompilerREADME
PYC Decompiler
<div align="center">
Marshal → PYC Converter & Python Bytecode Decompiler
A powerful utility for converting marshal files to PYC and decompiling Python bytecode back to source
Features • Installation • Usage • CLI Mode • License
</div>📖 About
PYC Decompiler is a comprehensive Python utility designed for bytecode analysis and reverse engineering. It enables you to:
- Convert marshal-based Python files into valid
.pycbytecode files - Decompile
.pycfiles back into readable Python source code - Handle multiple Python versions automatically (3.6 through 3.13)
- Detect file types automatically and process accordingly
⚠️ Important: This tool operates strictly at the bytecode/marshal layer and does not crack encryption or bypass licensing mechanisms.
Use Cases
- 🔍 Reverse engineering (educational purposes)
- 🛡️ Malware analysis and security research
- 📚 Bytecode research and Python internals learning
- 🧪 Code recovery and archival
- 🔧 Python internals debugging
⭐ Features
- 🧠 Marshal → PYC Conversion - Transform marshal files into proper bytecode
- 🧩 PYC → Source Decompilation - Recover readable Python source code
- 🔢 Multi-Version Support - Compatible with Python 3.6 through 3.13
- 🎯 Automatic Detection - Intelligently detects marshal and PYC files
- ⚡ Fast & Automated - Streamlined workflow with minimal manual intervention
- 🖥️ Interactive Menu - User-friendly interface for easy operation
- 🧪 CLI Mode - Command-line interface for scripting and automation
- 🌐 PyLingual Backend - Powered by PyLingual decompilation service
- 📦 Zero External Binaries - No need for separate decompiler installations
🔧 How It Works
Marshal / PYC File
↓
File Type Detection
↓
Version Detection
↓
Magic Header Injection (if marshal)
↓
Upload to PyLingual API
↓
Decompilation Process
↓
Recovered Python Source
Key Principles:
- ✅ No VM patching required
- ✅ No opcode tampering
- ✅ Pure bytecode-level logic
- ✅ Cloud-based decompilation engine
🐍 Supported Python Versions
| Version | Magic Number | Status |
|---------|-------------|--------|
| Python 3.6 | 33 0D 0D 0A | ✅ Supported |
| Python 3.7 | 42 0D 0D 0A | ✅ Supported |
| Python 3.8 | 55 0D 0D 0A | ✅ Supported |
| Python 3.9 | 61 0D 0D 0A | ✅ Supported |
| Python 3.10 | 6F 0D 0D 0A | ✅ Supported |
| Python 3.11 | A7 0D 0D 0A | ✅ Supported |
| Python 3.12 | CB 0D 0D 0A | ✅ Supported |
| Python 3.13 | F3 0D 0D 0A | ✅ Supported |
📋 Requirements
- Python 3.6 or higher
- Internet connection (for PyLingual API access)
- Dependencies:
requests- HTTP library for API communication
Install Dependencies
pip install requests
🚀 Installation
Method 1: Clone from GitHub
# Clone the repository
git clone https://github.com/rajveerexe/PycDecompiler.git
# Navigate to directory
cd PycDecompiler
# Install dependencies
pip install -r requirements.txt
# Run the decompiler
python PycDecompiler.py
Method 2: Direct Download
# Download the script
wget https://raw.githubusercontent.com/rajveerexe/PycDecompiler/main/PycDecompiler.py
# Install dependencies
pip install requests
# Run the script
python PycDecompiler.py
💻 Usage
Interactive Mode
Launch the interactive menu (recommended for beginners):
python PycDecompiler.py
Interactive Menu:
═══════════════════════════════════════════════════════
____ __ _ __
/ __ \__ __/ / (_)___ ____ ___ ______ _/ /
/ /_/ / / / / / / / __ \/ __ `/ / / / __ `/ /
/ ____/ /_/ / /___/ / / / / /_/ / /_/ / /_/ / /
/_/ \__, /_____/_/_/ /_/\__, /\__,_/\__,_/_/
/____/ /____/
═══════════════════════════════════════════════════════
P Y L I N G U A L
═══════════════════════════════════════════════════════
[ 1 ] Convert Marshal to PYC
[ 2 ] Decompile PYC to Python Source
[ 0 ] Exit
Option 1: Convert Marshal to PYC
- Select option
1from the menu - Enter the path to your marshal file (
.pyfile containing marshal data) - Select Python version (or use current version)
- The tool will generate a
.pycfile
Example:
[ ? ] Select option: 1
[ ? ] Enter Marshal file path: obfuscated_script.py
Available Python Versions:
[ 1 ] Python 3.6
[ 2 ] Python 3.7
[ 3 ] Python 3.8
[ 4 ] Python 3.9
[ 5 ] Python 3.10
[ 6 ] Python 3.11
[ 7 ] Python 3.12
[ 8 ] Python 3.13
[ 0 ] Current Version (3.11)
[ ? ] Select version: 0
[ * ] Converting Marshal to PYC (Python 3.11)...
[ ✓ ] Saved: obfuscated_script.pyc
[ ✓ ] Done!
Option 2: Decompile PYC to Python Source
- Select option
2from the menu - Enter the path to your
.pycfile - Wait for the decompilation process (uploads to PyLingual API)
- Decompiled source will be saved as
decoded_[filename].py
Example:
[ ? ] Select option: 2
[ ? ] Enter PYC file path: script.pyc
[ * ] Processing: script.pyc
[ ✓ ] File validated
[ ✓ ] Uploaded with identifier: abc123xyz456
[ 1 ] Stage: decompiling | Elapsed: 2.3s
[ 2 ] Stage: decompiling | Elapsed: 3.8s
[ ✓ ] Decompilation complete (Attempts: 2, Time: 3.85s)
[ ✓ ] Decompiled code saved to: ./decoded_script.py
[ ✓ ] Total execution time: 4.12s
[ ✓ ] Done!
🧪 CLI Mode
Basic PYC Decompilation
python PycDecompiler.py script.pyc
Marshal File Conversion + Decompilation
The tool automatically detects marshal files and converts them:
python PycDecompiler.py obfuscated_script.py
Output:
[ * ] Detected: Marshal file
[ * ] Converting Marshal to PYC (Python 3.11)...
[ ✓ ] Saved: obfuscated_script.pyc
[ * ] Now decompiling PYC...
[ * ] Processing: obfuscated_script.pyc
[ ✓ ] Decompiled code saved to: decoded_obfuscated_script.py
[ ✓ ] Done!
Specify Python Version
python PycDecompiler.py marshal_file.py 3.10
Batch Processing
# Process all PYC files in directory
for file in *.pyc; do
python PycDecompiler.py "$file"
done
# Process all marshal files
for file in obfuscated_*.py; do
python PycDecompiler.py "$file" 3.11
done
🔍 Technical Details
Marshal Detection
The tool automatically detects marshal files by:
- Checking file extension (
.py) - Reading file content and searching for
marshalkeyword - If detected, converts to PYC before decompilation
PYC Magic Numbers
Each Python version has a unique magic number (first 4 bytes of .pyc file):
magic_map = {
"3.6": b"3\r\r\n\x8bq\x98d\x0c\x00\x00\x00\xe3\x00\x00\x00",
"3.7": b"B\r\r\n\x00\x00\x00\x00\x8bq\x98d\x0c\x00\x00\x00",
"3.8": b"U\r\r\n\x00\x00\x00\x00\tq\x98d\x0b\x00\x00\x00",
"3.9": b"a\r\r\n\x00\x00\x00\x00\tq\x98d\x0b\x00\x00\x00",
"3.10": b"o\r\r\n\x00\x00\x00\x00\tq\x98d\x0b\x00\x00\x00",
"3.11": b"\xa7\r\r\n\x00\x00\x00\x004\x0eAi\n\x00\x00\x00",
"3.12": b"\xcb\r\r\n\x00\x00\x00\x00{\x0eAi\n\x00\x00\x00",
"3.13": b"\xf3\r\r\n\x00\x00\x00\x00\x90\x0eAi\n\x00\x00\x00",
}
Decompilation Process
- Upload: File is uploaded to PyLingual API
- Processing: Backend analyzes bytecode structure
- Decompilation: Bytecode is reverse-engineered to source
- Retrieval: Decompiled code is downloaded and saved
⚠️ Legal Disclaimer
This project is intended for educational and research purposes only.
Important Guidelines
- ✅ You are responsible for complying with local laws and regulations
- ✅ Only decompile code you own or have explicit permission to analyze
- ✅ Respect intellectual property and licensing agreements
- ❌ Do not use for DRM bypass or license cracking
- ❌ Do not use for commercial piracy or unauthorized distribution
- ❌ Do not violate software licenses or terms of service
- ❌ The author assumes no responsibility for misuse
Use responsibly and ethically.
🔒 Note: This tool does NOT break encryption, bypass obfuscation, or crack protected software. It works only on standard Python bytecode.
🛠️ Troubleshooting
Common Issues
1. Unsupported Python Version
Error: Invalid Python version: 3.5
Solution: Use Python 3.6 or higher. Check available versions with:
python --version
2. File Not Found
[ ! ] File not found: script.pyc
Solution:
- Verify the file path is correct
- Use absolute paths if relative paths fail
- Check file permissions
3. Not a Valid Marshal File
[ ! ] Not a valid marshal file
Solution:
- Ensure the file contains marshal data
- Try opening the file to verify it's a Python marshal file
- Some obfuscated files may not be standard marshal format
4. Decompilation Failed
[ ! ] Decompilation Error: Upload failed with status code: 502
Possible Causes:
- PyLingual API is temporarily down
- Network connectivity issues
- File is corrupted or heavily obfuscated
Solution:
- Wait a few minutes and try again
- Check your internet connection
- Verify the
.pycfile is valid
5. Service Unavailable (502)
[ ! ] Decompilation Error: Service temporarily unavailable (502)
**Solu
Related Skills
claude-opus-4-5-migration
108.0kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
347.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
openhue
347.2kControl Philips Hue lights and scenes via the OpenHue CLI.
sag
347.2kElevenLabs text-to-speech with mac-style say UX.
