script nmap necessário para imprimir texto no formato csv

0
Finalmente, estou procurando inserir algumas informações em um banco de dados. Então, eu estou tentando produzir um arquivo de algo (provavelmente nmap) que é formatado assim:

10.1.150.1,Up,1/3/2012,host.domain.lan
10.1.150.2,Down,1,3/2012,host2.domain.lan

Eu NÃO PRECISO obter a data da varredura do nmap, mas seria útil. Eu posso adicioná-lo quando eu inserir os dados no banco de dados.

Tenho certeza de que o nmap pode fazer isso junto com alguns grep, awk e sed foo, mas essas coisas não são meus pontos strongs.

EDIT: Estou aberto a sugestões sobre formatos de saída .. XML? Eu preciso rodar isso diariamente (dar ou receber) e importar os resultados para o MySQL

EDIT2: Eu cheguei até aqui;

nmap -sn -oG - 192.168.0.50-100 | grep Host | awk  '{print $2","$5","$3}'

O que me dá isso:

192.168.0.75,Up,()
192.168.0.76,Up,(server01.domain.com)
192.168.0.77,Up,(server02.domain.com)
192.168.0.78,Up,(server03.domain.com)

Próximo; Posso remover os parênteses? adicionar a data? O Nmap sempre diz que horas começa e termina, mas não inclui isso em cada linha ... então não consigo pegá-lo com o comando awk.

    
por LVLAaron 03.01.2012 / 17:15

2 respostas

3

Dê uma olhada no capítulo 13 do livro Nmap, "Formatos de saída" , ele tem uma seção sobre "Saída Grepable" e até mesmo uma em " Saída para um banco de dados ".

    
por 03.01.2012 / 17:23
1

Se você quiser que outro programa (banco de dados, etc.) use a saída do Nmap, use sempre a saída XML ( -oX ). Dependendo das suas linguagens de programação preferidas, muitas vezes haverá uma biblioteca parser já escrita: Nmap::Parser para Perl, Nmap::Parser para Ruby, ndiff ( vem com o Nmap) para Python. Se você realmente precisa usar pipelines de comando, existem alguns utilitários XML que poderiam funcionar (o XmlStarlet parece ser bastante popular) .

Dependendo de suas necessidades, você pode fazer uso de um projeto existente que suporte a importação XML do Nmap. Metasploit , Dradis e OpenVAS são algumas ferramentas muito diferentes que suportam a importação do Nmap e o armazenamento em um banco de dados.

Mesmo se você insistir em usar a saída "Grepable" (que é obsoleta), eu recomendo usar uma linguagem de script / programação real (Perl, Python, Ruby, etc.) para fazer a análise, especialmente para coisas como colocando a data em todas as linhas ou parênteses de decapagem. Pipelines de comando envolvendo o Nmap geralmente acabam como monstruosidades como esta:

nmap -sn -oG - 192.168.0.50-100 | perl -lanE 'if(/initiated (.*?) as:/){$d=$1;$,=","}else{print@F[1,4],$d,$F[2]=~/\((.*)\)/ if/Status:/}'
    
por 16.04.2012 / 22:53

Tags