今天实习结束休息的时候无聊,于是便想看看机房有多少机器,IP是什么,有没有什么小漏洞。
依次使用了netstat、ping、Telnet以后,不小心输入了这样一个东西
当时按下回车以后,心里想的是这样肯定是要报错,不会执行下去的。没有想到居然看到了结果。然后再看IP是【0.0.0.5】,就在疑惑为什么会是5,不应该是错误吗?
然后又尝试了几个不同的结果。结果如下:
到了这里我们就可以发现,直接输入数字并不是一种错误的输入方式,反而可以得到正确的结果。那么我们就应该分析一下具体的运算规律。
首先我们尝试几种特殊的值:
【1】
【255】
【256】
这里我们发现
1. 当输入的数值小于256时,就相当于输入的IP最后一段的数值,其他各位均为0.
2. 当输入的数值大于256时,就相当于输入的IP为输入数值除以256,如果有余数则余数为IP最后一段的数值。即:输入数据为256,得到的IP为:0.0.1.0。
随后我们依次尝试【256*256】【256*256*256】
【256*256】:65536
【256*256*256】:16777216
到这里我们发现一个256代表完整的一段IP地址。
那么如果想要尝试Ping :192.168.1.1
我们需要输入的数据便是1+256*1+168*256*256+192*256*256*256
即1+256+11010048+3221225472=3232235777
测试结果如下:
这里我们得到了正确的结果。
查了一下Ping的帮助,发现并没有相应的解释,我们可以大胆的猜测一下,Windows本身就是通过这种办法来实现的Ping。理由是什么呢,更高效?具体的原因就需要继续的研究了。
谢谢支持!
可以联系我进行交流。[email protected]
2015.5.4
16:28
时间: 2024-10-07 05:20:30