使用 libpcap 接收大于 MTU 的 TCP 段

Receiving TCP segments bigger than MTU with libpcap

网络冒险家们大家好,

我正在实施网络攻击,ARP 欺骗网关和受害者,过滤 HTTP 数据并在我的浏览器中重新组合网页。也称为网络间谍。

但是,我在使用 libpcap 时遇到了一些问题。当我收到包含 HTTP 数据的 TCP 段的数据包时,其中一些数据包大于 MTU!比如1922、2878甚至4909字节。

起初,我以为这些是内核提供的重新组合的 HTTP 数据包。但是,根据 with this post,libpcap 不会重组数据包,因此它不会给我带来一个完整的、格式良好的数据包,其中包含给定请求的所有 HTTP 响应。

为了测试,我打印了所有这些大于 MTU 的数据包。它们都包含正常数据(CSS、JS、HTML、图像、...)。

所以这到底是怎么回事?这些大家伙是什么?我为此苦苦挣扎了几天。

红利问题:我真的需要自己重新组装所有这些 HTTP 数据吗?

However, I'm having some issues with libpcap. When I receive the packets with TCP segments contaning the HTTP data, some of them are bigger than MTU! Like 1922, 2878 and even 4909 bytes.

您的网络适配器可能充当 TCP offload engine, reassembling multiple incoming TCP segments and handing one reassembled segment to the host. At least on Linux, the networking stack might be performing Large Receive Offload,如果在将数据包交给 "taps"(libpcap 在 Linux 上使用的 PF_PACKET 套接字之前完成) , 你会得到重新组合的片段。

对于您的程序,这应该不是问题,因为...

Do I'll really need to reassemble by myself all these HTTP data?

...您将需要重新组合 HTTP 请求的所有组件或自行回复。