Извлечение длины полезной нагрузки пакета

Я перехватил некоторые интернет-пакеты через Wireshark, теперь я хочу извлечь длину полезной нагрузки только из общей длины пакета. PYTHON, Я могу получить полную длину пакета, используя pkt.length или же pkt.captured_length, Но я не нашел ни одной команды для извлечения только размера полезной нагрузки.

1 ответ

Решение

Размер полезной нагрузки должен быть рассчитан на основе заголовков и длин встроенного протокола. Например, общая длина IP (которая, скорее всего, называется "длиной пакета") - это длина всей дейтаграммы IP, включая заголовок IP, заголовки встроенного протокола и данные. Чтобы найти длину полезной нагрузки, вы должны, как и стек IP:

  • определите длину IP-заголовка (вероятно, 20, но у него могут быть параметры), умножив клевку младшего разряда первого байта на 4.
  • Определить заголовок встроенного протокола на основе значения 9-го байта в заголовке IP
  • Определить длину заголовка встроенного протокола заголовка; например, если это TCP, умножение старшего куска двенадцатого байта на 4, чтобы определить общую длину заголовка TCP-заголовка, включая параметры.

Если вы сложите эти значения, вы можете затем вычесть их из общей длины IP (длины пакета), чтобы определить длину полезной нагрузки.

Конечно, с точки зрения IP, вы можете просто вычесть длину IP-заголовка из общей длины; с точки зрения IP, все внутри него - просто полезная нагрузка.:)

Другие вопросы по тегам