我花了三个晚上,渗透把一本正经的渗透《TCP/IP详解》第一卷,硬生生读成了悬疑小说。渗透别笑,渗透这事儿得从第214页说起——那页讲的渗透是TCP段头的保留位。书上写着“必须为零”,渗透但配图里那个字段,渗透分明标着“可能用于未来扩展”。渗透我盯着那六个零看了十分钟,渗透忽然觉得这不像技术文档,渗透倒像一份没有署名的渗透密信。
于是渗透我开始干一件特别无聊的事:把书里所有“必须”和“应当”的句子抄下来,再对照RFC文档找茬。渗透结果真让我逮到一个——书里说IP首部长度最小20字节,渗透可RFC 791里写着“如果选项为空,渗透则首部为20字节”,但紧接着又补了一句“某些实验性协议可能修改此字段”。这种模棱两可的表述,在工程书里就是裂缝。我顺着裂缝往下挖,挖到IPv6的扩展头,又挖到ICMPv6的邻居发现协议,最后在NDP的选项字段里,发现了一个被标注为“保留”的编号——137。
编号137本身没什么,但巧的是,我手边那台老路由器的配置手册里,正好有一条隐藏命令:
ipv6 nd ra-interval 137。官方文档说这个命令“仅用于调试”,可调试什么?没人解释。我试着在虚拟机里敲下去,路由器立刻往局域网里广播了一组RA报文,抓包一看——里面塞了个从未见过的TLV选项,长度不是8的倍数,载荷开头是四个字节的魔数:0xDEADBEEF。这哪是网络协议,分明是有人往公共信道上扔漂流瓶。我换了台物理机,用网线直连,再跑一遍。这次更邪门——路由器回应的RA报文里,那个TLV选项消失了,取而代之的是在IP层填充字段的末尾多了32位数据。我试着把这32位当整数读出来:
0x00000137。跟之前的编号一模一样。我忽然意识到,这可能不是实验代码,而是一个活体指纹。所有公开文档都在说“保留”,但保留给谁?保留做什么?没人写。我翻了十几份RFC,最后在一份1998年的互联网草案草稿(早已过期)里找到一句话:“建议为链路本地信令预留少量编号,以防未来出现不可预见的冲突。”——就这一句,再没下文。我忍不住给一位做网络研究的师兄打电话。他听我说完,沉默了几秒,回了一句:“你知道吗,有些编号在IETF的邮件列表里从没被讨论过,但它们就是存在。就像书页之间的空白。”他没再多说,我也没再问。挂电话前,他补了一句:“别在公网上试。”
我没在公网试。但我在本地把那个TLV选项改了改——把魔数换成
0xFEEDFACE,再发出去。路由器居然照单全收,并且在下一个RA报文里,回给我一个全新的TLV,内容是一串ASCII字符:you_are_reading_the_wrong_manual。那一刻我后背发凉,不是因为被吓到,而是因为突然明白——有些书页间的空白,不是印刷错误,是有人故意留的。那本《TCP/IP详解》现在还躺在我桌上,第214页折了个角。我再没翻过它。但每次看到“保留”两个字,我都会想起那个数字137,和那句没头没尾的ASCII。技术文档从来不是死板的,它们像地层,每一层都沉积着某个工程师没写完的故事。而所谓渗透,不一定非得是攻破防火墙——有时候,只是你决定去读那些没人读的脚注。
顶: 97踩: 1






评论专区