我尝试使用 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,以便数据包可以正常发送。回复数据包将自动发送至服务器。