Eu tenho alguns arquivos pcap em que o tamanho da captura relatado pelo Wireshark é maior que o tamanho real da captura. A diferença é de 10 bytes e não entendo por que ele relata esse número maior.
file
informa o mesmo valor que o Wireshark faz na caixa de diálogo Estatísticas- > Resumo .
$> file out_20140207162250.pcap
out_20140207162250.pcap: tcpdump capture file (little-endian) - version 2.4 (Ethernet, capture length 100)
Eu posso usar o tshark para me dar o tamanho da captura para os pacotes que têm um comprimento de captura menor que o tamanho do pacote para ver qual era o tamanho real.
$> tshark -r "out_20140207162250.pcap" -R "frame.cap_len < frame.len" -Tfields -eframe.cap_len | sort | uniq
tshark: The file "out_20140207162250.pcap" appears to have been cut short in the middle of a packet.
90
Examinando o arquivo com um programa C simples, vejo que o snaplen
no pcap_file_header
está realmente definido como 100.
#include <pcap.h>
int main(int argc, char **argv) {
FILE *pcapInputFile_p;
pcap_file_header fileHeader;
pcapInputFile_p = fopen(argv[1], "r");
fread( &fileHeader,sizeof(pcap_file_header), 1, pcapInputFile_p );
printf("%d\n",fileHeader.snaplen);
fclose(pcapInputFile_p);
}
Na verdade, não sei como e com qual ferramenta esse arquivo específico foi capturado, mas estou tentando descobrir isso:).
Tentando repetir isso com o Wireshark 1.11.0 na minha máquina Windows, configurei "Limitar tamanho do pacote" para 96. O Wireshark informa cada corte de pacote em 96, mas em Estatísticas- > Resumo é 100, ou seja, 4 bytes a mais do que eu configurei. OK, agora eu configuro para 106. Eu recebo 106 ambos por pacote e no diálogo Resumo !
Então, agora estou intrigado ... e é sexta-feira à tarde e estou tentando matar algum tempo. Eu escrevi um script para capturar (com dumpcap 1.8.2) um único pacote com um tamanho maior que 1500, e imprimi-lo em um arquivo. Durante o tempo em que o script foi executado, baixei um arquivo enorme para obter alguns pacotes grandes. O sistema foi Linux 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64 GNU/Linux
. Aqui está um gráfico de snaplengths configurados versus reais entre 50 e 150 (o padrão se repete até 1500 pelo menos). As linhas sombreadas mostram que a configuração 96 nos dá 96 neste sistema. A maior diferença é de 2 bytes, sempre menos do que eu configurei!
Imagem de configurado versus o tamanho real da captura (precisa de um representante para postar, não tenho certeza de quanto tempo ele está armazenado)
Então, para somar , por que existe uma diferença de byte x entre o tamanho da captura reportada e a duração real da captura? Por que às vezes? Por que diferentes para diferentes sistemas / ferramentas? Se sim, porque? Isso é um bug ou estou confuso?
Obrigado!