βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββ βββ βββ βββββββ βββββββββββββββββ βββββββ ββββββββββ β
β ββββββββ βββ βββββββββββββββββββββββββββββ βββββββββββββββββββ β
β βββ βββββββββββββββ βββββββββββ βββ βββββββββ ββββββββββββββ β
β βββ ββββββββββββββ βββββββββββ βββ βββββββββ ββββββββββββββ β
β ββββββββββββ ββββββββββββββββββββ βββ ββββββββββββββ βββ β
β βββββββ βββ βββ βββββββ ββββββββ βββ βββββββ ββββββ βββ β
β β
β Web Directory & File Fuzzer Tool β
β by egnake β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Fast, powerful, and flexible web directory fuzzing tool
Features β’ Installation β’ Usage β’ Examples β’ License
- π₯ Multi-threading - Blazing fast with 50+ concurrent threads
- π Extension Fuzzing - Automatically append extensions (.php, .html, .bak, etc.)
- π Recursive Scanning - Automatically scan discovered directories
- π― Status Code Filtering - Filter by HTTP status codes
- π Response Size Filtering - Filter by response content length
- π Proxy Support - Burp Suite, OWASP ZAP integration
- π Authentication - Basic/Digest auth support
- πͺ Cookie Support - Session cookies for authenticated scanning
- π Random User-Agent - Evade detection with rotating User-Agents
- β±οΈ Rate Limiting - Delay between requests to avoid blocking
- π Multiple Formats - TXT, JSON, CSV output
- π¨ Rich CLI - Beautiful colorized terminal output
- π Statistics - Detailed scan statistics and summary
- Python 3.8+
- pip
# Clone the repository
git clone https://github.com/egnake/ghost-dir.git
cd ghost-dir
# Install dependencies
pip install -r requirements.txtrequests>=2.28.0
rich>=13.0.0
colorama>=0.4.6
urllib3>=2.0.0
# Simple scan
python ghost_dir.py -u https://target.com -w wordlists/common.txt
# Scan with extensions
python ghost_dir.py -u https://target.com -w wordlists/common.txt -x php,html,txt,bak
# Fast scan with 50 threads
python ghost_dir.py -u https://target.com -w wordlists/common.txt -t 50# Recursive scanning (depth: 3)
python ghost_dir.py -u https://target.com -w wordlists/common.txt -r --recursive-depth 3
# Through proxy (Burp Suite)
python ghost_dir.py -u https://target.com -w wordlists/common.txt --proxy http://127.0.0.1:8080
# JSON output
python ghost_dir.py -u https://target.com -w wordlists/common.txt -o results.json --format json
# With cookies
python ghost_dir.py -u https://target.com -w wordlists/common.txt --cookies "session=abc123; token=xyz"
# With basic auth
python ghost_dir.py -u https://target.com -w wordlists/common.txt --auth admin:password
# Filter by response size
python ghost_dir.py -u https://target.com -w wordlists/common.txt --min-length 100 --exclude-length 1234
# Skip SSL verification
python ghost_dir.py -u https://target.com -w wordlists/common.txt -k# Single header
python ghost_dir.py -u https://target.com -w wordlists/common.txt -H "Authorization: Bearer token123"
# Multiple headers
python ghost_dir.py -u https://target.com -w wordlists/common.txt -H "X-Api-Key: key" -H "X-Custom: value"| Parameter | Description |
|---|---|
-u, --url |
Target URL (required) |
-w, --wordlist |
Wordlist file path (required) |
| Parameter | Default | Description |
|---|---|---|
-t, --threads |
10 | Number of concurrent threads |
-x, --extensions |
- | File extensions to append |
-s, --status-codes |
200,201,... | Status codes to show |
-e, --exclude-codes |
- | Status codes to exclude |
--timeout |
10 | Request timeout (seconds) |
--delay |
0 | Delay between requests |
-r, --recursive |
False | Enable recursive scanning |
--recursive-depth |
2 | Maximum recursion depth |
| Parameter | Description |
|---|---|
--min-length |
Minimum response length |
--max-length |
Maximum response length |
--exclude-length |
Exclude specific lengths |
--match-string |
Match string in response |
--exclude-string |
Exclude if string found |
| Parameter | Description |
|---|---|
--proxy |
Proxy URL |
--cookies |
Cookie string |
-H, --header |
Custom header (repeatable) |
-A, --user-agent |
Custom User-Agent |
--random-agent |
Use random User-Agent |
-L, --follow-redirects |
Follow HTTP redirects |
-k, --insecure |
Skip SSL verification |
--auth |
Basic auth (user:pass) |
| Parameter | Default | Description |
|---|---|---|
-o, --output |
- | Output file path |
--format |
txt | Output format (txt/json/csv) |
-q, --quiet |
False | Quiet mode |
--no-color |
False | Disable colored output |
| File | Description | Entries |
|---|---|---|
wordlists/common.txt |
Common directories and files | 150+ |
wordlists/backup.txt |
Backup file patterns | 100+ |
wordlists/admin.txt |
Admin panel paths | 130+ |
- SecLists - Ultimate collection
- dirbuster-lists
- fuzzdb
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β βββββββ βββ βββ βββββββ βββββββββββββββββ βββββββ ββββββββββ β
β ββββββββ βββ βββββββββββββββββββββββββββββ βββββββββββββββββββ β
β βββ βββββββββββββββ βββββββββββ βββ βββββββββ ββββββββββββββ β
β Author: egnake | v1.0.0 β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[*] Target URL : https://target.com
[*] Wordlist : wordlists/common.txt
[*] Threads : 50
[*] Extensions : php, html, txt
[+] Target accessible: https://target.com (Status: 200)
[*] Wordlist loaded: 150 words
[*] Starting scan...
/admin (Status: 301 | Size: 162 | Time: 0.12s) -> https://target.com/admin/
/backup (Status: 403 | Size: 280 | Time: 0.08s)
/config.php (Status: 200 | Size: 0 | Time: 0.15s)
/login (Status: 200 | Size: 4521 | Time: 0.10s)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SCAN SUMMARY
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
[*] Total Requests : 450
[*] Found : 4
[*] Errors : 2
[*] Elapsed Time : 3.45 seconds
[*] Requests/Second : 130.43
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
This tool is intended for legal and ethical use only:
- β Security testing on your own systems
- β Authorized penetration testing
- β Bug bounty programs with permission
- β Unauthorized access to systems
The user is solely responsible for any misuse of this tool.
This project is licensed under the MIT License - see the LICENSE file for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
egnake
- GitHub: @egnake
If you find this tool useful, please consider giving it a star on GitHub!