配置仅使 pcap 接收数据包

配置仅使 pcap 接收数据包

我尝试使用 pcap 在发送数据包之前对其进行修改。例如,我有一台服务器(运行 Ubuntu)正在监听端口 8000。在它为传入的 SYN 数据包发送 SYN-ACK 之前,我尝试使用 pcap 修改 SYN-ACK。

到目前为止,我可以在 pcap 中接收 OS 生成的 SYN-ACK,修改并发送出去。但发送出去的数据包有两个:(1) OS 生成的原始 SYN-ACK 数据包,(2) pcap 修改后的数据包。

我知道这并不奇怪,因为操作系统将数据包的副本发送到 pcap 进行处理,并且原始数据包被单独发送出去。

当我使用 iptables 丢弃传出的 SYN-ACK 数据包(由 OS 生成)时,我甚至无法在 pcap 中接收到 SYN-ACK。

我的问题是:是否可以丢弃原始 SYN-ACK 数据包并仅发送 pcap 修改后的数据包?

谢谢!

答案1

假设你的目标 IP 是 8.8.8.8

在您的原始主机上,设置如下路由:

route 8.8.8.8 mask 255.255.255.255 gateway 192.168.1.254

网关 IP 地址位于本地网络上且不存在(这不是实际命令,请使用依赖于您使用的路由工具的语法)。

然后添加一个arp条目:

arp -s 192.168.1.254 11:22:33:44:55:66

现在,任何来自主机发往 8.8.8.8 的数据包都将被发送到这个 mac 地址,并且不会去任何地方。

现在您可以拦截数据包,进行修改,同时还可以将目标 MAC 修改为您的路由器 MAC,以便数据包可以正常发送。回复数据包将自动发送至服务器。

相关内容