🔥 fuzzy-httpserver
A lightweight, zero-dependency Python HTTP file server with fuzzy filename matching and automatic fallback directory listing. Serve files easily without requiring users to know exact filenames — great for red teams, internal tooling, and lazy typing 😎.
🚀 Features
- 🔍 Fuzzy and prefix-based filename matching
- 🧾 Server-side logs directory contents if no file is matched
- ⚙️ Supports custom port and directory configuration
- ✅ No external dependencies — plug-and-play
- 🐍 Written in pure Python 3
- 📤 Supports POST data requests
- 🎨 Colored server-side output for better readability
- 🖵 Shows IP addresses of key network interfaces at startup
- Shows the Size and MD5 Hash of Received File - Integrity Check
🚀 Major Update 1.5.0
Now Fuzzy-HTTPServer can install a collection of essential binaries you’ll need during CTFs or pentest engagements, including:
- Custom exploit code in C
- All the Potato privilege escalation binaries (
.exeand PowerShell) - Privilege escalation enumeration scripts
- Essential PowerShell tooling (e.g., SharpHound)
- Pivoting agents, static builds of netcat, nmap, and more
In short: almost every deliverable binary you might need — all in one place.
🔜 More binaries will be added soon, along with a feature to update specific binaries to their latest versions automatically.
📦 Installation
Install via pip:
pip install fuzzy-httpserver
🧪 Usage
Serve the current directory on the default port (8000):
fuzzy-httpserver
Serve a specific directory on a custom port:
fuzzy-httpserver -d /opt/tools -p 9001
📥 Install Pre-Bundled Binaries
You can extract and install a curated collection of binaries needed for CTFs and pentests (e.g., Potato exploits, privilege escalation scripts, SharpHound, pivoting agents, static netcat/nmap, etc.).
Simply specify an output directory with -i:
fuzzy-httpserver -i /opt/redteam-tools
⚠️ Note: You must have 7z installed. If missing, run:
sudo apt install p7zip-full
Example
wget http://<ip>:8000/ligolo-win
Even if the exact file is ligolo-Agent-Windows-amd.exe, it will still serve the file thanks to fuzzy matching. If nothing is found, you’ll get:
[!] File not found. Available files:
- chisel_windows
- payload_generator
Basically the list of files on that server directory
🛠 Command-Line Options
| Option | Description |
|---|---|
-p, --port |
Port to listen on (default: 8000) |
-d, --directory |
Directory to serve (default: current dir) |
-i, --install |
Install essential binaries (extracted from transfers.7z) into given path |
📨 POST Support
You can now send raw data via HTTP POST, and it will be saved on the server as a file. The filename will be prefixed with fuzzy_post_data_ followed by the requested name.
Example
curl --data @file.txt http://<ip>:8000/mydump.txt
#OR
curl --data "username=admin&password=1234" http://<ip>:8000/formdata.txt
🧠 Why?
Sometimes during internal testing, CTFs, or red teaming, we just want to serve files quickly — but can’t remember exact filenames. fuzzy-httpserver saves time by letting you guess loosely.
🧑💻 Author & Credits
Built with 💻 and ☕ by PakCyberbot.
🔗 Connect with me:
- 🌐 Website: http://pakcyberbot.com
- Twitter/x: https://x.com/pakcyberbot
- GitHub: https://github.com/PakCyberbot
- LinkedIn: https://www.linkedin.com/in/pakcyberbot/
- Medium: https://medium.com/@pakcyberbot
✨ Contributions Welcome
Want to improve it? Found a bug? PRs and issues are welcome!
Metadata
Release files for fuzzy-httpserver 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fuzzy_httpserver-1.5.0.tar.gz | 6.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fuzzy_httpserver-1.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.9 kB
Release files / fuzzy_httpserver-1.5.0.tar.gz
| Download URL | fuzzy_httpserver-1.5.0.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f76d9f422cd000f6454910dbdf0595804e5ead4a979f3ed24578f914f054cea4
|
|
BLAKE2b-256 checksum How to use checksums |
f97f810e652fe75e9c6ee18e68e6e8e53f3b13a4766a82b4816b1b1f2bf0532f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|
Release files / fuzzy_httpserver-1.5.0-py3-none-any.whl
| Download URL | fuzzy_httpserver-1.5.0-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7b322b5bccf2b8a8d2ecd42b995d23f556ad8bdfd1e73b7a465dd6b9880162be
|
|
BLAKE2b-256 checksum How to use checksums |
44c648ee7c4305eed3c9c011a82f95ea050f454d51f5911e03cdcade34563627
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.9
|