
Dirbleは、WindowsおよびLinux向けのウェブサイトディレクトリスキャンツールです。高速で動作し、使いやすいように設計されています。
Linux、Windows、Mac用のプリコンパイル済みバイナリをダウンロードするか、Cargoを使用してソースをコンパイルし、ターミナルから実行します。Dirbleがデフォルトで使用するワードリストは、実行ファイルと同じディレクトリにあるdirble_wordlist.txtです。
BlackArchではsudo pacman -S dirbleでインストールできます。
Dockerイメージもあり、以下のように実行できます:
docker run --rm -t isona/dirble [dirble arguments]
ヘルプテキストはdirble --helpで表示できます。またはGitHub Wiki(https://github.com/nccgroup/dirble/wiki/Help-Text)でも確認できます。
カレントディレクトリのデフォルトのdirble_wordlist.txtを使用してウェブサイトに対して実行:
dirble [address]
別のワードリストを使用し、.phpおよび.html拡張子を含めて実行:
dirble [address] -w example_wordlist.txt -x .php,.html
一覧表示可能なディレクトリのスクレイピングを有効にして:
dirble [address] --scrape-listable
拡張子のリストとホストのリストを指定:
dirble [address] -X wordlists/web.lst -U hostlist.txt
コマンドラインで複数のホストを指定:
dirble [address] -u [address] -u [address]
Gobusterのデフォルトスタイルでスレッド化を実行し、再帰を無効にしてメインディレクトリを10スレッドでスキャン:
dirble [address] --max-threads 10 --wordlist-split 10 -r
現在のプラットフォームでビルドするには、cargoがインストールされていることを確認し、cargo build --releaseを実行します。または、makeを実行するとリリースモードでバイナリがビルドされます(内部でcargo build --releaseを実行)。
32ビットおよび64ビットのLinuxとWindowsターゲット向けにクロスコンパイルするための便利なmakefileがあります。make releaseはcrossを使用して4つのターゲットすべてをビルドします。これにはcrossとdockerがインストールされている必要があります(cargo install cross)。
以下のグラフは、各ツールをHyperfineで、レイテンシ5ms、パケットロス1%のテストサーバーに対して実行して生成されました。(Gobusterは再帰がないため省略)。

Dirbleは、サーバーから送信されるレスポンスコードに基づいてファイルを検出します。動作はレスポンスコードの種類によって大まかに分類できます。
200: パスが存在し有効301, 302: リダイレクト;コード、サイズ、Locationヘッダーを報告404: 見つかりません;デフォルトではこれらのレスポンスは報告されない+ [url] (CODE:[code]|SIZE:[size])というDirble形式で報告されるパスは、[url](末尾スラッシュなし)へのリクエストが[url]/(末尾スラッシュあり)への301または302リダイレクトを返した場合、ディレクトリとして分類されます。これはDプレフィックスで報告され、再帰が有効な場合はスキャンキューに追加されます。
この方法はリダイレクト先が存在するかアクセス可能かに依存しないため、ディレクトリのレスポンスコードとサイズを決定するために別のリクエストが行われます。
一覧表示可能なディレクトリは、url/の内容を検査することで検出されます。200レスポンスコードを返し、ボディに"parent directory"、"up to "、"directory listing for"(大文字小文字を区別しない)のいずれかが含まれている場合、一覧表示可能なディレクトリである可能性が高いです。--scrape-listableが有効な場合、URLが一覧から解析され(ソートリンクやスコープ外のリンクは無視)、末尾スラッシュがある場合はスキャンキューに追加されます。一覧表示可能なディレクトリは出力でLプレフィックスが付きます。
Dirbleのスレッド動作は、ワードリストとジョブの概念に基づいています。ジョブは他のタスクから独立して実行できるタスクであり、例えば一連のURLをリクエストすることです。ワードリストは定義された変換を持つ単語のリストであり、例えばリスト{admin, config, shop}と変換append ".php"を組み合わせると、1つのワードリストインスタンスになります。
さらにパフォーマンスを向上させるために、ワードリスト分割の概念を導入します。これは、1つのワードリストインスタンス(すなわち変換付きの単語)を複数のジョブに分割し、それぞれがリストの一部を担当するプロセスです。各ワードリストが分割されるインターリーブされた部分の数は、--wordlist-splitオプション(デフォルト3)で定義されます。
ディレクトリが検出されるたびに(そして再帰が有効な場合)、分割された各ワードリスト(変換付き)に対して新しいジョブが作成され、中央のジョブキューに追加されます。
同時タスクの最大数は--max-threadsパラメータで定義され、Dirbleはキューに追加されたジョブをこの制限まで開始します。ジョブが完了するたびに(つまり分割ワードリストが使い果たされる)、Dirbleはキューから次のジョブを取り出して開始します。
GPL v3.0の下でリリースされています。詳細はLICENSEを参照してください。