我们中的大多数人都按照很久以前被教导的方式来写我们的 IP 地址:127.0.0.1
, 10.0.2.1
, ...... 但是一段时间后就会变得无聊,不是吗?
幸运的是,有几种写 IP 地址的方法,因此您可以惹恼同事、客户或将其用作绕过某些(输入)过滤器的安全措施。
并非所有行为都是平等的
我首先通过这个小技巧了解了 IP 地址的不同写法。
在 Linux 上:
$ 平 0 PING 0 (127.0.0.1) 56(84) 字节的数据。 来自 127.0.0.1 的 64 个字节:icmp_seq=1 ttl=64 time=0.053 ms 来自 127.0.0.1 的 64 个字节:icmp_seq=2 ttl=64 time=0.037 ms
这会将 `` 翻译成127.0.0.1
. 但是,在 Mac 上:
$ 平 0 PING 0 (0.0.0.0):56 个数据字节 ping: sendto: 没有到主机的路由 ping: sendto: 没有到主机的路由
在这里,它将 `` 翻译成 null-route 0.0.0.0
。
零是可选的
就像在IPv6 地址中一样,IP 地址中的一些零 (0) 是可选的。
$ 平 127.1 PING 127.1 (127.0.0.1):56 个数据字节 来自 127.0.0.1 的 64 个字节:icmp_seq=0 ttl=64 time=0.033 ms 来自 127.0.0.1 的 64 个字节:icmp_seq=1 ttl=64 time=0.085 ms
但请注意,计算机不能只是“猜测”它需要在何处填入零。以这个为例:
$平10.50.1 PING 10.50.1 (10.50.0.1):56 个数据字节 icmp_seq 0 的请求超时
它转换10.50.1
为,在最后一位数字之前10.50.0.1
添加必要的零。
IP地址溢出
这是另一个巧妙的技巧。你可以溢出一个数字。
例如:
$平10.0.513 PING 10.0.513 (10.0.2.1):56 个数据字节 来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=10.189 ms 来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=58.119 ms
我们 ping 10.0.513
,转换为10.0.2.1
。最后一位数字可以解释为2x 256 + 1
. 它将值向左移动。
十进制 IP 表示法
我们可以使用我们的 IP 地址的十进制表示。
$平167772673 PING 167772673 (10.0.2.1):56 个数据字节 来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=15.441 ms 来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=4.627 ms
这转化167772673
为10.0.2.1
。
十六进制 IP 符号
好吧,如果十进制表示法有效,那么 HEX 也应该有效——对吗?当然可以!
$ 平 0xA000201 PING 0xA000201 (10.0.2.1):56 个数据字节 来自 10.0.2.1 的 64 个字节:icmp_seq=0 ttl=61 time=7.329 ms 来自 10.0.2.1 的 64 个字节:icmp_seq=1 ttl=61 time=18.350 ms
十六进制值A000201
转换为10.0.2.1
. 通过在值前加上0x
,我们表示后面的内容应该被解释为十六进制值。
八进制 IP 符号
以这个为例。
$平10.0.2.010 PING 10.0.2.010 (10.0.2.8):56 个数据字节
请注意最后一个.010
八位字节是如何被翻译成的.8
?
使用 sipcalc 查找这些值
有一个名为sipcalc的有用命令行 IP 计算器,您可以使用它进行十进制和十六进制转换。
via https://ma.ttias.be/theres-more-than-one-way-to-write-an-ip-address/
相关博文
写 IP 地址的方法不止一种