|
-----------
* 软件环境:
WinXP sp2
截取数据包的Ndis5.0驱动已经写好。
在用户层,能够修改驱动发来的数据包的IP地址,客户机也能接收到该数据包。
我这个软件是用于模拟多客户机与服务器连接实现数据传输的测试软件。
-----------
* 硬件环境:
(33.33.33.33(假定是这个)) |------ 客户机2 (192.168.1.105)
客户机1 --- 路由 (192.168.1.1) ------
|------ 发送机 (192.168.1.100) (伪装 99.99.99.99)
现在需要发送机伪装IP 99.99.99.99 与两客户机进行TCP通信
在客户机2安装的Ethereal 检测到发送机发来的IP为 99.99.99.99 数据包,物理地址(MAC)也为发送机的物理地址。
但问题是,当客户机2接收到第一次TCP握手包后,它返回的响应包虽然目的IP地址仍然是99.99.99.99,但物理地址却是网关192.168.1.1的物理地址!我再查看客户机2的数据包,发现在它接收到发送机发送的握手包时,它先发送ARP数据包查询了网关(192.168.1.1)的物理地址再发到网关。也就是说,当客户机发现接收的数据包IP与自己不在同一子域则自动把数据包发往网关,但现在问题是由于发送的物理地址改变了,网关只能查询正确的99.99.99.99的物理地址,那这时候,数据包也就不能再返回伪装的发送机上了。于是TCP连接被逼中断。
而且,两客户机均开启了防火墙,不能使用ICMP实现数据包路径转移。
请问各位,有何方法可以实现发送机与两客户机用伪IP通信?
我尝试发送ARP包去修改客户机2的ARP缓冲,但没用,不同一子域的IP地址不会受到缓冲,结果IP包依然发往网关。
|
|