Thank you for considering contributing to ShellForge! This document outlines the process and guidelines for contributions.
- Be respectful and professional
- Follow ethical guidelines for security research
- Do not submit malicious code
- Help maintain a welcoming community
- Check if the bug has already been reported in Issues
- Create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- System information (OS, Python version)
- Check existing Issues and Discussions
- Create a new issue or discussion with:
- Clear description of the enhancement
- Use cases and benefits
- Possible implementation approach
- Fork the repository
- Create a new branch (
git checkout -b feature/amazing-feature) - Make your changes
- Test thoroughly
- Commit your changes (
git commit -m 'Add amazing feature') - Push to your branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow PEP 8 style guide
- Add comments for complex logic
- Update documentation if needed
- Test on Python 3.6+
- Keep code clean and readable
To add a new file extension:
- Add templates to the
self.templatesdictionary in_load_templates() - Include at least:
reverse: Reverse shell template with{host}and{port}placeholdersbasic: Basic shell template
- Test the new extension thoroughly
- Add method to
self.obfuscation_methodsdictionary - Implement the method (e.g.,
def _obfuscate_yourmethod(self, text: str) -> str:) - Add to CLI choices in
parser.add_argument('--obfuscate') - Add to
--list-obfuscationoutput - Document the method
- Add method to
self.bypass_methodsdictionary - Implement the method (e.g.,
def _bypass_yourmethod(self, filename: str, shell_content: str) -> tuple:) - Add to CLI choices in
parser.add_argument('--bypass') - Add to
--list-bypassesoutput - Document the method
-
Clone the Repository
git clone https://github.com/Wael-Rd/shellforge.git cd shellforge -
Install in Development Mode
pip3 install -e .This installs ShellForge globally while keeping your local changes active.
-
Run Tests
# Test basic generation shellforge 192.168.1.100 4444 php -o test.php # Test obfuscation shellforge 192.168.1.100 4444 ps1 --obfuscate -o test.ps1
shellforge/
├── setup.py # Installation configuration
├── bin/shellforge # Entry point script
├── shellforge/ # Main package
│ ├── main.py # CLI entry point
│ ├── core/ # Core generators
│ │ ├── config.py
│ │ ├── generator.py
│ │ └── polyglot.py
│ ├── templates/ # Base64 encoded templates
│ │ ├── data.py
│ │ └── manager.py
│ ├── obfuscators/ # Polymorphic engines
│ │ ├── polymorphic.py
│ │ └── steganography.py
│ └── bypasses/ # Evasion modules
│ ├── archives.py
│ ├── sandbox.py
│ └── persistence.py
├── docs/ # Documentation
└── README.md
Before submitting a PR, test:
# Basic functionality
python3 shellforge.py 192.168.1.100 4444 php
# New obfuscation (if added)
python3 shellforge.py 192.168.1.100 4444 php --obfuscate yourmethod
# New bypass (if added)
python3 shellforge.py 192.168.1.100 4444 php --bypass yourmethod --output test.php
# List commands
python3 shellforge.py --list-extensions
python3 shellforge.py --list-obfuscation
python3 shellforge.py --list-bypassesFeel free to open a Discussion if you have questions!
Thank you for contributing to ShellForge! 🚀