
빠른 디렉토리 스캐닝 및 스크래핑 도구
Dirble은 Windows와 Linux를 위한 웹사이트 디렉터리 스캐닝 도구입니다. 빠르게 실행되고 사용하기 쉽도록 설계되었습니다.
Linux, Windows 또는 Mac용 사전 컴파일된 바이너리 중 하나를 다운로드하거나 Cargo를 사용하여 소스를 컴파일한 후 터미널에서 실행하세요. Dirble이 기본적으로 사용하는 단어 목록은 실행 파일과 동일한 디렉터리에 있는 dirble_wordlist.txt입니다.
BlackArch에서는 sudo pacman -S dirble을 사용하여 설치할 수 있습니다.
도커 이미지도 있으며, 다음과 같이 실행할 수 있습니다:
docker run --rm -t isona/dirble [dirble arguments]
도움말 텍스트는 dirble --help를 사용하여 표시할 수 있으며, 대안으로 github 위키에서 찾을 수 있습니다: 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를 사용하여 네 가지 대상을 모두 빌드합니다. 이를 위해서는 cross와 docker가 설치되어 있어야 합니다(cargo install cross).
다음 그래프는 5ms 지연 시간과 1% 패킷 손실이 있는 테스트 서버에서 각 도구를 Hyperfine으로 실행하여 생성되었습니다. (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"가 결합되어 하나의 단어 목록 인스턴스를 형성합니다.
성능을 더 향상시키기 위해 단어 목록 분할 개념을 도입합니다. 이는 단일 단어 목록 인스턴스(즉, 변환이 있는 단어)를 여러 작업으로 분할하는 프로세스이며, 각 작업은 목록의 일부를 담당합니다. 각 단어 목록이 분할되는 인터리브된 부분의 수는 --wordlist-split 옵션(기본값 3)으로 정의됩니다.
디렉터리가 감지될 때마다(재귀가 활성화된 경우) 각 분할된 단어 목록(변환 포함)에 대해 새 작업이 생성되어 중앙 작업 큐에 추가됩니다.
동시 작업의 최대 수는 --max-threads 매개변수로 정의되며, Dirble은 작업이 큐에 추가될 때 이 제한까지 작업을 시작합니다. 작업이 완료될 때마다(즉, 분할된 단어 목록이 소진됨) Dirble은 큐에서 다음 작업을 가져와 시작합니다.
GPL v3.0에 따라 배포됩니다. 자세한 내용은 LICENSE를 참조하십시오.