{"id":13862620,"url":"https://github.com/NetSPI/AutoDirbuster","last_synced_at":"2025-07-14T12:31:37.899Z","repository":{"id":149489091,"uuid":"290212781","full_name":"NetSPI/AutoDirbuster","owner":"NetSPI","description":"Automatically run and save ffuf scans for multiple IPs","archived":false,"fork":false,"pushed_at":"2024-03-19T19:34:33.000Z","size":13775,"stargazers_count":72,"open_issues_count":0,"forks_count":20,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-04-14T05:29:13.900Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NetSPI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2020-08-25T12:45:01.000Z","updated_at":"2024-03-28T18:44:21.000Z","dependencies_parsed_at":"2024-03-19T20:41:26.407Z","dependency_job_id":"a13c9c1e-b0b6-410b-80af-076f85f082b0","html_url":"https://github.com/NetSPI/AutoDirbuster","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetSPI%2FAutoDirbuster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetSPI%2FAutoDirbuster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetSPI%2FAutoDirbuster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NetSPI%2FAutoDirbuster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NetSPI","download_url":"https://codeload.github.com/NetSPI/AutoDirbuster/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225974526,"owners_count":17553969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-05T06:01:48.698Z","updated_at":"2024-11-22T22:31:21.176Z","avatar_url":"https://github.com/NetSPI.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"```\n                         ___         __        ____  _      __               __\n                        /   | __  __/ /_____  / __ \\(_)____/ /_  __  _______/ /____  _____\n                       / /| |/ / / / __/ __ \\/ / / / / ___/ __ \\/ / / / ___/ __/ _ \\/ ___/\n                      / ___ / /_/ / /_/ /_/ / /_/ / / /  / /_/ / /_/ (__  ) /_/  __/ /\n                     /_/  |_\\__,_/\\__/\\____/_____/_/_/  /_.___/\\__,_/____/\\__/\\___/_/\n```\n\n### Automatically run and save ffuf scans for multiple IPs\n\n## Contents\n  * [Quick Run](#quick-run)\n  * [FAQ](#faq)\n    * [Why?](#why)\n    * [What is the recommended usage?](#what-is-the-recommended-usage)\n    * [What data does this need?](#what-data-does-this-need)\n    * [How does this script work?](#how-does-this-script-work)\n    * [This program isn't working](#this-program-isnt-working)\n  * [Usage](#usage)\n\n## Quick Run\n```\ngit clone https://github.com/NetSPI/AutoDirbuster.git\ncd AutoDirbuster \u0026\u0026 pip3 install -r requirements.txt\npython AutoDirbuster.py ip_port_list.txt -w my_wordlist.txt\n```\n\n## FAQ\n### Why?\nFfuf is a great directory buster but running it against multiple IPs and ports is a very manual process with a lot of downtime between scans. This script attempts to automate that process and eliminates downtime between scans.\n\n### What is the recommended usage?\n**If attacking multiple targets:**\n* Run Nmap and find open ports\n* Review the Nmap results and create an IP:port list, one per line\n* Run AutoDirbuster against the open ports\n* AutoDirbuster will determine if the provided port is open and if the service is HTTP based\n\n  * `python AutoDirbuster.py ip_port_list.txt -w my_wordlist.txt`\n\n**If attacking a single target:**\n\n* `python AutoDirbuster.py -u example.com:80 -w my_wordlist.txt`\n\n**Useful options include:**\n\n| Option          | Purpose                                                           |\n|-----------------|-------------------------------------------------------------------|\n| --dns           | Resolve IPs to hostnames                                          |\n| --extensions    | File extensions to use when scanning                              |\n| --rate          | Rate of requests per second                                       |\n| --timeout       | Set a timeout value for each host in minutes                      |\n| --match-codes   | Match provided HTTP status codes                                  |\n| --custom-option | Specify ffuf option that AutoDirbuster doesn't support by default |\n\nSpecify the `--help` flag for a full list of options.\n\n### What data does this need?\nThe program can take two data sources:\n1. List of IP:port or hostname:port, one per line\n\n* `python AutoDirbuster.py ip_port_list.txt -w my_wordlist.txt`\n\n2. Single target\n\n* `python AutoDirbuster.py -u example.com:80 -w my_wordlist.txt`\n\n### How does this script work?\n* A list of targets is provided\n* A TCP connect scan is done on the target port to test if it's open\n* If the port open, HTTP and HTTPS requests are sent to determine if the service is HTTP-based and whether it requires TLS\n* If the service is HTTP, a check is done to determine if a previous report file is in the same directory\n  * Report files follow the format: `ffuf-report-{proto}_{target}_{port}'`\n* ffuf is run using Python's `subprocess.Popen()`\n* The next IP:port goes through the same process (TCP connect, HTTP service query, dirbust)\n\n### This program isn't working\nEnsure the following:\n* Are all the dependencies listed in `requirements.txt` installed?\n* Is `ffuf` installed and in your system path?\n  * Try running `ffuf -V`\n  * Installation instructions can be found on the [ffuf GitHub repository page](https://github.com/ffuf/ffuf)\n* You may need to use Python 3.11+\n  * Version information can be obtained by running `python -V`\n\n## Usage\n```\n# python AutoDirbuster.py --help\nusage:\n     ___         __        ____  _      __               __\n    /   | __  __/ /_____  / __ \\(_)____/ /_  __  _______/ /____  _____\n   / /| |/ / / / __/ __ \\/ / / / / ___/ __ \\/ / / / ___/ __/ _ \\/ ___/\n  / ___ / /_/ / /_/ /_/ / /_/ / / /  / /_/ / /_/ (__  ) /_/  __/ /\n /_/  |_\\__,_/\\__/\\____/_____/_/_/  /_.___/\\__,_/____/\\__/\\___/_/\n\nAutoDirbuster.py [options] {target file}\n\nAutomatically run and save ffuf scans for multiple IPs\n\noptions:\n  -h, --help            show this help message and exit\n\nAutoDirbuster options:\n  target                Target file with IP:port, one per line\n  -u, --url             Single target mode, positional argument is target in IP:port\n                        format\n  -f, --force           Force mode; don't check if report file exists, this will result in\n                        previous reports being overwritten\n  --dns                 Automatically resolve IP address to hostname to use during dirbust\n  --debug               Show debugging information\n\nffuf options:\n  -w WORDLIST, --wordlist WORDLIST\n                        Wordlist to use for list based brute force\n  -X METHOD, --method METHOD\n                        HTTP method to use; default=GET\n  -e EXTENSIONS, --extensions EXTENSIONS\n                        File extension list (e.g.: \"asp,aspx\"); default is None\n  -t THREADS, --threads THREADS\n                        Override the default number of ffuf threads\n  --rate RATE           Rate of requests per second\n  -to TIMEOUT, --timeout TIMEOUT\n                        Set a timeout value for each host in minutes; default is None\n  -fr, --follow-redirects\n                        Follow redirects; default is False\n  -r, --recursive       Recursive mode; default is False\n  -s STARTPOINT, --startpoint STARTPOINT\n                        Start point of the scan; default=/\n  -of OUTPUT_FORMAT, --output-format OUTPUT_FORMAT\n                        Output format to write results to; default=csv\n  -mc MATCH_CODES, --match-codes MATCH_CODES\n                        Match HTTP status codes;\n                        default=200,204,301,302,307,401,403,405,500\n  -nac, --no-auto-calibrate\n                        Do not automatically calibrate filtering options\n  -H HEADER, --header HEADER\n                        HTTP header \"Name: Value\", separated by colon\n  --custom-option CUSTOM_OPTION [CUSTOM_OPTION ...]\n                        Specify ffuf option that AutoDirbuster doesn't support by default.\n                        Argument should be a key/value pair separated by a comma with no\n                        leading '-', example: --custom-option=ml,1. If the provided\n                        argument is a boolean, provide an empty value: --custom-option=sa,\n\nExamples:\n    python AutoDirbuster.py ip_port_list.txt -w my_wordlist.txt\n    python AutoDirbuster.py -st example.com:80 -w my_wordlist.txt -mc 200,500\n    python AutoDirbuster.py ip_port_list.txt -w my_wordlist.txt -r -e \"php,html\" --dns\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNetSPI%2FAutoDirbuster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNetSPI%2FAutoDirbuster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNetSPI%2FAutoDirbuster/lists"}