Selecionando várias linhas da saída do Nmap

Selecionando várias linhas da saída do Nmap

Peço desculpas antecipadamente, pois esta é uma pergunta simples.

Então, estou tentando digitalizar uma Classe C para identificar todos os servidores de e-mail por IP. A grande maioria dos IPs não são servidores de correio. Estou tentando filtrar os que são.

Eu tentei o seguinte, mas eles não retornaram o que eu queria.

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

e

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

Existe um utilitário diferente que devo usar? Ou é um problema com minha sintaxe?

Responder1

Não está claro para mim, você precisa de strings contendo apenas report ou open? Se sim, use: grep:

nmap | grep -E "report|open"

sed:

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

se reportar e abrir junto

grep:

nmap | grep report | grep open

sed:

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

Responder2

Em vez de pós-processar com grep, tente passar a --openopção para o Nmap. Isso ocultará todas as portas fechadas ou filtradas. Você também pode usar as opções -oGou -oApara gerar resultados "grepáveis". Aqui está um exemplo que faz o que acho que você está procurando:

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

Os resultados seriam em smtp-servers-20120607.nmap, smtp-servers-20120607.gnmape smtp-servers-20120607.xml. Você pode obter endereços IP para servidores SMTP abertos da seguinte forma:

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

Se você realmente precisa de tudo isso em um pipeline, você pode fazer assim:

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

Responder3

Você precisa de um canal para ambas grepas invocações:

nmap ... | grep report | grep open

Ou, já que você marcou com awk, apenas informativamente:

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

E sed:

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

informação relacionada