{"id":28729143,"url":"https://github.com/nccgroup/dirble","last_synced_at":"2025-06-15T16:01:55.469Z","repository":{"id":34566260,"uuid":"179077020","full_name":"Isona/dirble","owner":"Isona","description":"Fast directory scanning and scraping tool","archived":false,"fork":false,"pushed_at":"2025-04-08T02:08:15.000Z","size":456,"stargazers_count":626,"open_issues_count":13,"forks_count":85,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-06-11T13:14:05.498Z","etag":null,"topics":["pentest","pentest-tool","tool","web"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Isona.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2019-04-02T12:50:42.000Z","updated_at":"2025-05-18T12:47:38.000Z","dependencies_parsed_at":"2023-12-27T21:47:05.901Z","dependency_job_id":"d33d1c6e-80fc-48b8-9dc6-96f67a7c1525","html_url":"https://github.com/Isona/dirble","commit_stats":null,"previous_names":["isona/dirble","nccgroup/dirble"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/Isona/dirble","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isona%2Fdirble","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isona%2Fdirble/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isona%2Fdirble/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isona%2Fdirble/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Isona","download_url":"https://codeload.github.com/Isona/dirble/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Isona%2Fdirble/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260005519,"owners_count":22944860,"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":["pentest","pentest-tool","tool","web"],"created_at":"2025-06-15T16:01:52.419Z","updated_at":"2025-06-15T16:01:55.459Z","avatar_url":"https://github.com/Isona.png","language":"Rust","readme":"# Introduction\n\nDirble is a website directory scanning tool for Windows and Linux. It's designed to be fast to run and easy to use.\n\n# How to Use\n\nDownload one of the [precompiled binaries](https://github.com/nccgroup/dirble/releases/latest) for Linux, Windows, or Mac, or compile the source using Cargo, then run it from a terminal. The default wordlist Dirble uses is dirble_wordlist.txt in the same directory as the executable.\n\nIt can be installed in BlackArch using `sudo pacman -S dirble`\n\nThere is also a docker image, which can be run as:\n`docker run --rm -t isona/dirble [dirble arguments]`\n\nThe help text can be displayed using `dirble --help`, alternatively it can be found on the github wiki: https://github.com/nccgroup/dirble/wiki/Help-Text\n\n# Example Uses\n\nRun against a website using the default dirble_wordlist.txt from the current directory:\n`dirble [address]`\n\nRun with a different wordlist and including .php and .html extensions:\n`dirble [address] -w example_wordlist.txt -x .php,.html`\n\nWith listable directory scraping enabled:\n`dirble [address] --scrape-listable`\n\nProviding a list of extensions and a list of hosts:\n`dirble [address] -X wordlists/web.lst -U hostlist.txt`\n\nProviding multiple hosts to scan via command line:\n`dirble [address] -u [address] -u [address]`\n\nRunning with threading in Gobuster's default style, disabling recursion and having 10 threads scanning the main directory:\n`dirble [address] --max-threads 10 --wordlist-split 10 -r`\n\n# Building from source\n\nTo build on your current platform, ensure cargo is installed and then run `cargo build --release`. Alternatively, running `make` will build the binary in release mode (internally running `cargo build --release`).\n\nTo cross-compile for 32- and 64-bit Linux and Windows targets, there is a handy makefile. `make release` will build for all four targets using `cross`. This depends on having cross and docker installed (`cargo install cross`).\n\n# Features\n\n* Cookies\n* Custom Headers\n* Extensions and prefixes\n* HTTP basic auth\n* Listable directory detection and scraping\n* Save ouptut to file\n* Save output in XML and JSON formats\n* Proxy support\n* Recursion\n* Status code blacklisting and whitelisting\n* Threading\n* Request throttling\n* Detect not found code of each directory based on response code and length\n* Ability to provide list of URLs to be scanned\n* User agents\n* Scanning with GET, POST or HEAD requests\n* Exclude ranges of response lengths from output\n\n# Performance\n\nThe following graph was generated by running each tool with Hyperfine against a test server with 5ms latency and 1% packet loss. (Gobuster was omitted due to lack of recursion).\n\n![This is a cool graph](images/comparison_graph.png)\n\n# How it works\n\n## Directory Detection\n\nDirble detects files based on the response code sent by the server. The behaviour can be loosely categorised by response code type.\n* `200`: the path exists and is valid\n* `301, 302`: redirection; report the code, size, and Location header\n* `404`: not found; by default these responses are not reported\n* All other response codes are reported in the Dirble format of `+ [url] (CODE:[code]|SIZE:[size])`\n\nA path is classified as a *directory* if a request to `[url]` (with *no* trailing slash) returns a 301 or 302 redirection to `[url]/` (*with* a trailing slash). This gets reported with a `D` prefix and if recursion is enabled will be added to the scan queue. \nThis method is not dependent on the redirection target existing or being accessible, so a separate request will be made to determine the response code and size of the directory.\n\nListable directories are detected by inspecting the content of `url/`: if it returns a 200 response code and the body contains either \"parent directory\", \"up to \" or \"directory listing for\" (case insensitive), then it is likely to be a listable directory. If `--scrape-listable` is enabled, URLs are parsed out of the listing (ignoring sorting links or out of scope links) and added to the scan queue if they have a trailing slash. Listable directories have an `L` prefix in the output.\n\n## Threading\nThe threading behaviour of Dirble is based on the concepts of *wordlists* and *jobs*. A *job* is any task which can be run independently of other tasks, for example requesting a series of URLs. A *wordlist* is a list of words with a defined transformation, for example the list `{admin, config, shop}` together with the transformation `append \".php\"` forms a single wordlist instance.\n\nTo improve performance further, we introduce the concept of *wordlist splitting*. This is the process by which a single *wordlist* instance (*i.e.* words with a transformation) is broken up into multiple jobs, each responsible for a portion of the list. The number of interleaved portions that each wordlist is split into is defined by the `--wordlist-split` option (default 3).\n\nWhenever a directory is detected (and recursion is enabled) new jobs are created for each split wordlist (with transformation) and added to a central *job queue*.\n\nThe maximum number of concurrent tasks is defined by the `--max-threads` parameter, and Dirble will start jobs as they are added to the queue, up to this limit. Whenever a job completes (*i.e.* a split wordlist is exhausted) Dirble will take the next job from the queue and start it.\n\nReleased under GPL v3.0, see LICENSE for more information\n","funding_links":[],"categories":["Rust","Rust (42)","\u003ca id=\"170048b7d8668c50681c0ab1e92c679a\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"375a8baa06f24de1b67398c1ac74ed24\"\u003e\u003c/a\u003e信息收集\u0026\u0026侦查\u0026\u0026Recon\u0026\u0026InfoGather"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnccgroup%2Fdirble","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnccgroup%2Fdirble","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnccgroup%2Fdirble/lists"}