Filtrando a varredura nmap e a saída do formato ip: port

0
Host: 1.1.1.1 ()  Ports: 8080/open/tcp//http-proxy/// Ignored State: filtered (28)
Host: 2.2.2.2 ()  Ports: 8888/open/tcp//sun-answerbook/// Ignored State: closed (28)
Host: 3.3.3.3 ()  Ports: 1263/open/tcp/////, 1499/open/tcp//fhc///, 2301/open/tcp//compaqdiag///, 3124/open/tcp/////, 3127/open/tcp/////, 3128/open/tcp//squid-http///, 3382/open/tcp/////, 4480/open/tcp//proxy-plus///, 4816/open/tcp/////, 6588/open/tcp//analogx///, 7212/open/tcp/////, 8000/open/tcp//http-alt///, 8080/open/tcp//http-proxy/// Ignored State: closed (4)

A saída desejada seria

1.1.1.1:8080
2.2.2.2:8888
3.3.3.3:1263
3.3.3.3:1499

Eu sei como lidar com isso se houvesse uma proporção de 1: 1 de IP para portas, mas pode haver várias portas abertas para um único IP. Acabei de ver a saída do arquivo com um regex apropriado para cada parte e colocá-lo em uma matriz. Existe uma maneira mais fácil de fazer as coisas? Minhas habilidades de manipulação de texto no nix são muito rudimentares.

    
por user9817784 06.10.2018 / 05:56

1 resposta

0

Parece que você perdeu algumas linhas na saída desejada ... Tente percorrer os campos a partir do quinto, verificando um início numérico, divido por / e imprima o primeiro elemento juntamente com $2 :

awk '{for (i=5; i<=NF; i++) if ($i ~ /^[0-9]/) {split ($i, T, "/"); print $2 ":" T[1]}}' file
1.1.1.1:8080
2.2.2.2:8888
3.3.3.3:1263
3.3.3.3:1499
3.3.3.3:2301
3.3.3.3:3124
3.3.3.3:3127
3.3.3.3:3128
3.3.3.3:3382
3.3.3.3:4480
3.3.3.3:4816
3.3.3.3:6588
3.3.3.3:7212
    
por 06.10.2018 / 12:57