Contributing to Resources
The Exegol resources repository contains additional resources and tools that security experts need to use on target machines (e.g. enumeration scripts, webshells, etc.). These resources are managed by the Wrapper, and shared with every Exegol container on your machine. On the repository, they are automatically downloaded and updated using a script called update-resources.sh
.
How it works
The update-resources.sh
script is responsible for downloading and maintaining various security tools and resources Here's how it works:
The script creates a structured directory hierarchy for different types of resources:
- Windows tools
- Linux tools
- macOS tools
- Webshells (PHP, ASPX, JSP)
- ...
For each tool, the script should:
- Download the latest version from the official source
- Place it in the appropriate directory
- Add an entry to
resources_list.csv
with the tool's name, link, and description using theadd-to-list
instruction
The script maintains a list of tools including:
- System utilities (Sysinternals, PEASS suite)
- Enumeration tools (LinEnum, Linux Smart Enumeration)
- Exploitation tools (Mimikatz, JuicyPotato)
- Network tools (Chisel, Rustscan)
- ...
Automated updates
The resources are automatically updated through a GitHub Actions workflow that:
- Runs monthly to check for new versions of tools
- Executes the
update-resources.sh
script - Creates a new branch with the updated resources
- Opens a Pull Request for maintainers to review
This ensures that Exegol users always have access to the latest versions of security tools.
Getting started
- Fork the Exegol-resources repository
- Checkout the
dev
branch - (optional) create a new branch in your fork, if you plan on working on different topics
- Create your content using this guide
- Make sure your changes work locally
- Stage, Commit, and Push your changes (including
update-resources.sh
and the new resources) - Submit a Pull Request (https://github.com/ThePorgs/Exegol-resources/compare)
Adding new tools
To add a new tool to the resources:
- Create a new function in
update-resources.sh
following the existing pattern - Add the tool's download logic and directory structure
- Use the
add-to-list
function so that the tool is added automatically to the documentation later on - Add your new function to the
add_resources
function - Test your changes locally by running the script
Example of adding a new tool:
function add_new_tool() {
info "Downloading New Tool"
chkfs "./category/new_tool/"
wget -O ./category/new_tool/tool.exe "https://example.com/tool.exe"
add-to-list "New Tool,https://example.com/tool,Description of the tool"
}