Grepping várias linhas da saída do Nmap

2

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

Estou tentando digitalizar uma classe C para identificar todos os servidores de email por IP. A grande maioria dos IPs não são servidores de email. 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 algum utilitário diferente que eu deveria usar? Ou é um problema com a minha sintaxe?

    
por John Smith 07.06.2012 / 13:37

3 respostas

4

Não está claro para mim, você precisa de strings contendo apenas um relatório ou aberto? Em caso afirmativo, use: grep :

nmap | grep -E "report|open"

sed :

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

se relatar e abrir juntos

grep :

nmap | grep report | grep open

sed :

nmap | sed '/report.*open\|open.*report/!d'
    
por 07.06.2012 / 14:33
2

Em vez de pós-processamento com o grep, tente passar a opção --open para o Nmap. Isto irá esconder todas as portas fechadas ou filtradas. Você pode usar as opções -oG ou -oA para gerar resultados "grepable" também. Aqui está um exemplo que faz o que eu 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.gnmap e 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 disso tudo em um pipeline, você pode fazer assim:

nmap -p 25 --open -oG - 192.168.15.0/24 | awk '/\<25/open/tcp/ {print $2}'
    
por 07.06.2012 / 16:32
0

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

nmap ... | grep report | grep open

Ou, desde que você marcou com awk , apenas de forma informativa:

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

e sed :

nmap ... | sed '/report/!d;/open/!d'
    
por 07.06.2012 / 14:05

Tags