Извлечение длины полезной нагрузки пакета
Я перехватил некоторые интернет-пакеты через Wireshark, теперь я хочу извлечь длину полезной нагрузки только из общей длины пакета. PYTHON
, Я могу получить полную длину пакета, используя pkt.length
или же pkt.captured_length
, Но я не нашел ни одной команды для извлечения только размера полезной нагрузки.
1 ответ
Размер полезной нагрузки должен быть рассчитан на основе заголовков и длин встроенного протокола. Например, общая длина IP (которая, скорее всего, называется "длиной пакета") - это длина всей дейтаграммы IP, включая заголовок IP, заголовки встроенного протокола и данные. Чтобы найти длину полезной нагрузки, вы должны, как и стек IP:
- определите длину IP-заголовка (вероятно, 20, но у него могут быть параметры), умножив клевку младшего разряда первого байта на 4.
- Определить заголовок встроенного протокола на основе значения 9-го байта в заголовке IP
- Определить длину заголовка встроенного протокола заголовка; например, если это TCP, умножение старшего куска двенадцатого байта на 4, чтобы определить общую длину заголовка TCP-заголовка, включая параметры.
Если вы сложите эти значения, вы можете затем вычесть их из общей длины IP (длины пакета), чтобы определить длину полезной нагрузки.
Конечно, с точки зрения IP, вы можете просто вычесть длину IP-заголовка из общей длины; с точки зрения IP, все внутри него - просто полезная нагрузка.:)