2023 01 24 01 28

https://github.com/joseluisinigo/extractipandports-nmap

Este código es un script de Python que extrae las direcciones IP y los puertos abiertos de un archivo de salida de Nmap. Nmap es un escáner de red muy utilizado para mapear dispositivos y servicios en una red. El archivo de salida de Nmap contiene información detallada sobre los dispositivos escaneados, incluyendo las direcciones IP y los puertos abiertos.

El script comienza importando la librería "re" (expresiones regulares) que se utiliza para buscar patrones en el texto. Luego se define la función "extract_ips_ports" que toma como entrada el archivo de salida de Nmap como una cadena, y utiliza expresiones regulares para buscar las direcciones IP y los puertos abiertos.

Las direcciones IP se identifican utilizando la expresión regular "Nmap scan report for (.*)", que busca la cadena "Nmap scan report for" seguida de cualquier carácter. Los puertos abiertos se identifican utilizando la expresión regular "^(\d+)", que busca cualquier dígito al principio de una línea. El script crea entonces un diccionario con las direcciones IP como claves y los puertos abiertos como valores.

La función principal lee el archivo de salida de Nmap y llama a la función "extract_ips_ports", pasando el contenido del archivo como una cadena. El diccionario resultante se escribe entonces en un archivo de salida 'extract.txt' y se imprime en la consola, en el formato de IP seguida de puertos separados por comas.

import re

def extract_ips_ports(text):
    ip_pattern = "Nmap scan report for (.*)"
    port_pattern = "^(\d+)"
    ips_ports = {}
    for line in text.split("\n"):
        ip_match = re.match(ip_pattern, line)
        if ip_match:
            ip = ip_match.group(1)
            ports = []
            continue
        port_match = re.match(port_pattern, line)
        if port_match:
            port = port_match.group(1).replace("/tcp", "").replace("/udp", "")
            ports.append(port)
        if not line.strip():
            ips_ports[ip] = ports
    return ips_ports

def main():
    with open('nmapoutput.txt', 'r') as f:
        text = f.read()
        ips_ports = extract_ips_ports(text)
    with open('extract.txt', 'w') as f:
        for ip, ports in ips_ports.items():
            ports_str = ",".join(ports)
            f.write(f"{ip} {ports_str}\n")
            print(f"{ip} {ports_str}")

if __name__ == '__main__':
    main()