
Una herramienta avanzada de escaneo de directorios y archivos web que será más potente que DirBuster, Dirsearch, cansina y Yu Jian. Una herramienta avanzada de escaneo de directorios y archivos web, cuyas funcionalidades superarán a DirBuster, Dirsearch, cansina y Yu Jian.
Herramienta avanzada de escaneo de directorios web, con funciones más potentes que DirBuster, Dirsearch, cansina, Yujian

Después de una extensa investigación, se resume que una herramienta de escaneo de directorios web excelente debe tener al menos las siguientes funciones:
Entonces, ¡veamos las características de Dirmap!
git clone https://github.com/H4ckForJob/dirmap.git && cd dirmap && python3 -m pip install -r requirement.txt
Objetivo único, por defecto http
python3 dirmap.py -i https://target.com -lcf
python3 dirmap.py -i 192.168.1.1 -lcf
Subred (formato CIDR)
python3 dirmap.py -i 192.168.1.0/24 -lcf
Rango de red
python3 dirmap.py -i 192.168.1.1-192.168.1.100 -lcf
python3 dirmap.py -iF targets.txt -lcf
targets.txt admite los formatos anteriores
output en la raíz del proyecto.dominio_objetivo.txt.Personaliza la configuración de Dirmap y comienza a explorar sus funciones avanzadas.
Por ahora, la configuración detallada se realiza cargando un archivo de configuración. ¡No se admite la configuración detallada mediante parámetros de línea de comandos!
Edita dirmap.conf en la raíz del proyecto para configurarlo.
Explicación detallada de la configuración de dirmap.conf
# Configuración de escaneo recursivo
[RecursiveScan]
# ¿Habilitar escaneo recursivo?: Deshabilitado:0; Habilitado:1
conf.recursive_scan = 0
# Al encontrar estos códigos de estado, se inicia el escaneo recursivo. Configuración predeterminada [301,403]
conf.recursive_status_code = [301,403]
# Si la URL supera esta longitud, se sale del escaneo
conf.recursive_scan_max_url_length = 60
# Estas extensiones no se escanean recursivamente
conf.recursive_blacklist_exts = ["html",'htm','shtml','png','jpg','webp','bmp','js','css','pdf','ini','mp3','mp4']
# Configurar directorios a excluir del escaneo. Configuración predeterminada vacía. Otras configuraciones: e.g:['/test1','/test2']
#conf.exclude_subdirs = ['/test1','/test2']
conf.exclude_subdirs = ""
# Configuración del modo de escaneo (4 modos, solo se puede seleccionar 1 a la vez)
[ScanModeHandler]
# Modo diccionario: Deshabilitado:0; Diccionario único:1; Diccionarios múltiples:2
conf.dict_mode = 1
# Ruta del diccionario único
conf.dict_mode_load_single_dict = "dict_mode_dict.txt"
# Ruta de diccionarios múltiples, configuración predeterminada dictmult
conf.dict_mode_load_mult_dict = "dictmult"
# Modo fuerza bruta: Deshabilitado:0; Habilitado:1
conf.blast_mode = 0
# Longitud mínima del diccionario generado. Configuración predeterminada 3
conf.blast_mode_min = 3
# Longitud máxima del diccionario generado. Configuración predeterminada 3
conf.blast_mode_max = 3
# Conjunto de caracteres predeterminado: a-z. Aún no se usa.
conf.blast_mode_az = "abcdefghijklmnopqrstuvwxyz"
# Conjunto de caracteres predeterminado: 0-9. Aún no se usa.
conf.blast_mode_num = "0123456789"
# Conjunto de caracteres personalizado. Configuración predeterminada "abc". Usa abc para construir el diccionario
conf.blast_mode_custom_charset = "abc"
# Conjunto de caracteres de reanudación personalizado. Configuración predeterminada vacía.
conf.blast_mode_resume_charset = ""
# Modo rastreador: Deshabilitado:0; Habilitado:1
conf.crawl_mode = 0
# Diccionario de sufijos para generar payloads dinámicos de archivos sensibles
conf.crawl_mode_dynamic_fuzz_suffix = "crawl_mode_suffix.txt"
# Analizar archivo robots.txt. Aún no implementado.
conf.crawl_mode_parse_robots = 0
# Expresión XPath para analizar páginas HTML
conf.crawl_mode_parse_html = "//*/@href | //*/@src | //form/@action"
# ¿Habilitar generación dinámica de diccionarios del rastreador? Configuración predeterminada 1, habilitado. Otras configuraciones: e.g: Deshabilitar:0; Habilitar:1
conf.crawl_mode_dynamic_fuzz = 1
# Modo fuzzing: Deshabilitado:0; Diccionario único:1; Diccionarios múltiples:2
conf.fuzz_mode = 0
# Ruta del diccionario único.
conf.fuzz_mode_load_single_dict = "fuzz_mode_dir.txt"
# Ruta de diccionarios múltiples. Configuración predeterminada: fuzzmult
conf.fuzz_mode_load_mult_dict = "fuzzmult"
# Configurar etiqueta de fuzzing. Configuración predeterminada {dir}. Usa la etiqueta {dir} como punto de inserción del diccionario, reemplazando http://target.com/{dir}.php por http://target.com/cada línea del diccionario.php. Otras configuraciones: e.g:{dir};{ext}
#conf.fuzz_mode_label = "{ext}"
conf.fuzz_mode_label = "{dir}"
# Configuración de payload. Aún no implementada.
[PayloadHandler]
# Configuración de solicitudes
[RequestHandler]
# Encabezados de solicitud personalizados. Configuración predeterminada vacía. Otras configuraciones: e.g:test1=test1,test2=test2
#conf.request_headers = "test1=test1,test2=test2"
conf.request_headers = ""
# User-Agent de solicitud personalizado. Configuración predeterminada UA de Chrome.
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"
# Cookie de solicitud personalizada. Configuración predeterminada vacía, sin cookie. Otras configuraciones e.g: cookie1=cookie1; cookie2=cookie2;
#conf.request_header_cookie = "cookie1=cookie1; cookie2=cookie2"
conf.request_header_cookie = ""
# Autenticación 401 personalizada. Aún no implementada. (Vago XD)
conf.request_header_401_auth = ""
# Método de solicitud personalizado. Configuración predeterminada get. Otras configuraciones: e.g:get;head
#conf.request_method = "head"
conf.request_method = "get"
# Tiempo de espera personalizado por solicitud. Configuración predeterminada 3 segundos.
conf.request_timeout = 3
# Retardo aleatorio (0-x) segundos entre solicitudes. El parámetro debe ser entero. Configuración predeterminada 0 segundos, sin retardo.
conf.request_delay = 0
# Número de corrutinas por objetivo (hilos). Configuración predeterminada 30
conf.request_limit = 30
# Número máximo de reintentos personalizado. Aún no implementado.
conf.request_max_retries = 1
# Conexión persistente. ¿Usar session()? Aún no implementado.
conf.request_persistent_connect = 0
# Redirección 302. Configuración predeterminada False, sin redirección. Otras configuraciones: e.g:True;False
conf.redirection_302 = False
# Agregar extensión después del payload. Configuración predeterminada vacía, sin extensión. Otras configuraciones: e.g:txt;php;asp;jsp
#conf.file_extension = "txt"
conf.file_extension = ""
# Configuración de manejo de respuestas
[ResponseHandler]
# Códigos de estado de respuesta a registrar. Configuración predeterminada [200], registra estado 200. Otras configuraciones: e.g:[200,403,301]
#conf.response_status_code = [200,403,301]
conf.response_status_code = [200]
# ¿Registrar el encabezado de respuesta content-type? Configuración predeterminada 1, registrar.
#conf.response_header_content_type = 0
conf.response_header_content_type = 1
# ¿Registrar el tamaño de la página? Configuración predeterminada 1, registrar.
#conf.response_size = 0
conf.response_size = 1
# ¿Detectar automáticamente páginas 404? Configuración predeterminada True, habilitado. Otras configuraciones: e.g:True;False
#conf.auto_check_404_page = False
conf.auto_check_404_page = True
# Expresión regular personalizada para páginas 503. Aún no implementada. Se considera obsoleta.
#conf.custom_503_page = "page 503"
conf.custom_503_page = ""
# Expresión regular personalizada para coincidir con el contenido de la página
#conf.custom_response_page = "([0-9]){3}([a-z]){3}test"
conf.custom_response_page = ""
# Omitir páginas de tamaño x. Si no se configura, usar "None". Configuración predeterminada "None". Otras configuraciones: e.g:None;0b;1k;1m
#conf.skip_size = "0b"
conf.skip_size = "None"
# Opciones de proxy
[ProxyHandler]
# Configuración de proxy. Configuración predeterminada "None", sin proxy. Otras configuraciones: e.g:{"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
# Opciones de depuración
[DebugMode]
# Imprimir payloads y salir
conf.debug = 0
# Opciones de actualización
[CheckUpdate]
# Obtener actualizaciones de GitHub. Aún no implementado.
conf.update = 0
Los archivos de diccionario se almacenan en la carpeta data en la raíz del proyecto.
bar.log.start(). Solución: instala progressbar2. Desinstala progressbar para evitar la importación de un módulo con el mismo nombre. Gracias a un colega por el aviso.Ejecuta el comando:
python3 -m pip uninstall progressbar
python3 -m pip install progressbar2
Durante el desarrollo de dirmap, se tomaron prestados patrones e ideas de muchos proyectos de código abierto excelentes. Se agradece y se reconoce especialmente.
mail: [email protected]
