如何"手动"转发本地网络中的IP流量

时间:2014-04-27 03:25:55

标签: sockets networking tcp ip forwarding

我是学生,作为一个爱好,我正在编写一个程序,该程序应该通过ARP欺骗执行中间人攻击,然后在将其发送给受害者之前操纵流量。为此,我需要检查数据包,操纵它们并将它们转发给我的受害者。

注意:这绝对是一个爱好项目,网络是我自己在家的本地网络。它只是一些通用的AT& T homeportal和一堆通过无线连接的机器。

我知道当我在我的机器上启用IP转发时,它会对要转发的数据包执行以下操作:

Put my MAC as SRC in the ethernet header
Put forwarding target's MAC as DST in ethernet header
Decrement TTL
Recalculate IP Header checksum
Send the packet

由于我想在发送之前操纵流量,我正在尝试编写一个程序来执行操作,然后手动转发即可。我试图做的事情:

See if packet is for my victim
If so, manipulate it how I want
Put my homeportals MAC address as SRC in the eth header
Put my victims MAC as DST in eth header
Send the packet

我的思路是,在查看数据包时,它与“正常”流量无法区分。如果我减少TTL并重新计算。校验和并将我的机器MAC作为SRC放入,如果你查看数据包,它很容易注意到什么。

但是,我的方法不起作用。如同,如果我将homeportals MAC作为SRC放在以太网头上,由于某些原因,没有任何网页加载到机器A上。

如果我放入我的机器mac地址,网页加载虽然很慢,wireshark会向我显示很多来自网页服务器的TCP重传,我猜这是因为我的程序转发数据包的速度太慢,无法加载机器A和所以A不能及时回应?

所以,无论如何,这几乎是我的问题:为什么我不能假装成为自营门户?如将其MAC地址放在数据包的以太网头中,我转发到A.此外,当我使用我的机器MAC地址时,还有什么可能导致网页服务器的所有重新报告?英语不是我的第一语言,所以我希望这不是太模糊。

0 个答案:

没有答案