Grepping varias líneas de la salida de Nmap

Grepping varias líneas de la salida de Nmap

Pido disculpas de antemano porque es una pregunta sencilla.

Entonces estoy intentando escanear una Clase C para identificar todos los servidores de correo por IP. La gran mayoría de las IP no son servidores de correo. Estoy intentando filtrar los que lo son.

Intenté lo siguiente pero no me devolvieron lo que quería.

nmap -p 25 192.168.15.1-254 | grep report && grep open 

y

nmap -p 192.168.15.1-254 (grep report | grep open)

¿Existe alguna utilidad diferente que deba utilizar? ¿O es un problema con mi sintaxis?

Respuesta1

No lo tengo claro: ¿necesita cadenas que contengan solo informe o abierto? Si es así, utilice: grep:

nmap | grep -E "report|open"

sed:

nmap | sed '/report\|open/!d'

si informar y abrir juntos

grep:

nmap | grep report | grep open

sed:

nmap | sed '/report.*open\|open.*report/!d'

Respuesta2

En lugar de realizar un posprocesamiento con grep, intente pasar la --openopción a Nmap. Esto ocultará todos los puertos cerrados o filtrados. También puede utilizar las opciones -oGo -oApara generar resultados "grepables". Aquí hay un ejemplo que hace lo que creo que estás buscando:

nmap -p 25 --open -oA smtp-servers-%y%m%d 192.168.15.0/24

Los resultados estarían en smtp-servers-20120607.nmap, smtp-servers-20120607.gnmapy smtp-servers-20120607.xml. Puede obtener direcciones IP para servidores SMTP abiertos de esta manera:

awk '/\<25/open/tcp/ {print $2}' smtp-servers-*.gnmap

Si realmente necesita todo esto en una sola canalización, puede hacerlo así:

nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'

Respuesta3

Necesitas una tubería para ambas grepinvocaciones:

nmap ... | grep report | grep open

O, ya que etiquetaste con awk, solo de manera informativa:

nmap ... | awk '/report/ && /open/'

Y sed:

nmap ... | sed '/report/!d;/open/!d'

información relacionada