Como podemos ler e interpretar manualmente os pacotes corretamente sem usar o WireShark?

Agora a partir do cabeçalho Ethernet Eu sei que o endereço MAC de destino deve estar no 5º byte (após a conversão de bits / bytes). Então, a partir desses dados, pensei que seria da 4a em diante. No entanto, na realidade, é “s 00:17:f2:d0:4c:82.

O mesmo vale para o destino de origem do IP. Por exemplo, a origem deve ter 13-16 bytes. De acordo com as leituras, acho que deveria ser 0800 em diante. Mas, na realidade, está em 0a 32 e7 85, mas não entendo por quê? Estou apenas confuso sobre como interpretar esses dados corretamente ou talvez eu esteja entendendo a estrutura geral do cabeçalho incorretamente.

https://ntquan87.wordpress.com/2015/08/17/reading-packet-hex-dumps-manually-no-wireshark/

Resposta

Meu palpite é que o que você está vendo é um frame Ethernet de nível 2 e, portanto, falta o preâmbulo. Além disso, a soma de verificação Ethernet parece estar faltando. Neste caso, tudo parece estar alinhado (o tipo de pacote dentro do quadro Ethernet, a versão IPv4, o comprimento do pacote IPv4, o tipo de pacote, ou seja, TCP, dentro do pacote IP, …). Então, você “leria seu pacote como na imagem.

pacote

A carga útil do TCP é

474554202f20485454502f312e300d0a 557365722d4167656e743a2057676574 2f312e31312e340d0a4163636570743a 202a2f2a0d0a486f73743a207777772e 696574662e6f72670d0a436f6e6e6563 74696f6e3a204b6565702d416c697665 0d0a0d0a 

e decodifica para:

GET / HTTP/1.0 User-Agent: Wget/1.11.4 Accept: */* Host: www.ietf.org Connection: Keep-Alive 

que é coerente com o fato de que a porta de destino é 80.

Comentários

  • Porque eu havia trocado por engano os rótulos de origem e destino. . Que mal. Atualizei a imagem. Não há checksum porque os cabeçalhos IPv4 dizem que o pacote IPv4 tem 152 bytes, ou seja, termina exatamente no final dos seus dados. Você pode ver facilmente que todos os últimos bytes são parte da carga útil por sua versão decodificada (é ' uma solicitação HTTP GET).
  • Eu não ' não sei de onde ' está obtendo esses números. A carga útil Ethernet (pacote IPv4) começa no 15º byte. Consulte: en .wikipedia.org / wiki / Ethernet_frame . Dentro do I Pacote Pv4, seu comprimento está no 3º e 4º byte. Consulte: en.wikipedia.org/wiki/IPv4#Packet_structure . Portanto, o comprimento é 0x0098 (em hexadecimal), ou seja, 152 bytes. Este é o comprimento de todo o pacote IPv4 (a caixa com a borda azul na imagem).
  • Eu entendi onde você ' está obtendo os números: você está lendo o diagrama que postou da maneira errada! O comprimento do endereço de destino Ethernet não é de 32 bits! É ' 48 bits = 6 bytes … no diagrama, o " Endereço MAC de destino " O campo não termina no final da segunda linha, mas continua na terceira linha também (no espaço em branco, até o " | " separador). O mesmo vale para o endereço de origem (que começa no espaço vazio da terceira linha e termina na quarta linha). Eu sugiro usar um diagrama menos confuso …
  • Eu não ' não sei por que em suas respostas os endereços mac de origem e destino foram trocados. Parece uma boa pergunta para quem lhe deu as respostas … Com relação ao pacote IP, não ' entendi por que você deseja remover a soma de verificação dos cabeçalhos IP ?? A partir de seus diagramas, há exatamente 12 bytes no pacote IP antes do campo " Endereço de origem ". Isso corresponde exatamente à minha figura.
  • O protocolo da camada de aplicativo é HTTP . Os sinalizadores são definidos como 000011000 em binário. Se você olhar uma lista de sinalizadores , você ' verá que o quinto e o sexto sinalizadores (correspondendo ao conjunto bits) são ACK e PSH.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *