A função
awk
do
split
pode ser usada para extrair campos da saída do gnmap.
split("443/open/tcp//https?///, a, "/"); print a[1]
fornece 443
.
Use isto para imprimir o ip e a porta para as linhas que mostram pelo menos uma porta https aberta:
awk '{ for (f=5; f <= NF; f++) {
split($f,a,"/");
if (a[2] != "open") continue;
if (a[5] ~ /https.*/) {
print $2, a[1];
}
}
}' nmap-synscan.gnmap
Use isto para imprimir o ip e a porta para as linhas que mostram uma porta https aberta e pelo menos uma porta aberta abaixo de https:
awk '{ lowopen = 0;
for (f=5; f <= NF; f++) {
split($f,a,"/");
if (a[2] != "open") continue;
if (a[1] < 443) lowopen++;
if (lowopen && a[5] ~ /https.*/) {
print $2, a[1];
}
}
}' nmap-synscan.gnmap
Editar: para responder sua segunda pergunta, use isso para imprimir o ip e porta para linhas onde exatamente a segunda porta aberta é https:
awk '{ split($6,a,"/");
if (a[5] ~ /https.*/) {
print $2, a[1];
}
}' nmap-synscan.gnmap