O comando a seguir imprime cada meia conexão incompleta.
tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0' |
sed -r 's/^.*IP (.*) > (.*):.*$/ /'|sort|uniq -u
A abordagem assume que cada par de soquetes é usado apenas uma vez durante todo o rastreamento.
Explicação
Para uma conexão entre
IP_A:PORT_A <--> IP_B:PORT_B
um tcpdump contém as metades
IP_A:PORT_A > IP_B:PORT_B, and
IP_B:PORT_B > IP_A:PORT_A
Para cada metade, o dump deve conter dois segmentos carregando um sinalizador SYN ou FIN. Então, o que o comando faz é:
-
Colete os segmentos que carregam o sinalizador SYN ou FIN
tcpdump -r pcap-file 'tcp[tcpflags] & (tcp-syn|tcp-fin) > 0
-
Agregue o resultado por meia conexão, independentemente do sinalizador real (SYN ou FIN)
2.1. Ordenar por meia conexão
sed -r 's/^.*IP (.*) > (.*):.*$/ /'|sort
2.2. Conte os segmentos envolvidos em cada meia conexão e filtre todas as meias conexões que envolvam corretamente dois segmentos
uniq -u