构造ICMP数据包探测数据由主机到目标机的路由

(个人测试,仅供参考)

通过捕获本机发出的Ping数据包,然后对其IP首部的TTL值和CheckSum(首部检验和字段)进行修改,可以构造出特定的数据包,用来探测数据从主机到目标机经过的路由器的IP地址.

具体步骤:

1.用嗅探软件Sniffer捕获Ping出的ICMP包.

2.分析数据包的IP首部,可以发现TTL(Time to LIve)字段的值为64 seconds/hops (默认?),它表示的是这个数据包在网络上可以生存的最大时间.

(一般认为数据包每经过一次路由,其TTL值减一, 如果在TTL值变为0之前还没有被传送到目的地址,这个数据包将被TTL为0时对应的路由器丢弃,并给源主机发送一份ICMP超时信息,这份超时信息中包含的有该路由器的IP地址,而这个地址正是我们想要的.)

3.假设我们想得到数据包经过的第一个路由器的IP地址, 首先打开Sniffer的Packet Generator(数据包产生器),找到TTL对应的值, 将其改为01.(这样当该数据包到达第一个路由器时,TTL值就变为0, 路由器就会返回我们所需要的超时信息.)   然后观察Header CheckSum (首部检验和字段), 该字段由于我们修改了TTL而不再正确.这里涉及到首部检验和字段的计算方法,本人也不甚了解,有兴趣的友友可以查阅相关资料 : ) .这里我们完全不用去计算,因为Sniffer会帮我们计算的, 所以先留下这个错误CheckSum不动.

4.打开Sniffer的捕捉功能,发送刚刚构造的数据包, 停止捕捉,查看结果,只有我们刚刚发出去的数据包,并没有任何路由器的返回信息,这就对了,因为这个数据包的Header CheckSum是错误的. 现在开始分析这个数据包,在它的Header Check Sum一行中会有正确值的提示,根据提示修改数据包.到此为止,这个ICMP包终于构造好了.

5.重复刚才的捕捉-发送过程,这时可以看到路由器返回的超时信息了,里面包含有我们想要的IP地址.

6.同理,我们可以获得第二,第三个路由器的IP地址.当返回的地址与目标IP相同时,探测结束。

PS:初涉此领域,欢迎大家拍砖指正,有问题我们一起讨论 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值