2

我想在主机将数据包头(IP头,TCP头)发送到网络之前修改它们。

例如,如果我使用 firefox 进行浏览,那么我想拦截来自 firefox 的所有数据包并修改 IP/TCP 标头,然后将它们发送到网络中。

所以基本上,有两个要求:1拦截来自firefox的所有数据包(但不是其他程序)。如果这不可能,是否可以拦截来自特定端口或 ip/端口对的数据包

2 修改IP/TCP头,然后注入网络

有没有办法,API 来实现这一点?libpcap怎么样?有类似的源代码片段吗?我正在使用 linux c

谢谢!

4

3 回答 3

4

要修改数据包,最好将修改后的数据包注入您的网络中。C 有一个库 libnet,它可以完成与数据包注入相关的所有事情。Python 有 scapy 注入数据包。

现在您可以使用 libent 和 scapy 做一些非常有趣的事情,而不是修改您的数据包 ip/tcp 标头,执行 arp 欺骗,然后注入伪造数据包并将它们重定向到受害者。

Libpcap 用于捕获数据包,但不用于修改数据包。因此,您可以使用 libpcap 构建自己的嗅探器,但要注入/修改数据包,您需要使用 libnet 。

为了让生活更简单,有一些工具,比如 burp suite 等。你可以在转发之前修改 http 标头。

于 2018-09-12T13:00:13.243 回答
1

Razorback 是一个用于深度数据包注入的开源 API。您可以在以下位置找到来源:

http://sourceforge.net/projects/razorbacktm/files/Razorback/

您还可以向他们索取他们提议的系统的源代码。

http://www.icir.org/vern/papers/pktd-pam03.pdf

于 2013-03-15T09:47:55.180 回答
-3

它应该适合您Linux 的网络数据包捕获

但它似乎拦截了系统中的所有进程。


也许你可以使用

#include <sys/ptrace.h>
long ptrace (enum __ptrace_request request,
             pid_t pid,
             void *addr,
             void *data);

并挂钩 send(2) 或 recv(2) 以修改 tcp 标头。

于 2013-03-15T10:23:34.013 回答