
Ein fortschrittliches Webverzeichnis- und Dateiscanner-Tool, das leistungsfähiger sein wird als DirBuster, Dirsearch, cansina und Yu Jian.一个高级web目录、文件扫描工具,功能将会强于DirBuster、Dirsearch、cansina、御剑。
Ein fortschrittliches Webverzeichnis-Scan-Tool, leistungsfähiger als DirBuster, Dirsearch, cansina, Yujian

Nach umfangreicher Recherche sollte ein hervorragendes Webverzeichnis-Scan-Tool mindestens die folgenden Funktionen bieten:
Schauen wir uns nun die Besonderheiten von Dirmap an.
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
Einzelziel, Standard HTTP
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
Subnetz (CIDR-Format)
python3 dirmap.py -i 192.168.1.0/24 -lcf
Netzwerkbereich
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
python3 dirmap.py -iF targets.txt -lcf
targets.txt unterstützt die oben genannten Formate.
output im Projektstammverzeichnis gespeichertZieldomain.txt erstelltBenutzerdefinierte Dirmap-Konfiguration, um die erweiterten Funktionen zu erkunden.
Die detaillierte Konfiguration erfolgt vorerst durch Laden einer Konfigurationsdatei. Befehlszeilenparameter für die detaillierte Konfiguration werden nicht unterstützt!
Bearbeiten Sie die Datei dirmap.conf im Projektstammverzeichnis zur Konfiguration.
Erläuterung der dirmap.conf-Konfiguration:
# Rekursiver Scan-Konfiguration
[RecursiveScan]
# Rekursiven Scan aktivieren: 0=deaktiviert, 1=aktiviert
conf.recursive_scan = 0
# Bei diesen Statuscodes wird rekursiver Scan gestartet. Standard: [301,403]
conf.recursive_status_code = [301,403]
# Scan abbrechen, wenn URL diese Länge überschreitet
conf.recursive_scan_max_url_length = 60
# Diese Dateierweiterungen werden nicht rekursiv gescannt
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
# Auszuschließende Verzeichnisse. Standard: leer. Andere Konfig: z.B. ['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
# Scanmodus-Konfiguration (4 Modi, nur 1 gleichzeitig)
[ScanModeHandler]
# Wörterbuchmodus: 0=deaktiviert, 1=einzelnes Wörterbuch, 2=mehrere Wörterbücher
conf.dict_mode = 1
# Pfad zum einzelnen Wörterbuch
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
# Pfad zu mehreren Wörterbüchern, Standard: dictmult
conf.dict_mode_load_mult_dict = "dictmult"
# Brute-Force-Modus: 0=deaktiviert, 1=aktiviert
conf.blast_mode = 0
# Minimale Länge des generierten Wörterbuchs. Standard: 3
conf.blast_mode_min = 3
# Maximale Länge des generierten Wörterbuchs. Standard: 3
conf.blast_mode_max = 3
# Standardzeichensatz: a-z. Noch nicht verwendet.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
# Standardzeichensatz: 0-9. Noch nicht verwendet.
conf.blast_mode_num = "0123456789"
# Benutzerdefinierter Zeichensatz. Standard: "abc". Mit abc Wörterbuch erstellen
conf.blast_mode_custom_charset = "abc"
# Benutzerdefinierter Fortsetzungszeichensatz. Standard: leer.
conf.blast_mode_resume_charset = ""
# Crawler-Modus: 0=deaktiviert, 1=aktiviert
conf.crawl_mode = 0
# Suffix-Wörterbuch für dynamische Payload-Generierung
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
# robots.txt analysieren. Noch nicht implementiert.
conf.crawl_mode_parse_robots = 0
# XPath-Ausdruck zum Parsen von HTML-Seiten
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
# Dynamische Wörterbucherstellung durch Crawler aktivieren. Standard: 1. Andere: 0=deaktiviert, 1=aktiviert
conf.crawl_mode_dynamic_fuzz = 1
# Fuzz-Modus: 0=deaktiviert, 1=einzelnes Wörterbuch, 2=mehrere Wörterbücher
conf.fuzz_mode = 0
# Pfad zum einzelnen Fuzz-Wörterbuch
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
# Pfad zu mehreren Fuzz-Wörterbüchern, Standard: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
# Fuzz-Tag festlegen. Standard: {dir}. Tag als Einfügepunkt für Wörterbuch: http://target.com/{dir}.php -> http://target.com/jede Zeile des Wörterbuchs.php. Andere Konfig: z.B. {dir}, {ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"
# Payload-Konfiguration. Noch nicht implementiert.
[PayloadHandler]
# Anfragekonfiguration
[RequestHandler]
# Benutzerdefinierte Anfrage-Header. Standard: leer. Andere Konfig: z.B. test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
# Benutzerdefinierter User-Agent. Standard: Chrome-UA.
conf.request_header_ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
# Benutzerdefiniertes Cookie. Standard: leer. Andere Konfig: z.B. cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
# Benutzerdefinierte 401-Authentifizierung. Noch nicht implementiert, da benutzerdefinierte Header dies abdecken (faul XD)
conf.request_header_401_auth = ""
# Benutzerdefinierte Anfragemethode. Standard: get. Andere Konfig: z.B. get; head
#conf.request_method = "head"
conf.request_method = "get"
# Timeout pro Anfrage. Standard: 3 Sekunden.
conf.request_timeout = 3
# Zufällige Verzögerung (0-x) Sekunden zwischen Anfragen. Parameter muss Integer sein. Standard: 0.
conf.request_delay = 0
# Anzahl gleichzeitiger Coroutinen pro Ziel. Standard: 30
conf.request_limit = 30
# Maximale Wiederholungsversuche. Noch nicht implementiert.
conf.request_max_retries = 1
# Persistente Verbindung. Verwendung von session(). Noch nicht implementiert.
conf.request_persistent_connect = 0
# 302-Weiterleitung. Standard: False, keine Weiterleitung. Andere: True; False
conf.redirection_302 = False
# Suffix nach Payload hinzufügen. Standard: leer. Andere: txt; php; asp; jsp
#conf.file_extension = "txt"
conf.file_extension = ""
# Antwortkonfiguration
[ResponseHandler]
# Zu protokollierende Antwort-Statuscodes. Standard: [200]. Andere: z.B. [200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
# Content-Type-Antwort-Header protokollieren. Standard: 1 (ja)
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
# Seitengröße protokollieren. Standard: 1 (ja)
#conf.response_size = 0
conf.response_size = 1
# Automatische 404-Seitenerkennung. Standard: True. Andere: True; False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
# Benutzerdefinierter regulärer Ausdruck für 503-Seite. Noch nicht implementiert.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
# Benutzerdefinierter regulärer Ausdruck für Seiteninhalt
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
# Seiten mit einer bestimmten Größe überspringen. Bei keiner Angabe: "None". Standard: "None". Andere: None; 0b; 1k; 1m
#conf.skip_size = "0b"
conf.skip_size = "None"
# Proxy-Optionen
[ProxyHandler]
# Proxy-Konfiguration. Standard: "None", kein Proxy. Andere: z.B. {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
#conf.proxy_server = {"http":"http://127.0.0.1:8080","https":"https://127.0.0.1:8080"}
conf.proxy_server = None
# Debug-Optionen
[DebugMode]
# Payloads ausgeben und beenden
conf.debug = 0
# Update-Optionen
[CheckUpdate]
# GitHub-Update abrufen. Noch nicht implementiert.
conf.update = 0
Die Wörterbuchdateien befinden sich im Ordner data im Projektstammverzeichnis.
bruter.py Zeile 517: bar.log.start(). Lösung: Installieren Sie progressbar2. Deinstallieren Sie progressbar, um Namenskonflikte zu vermeiden. Danke an einen unbekannten Benutzer für den Hinweis.Befehle ausführen:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
Dirmap hat bei der Entwicklung auf die Vorgehensweise und Gedanken vieler exzellenter Open-Source-Projekte zurückgegriffen. Hiermit möchten wir uns bedanken.
E-Mail: [email protected]
