旧楼侧面入口的铁门在他们走近时被Zero从外侧拉开,铰链的转动声在安静的早晨楼道里传出了一段短促的回音。安琪在门口略微慢了一步,让Zero先进,然后她跟在他身后跨过门槛,反手将铁门带上了。门锁的咔嗒声比合页声更短、更干净。 他们沿着楼梯上到二楼,推开隔音室的金属防火门走进去。房间内的暖白色LED灯还亮着,主机散热风扇的白噪声依然稳定填充着整个空间,跟他们离开时保持的状态相同。Zero走到桌边将帆布包放在桌面边缘,然后坐下。安琪从他身后绕过桌子,走到主机前侧的位置,在显示器前面停下,弯下腰按了一下电源键,唤醒主机的屏幕。 屏幕亮起之后,安琪没有打开任何程序窗口,直接输入了一段简短的命令,调出了外置阵列的逻辑分区列表。她用键盘在一个分区上逐字输入了一条路径,路径的长度比她之前操作的任何一条命令都要长一些,输入时她的指腹在键帽表面稳定地移动,没有停顿或回退。她输完之后按了回车键,屏幕上列出了一个文件列表,列表中有多个文件,但只有一个是可见的文件名——其余文件的内容被隐藏了,只有那个文件有一个完整的文件名,其后缀是标准的胶卷扫描图像格式。 Zero从椅子上站起来,绕到她身后侧方的位置,站在能看清屏幕内容但不会挡住她操作的角度。那个文件名是一串日期和编号的混合格式,日期段显示的内容是"2015.09.17-2015.11.30",编号段的格式跟他在隔音室存储阵列日志中见过的异常条目前缀一致,数字长度和字符间距都与该条目相匹配。安琪看着那行文件名没有动,光标在文件名的末尾稳定地跳动。她把光标移到文件名上,双击打开了它。 屏幕在文件打开后切换到一个专用的图像查看界面,显示的内容是一帧缩微胶片扫描图像,底色在画面上占据了大部分面积。画面上的内容——那些极其细小的字符——她识别出了其中几个重复出现的字段结构,跟她父亲当年工牌上编号的格式一致。她把画面放大到字符可见的比例,看到那一帧缩微胶卷的起始处写着一行日期标记,跟文件名中的日期范围一致,字迹是标准打印体,不是手写的。安琪把画面缩小到缩略图级别,然后按了翻页键。 画面切换到了第二帧,内容格式跟第一帧相同,但字段内容不同,时间戳的进度在每一帧之间以数小时至数天的间隔递增。她持续翻页,中间没有停顿,直到翻到某一帧画面后动作停了下来。那一帧的日期标记显示为2015年11月17日,时间戳是03:14:22,跟硬盘标签上的时间坐标完全吻合。画面底部有一段单独划出的字段,字段内记录着一串目标地址编码。 她在那帧画面停留了数秒,然后关闭了图像查看器窗口,将主机的显示器屏幕切换回桌面状态。她转向Zero,开口说:“这些画面里的数据条目,跟我从硬盘标签上读到的那个时间戳中的数据完全吻合。缩微胶卷在转移出那封信箱后,一直存放在与DT硬盘原始内容相同的隐藏目录里,从未从物理介质迁移到任何在线存储空间。” Zero的视线从屏幕上移开,转向她的方向。他没有接话,只是轻轻点头。安琪走到墙角那扇储物柜前,拉开底层抽屉,取出那块已经用防静电袋密封好的硬盘放在桌面上,转身去主机前面打开了一个写盘程序,把缩微胶卷扫描图像的文件连同目录结构一起复制进密封硬盘里。Zero站在桌子旁边,双手搁在桌沿边缘,看着屏幕上的复制进度条从零开始逐渐爬升,在进度条越过百分之百之后,她把那块硬盘从主机上断开,用防静电袋重新包裹密封,放回了储物柜的底层抽屉里,合上抽屉,推到底,关上柜门。 储物柜的柜门合上之后,隔音室里只剩散热风扇的白噪声和主机显示器屏幕处于待机状态时发出的微弱电流声。安琪在柜门前站了片刻,没有立即转身,一只手还搭在柜门的金属把手上,指腹停留在把手表面弯曲的弧线处。她收回手时动作没有急迫感,然后走回桌边,在Zero旁边的椅子上坐了下来。 她坐下的时候椅子在地面上发出一声极轻微的摩擦,被白噪声覆盖了大半。她双手搁在桌面上,手指交叉,没有收紧也没有松开,只是放在那里。Zero从桌沿直起身,转身面对她的方向,椅子没有挪动,身体的重心从桌沿移回到靠背上,在座椅里调了一下坐姿。 “那卷缩微胶卷的内容你刚才看到了,”Zero说,“2015年11月17日,03:14:22的那个时间戳对应的帧画面底部有一串目标地址编码。那段编码你在之前所有索引文件中都没见过。” 安琪的视线从桌面上抬起来,落在Zero的脸上。她的手指在交叉的状态下没有移动。“那段编码的格式跟所有索引文件里出现的地址格式都不一样。长度不是标准的十六进制,也不是常见的内网路由格式,只包含数字和斜杠,不含字母。我在看到它的时候没有找到对应的参照物。” Zero从帆布包侧袋里取出Reader设备,放在桌面上,没有连接任何数据线。他把设备侧放,底部朝上,那条氧化标记在暖白色灯光下保持着他之前最后一次看到的状态。他看了那条标记几秒,然后把它翻回正面,放在桌面上靠近安琪一侧的位置。 “你在一台离线终端上对那段地址编码做逆向解析,”Zero说,“唯一能解析那串地址的终端是Reader设备——不是因为它预设了对应的解码程序,而是因为它的固件里包含的解析引擎能够识别并处理那类格式。你之前读取的六条时间记录和天线杆内容都经过了同一套解析引擎的验证。” 安琪的视线落在Reader设备上,没有立刻伸手去碰它。她看着它放在桌面上靠近她一侧的位置,过了片刻才伸出手,将设备拿起来握在手里,拇指沿着设备外壳侧面的接缝走了一圈,然后在它的底部接口边缘停住。她把它翻到底部朝上,看了那道氧化标记的位置——标记的朝向和深度保持着他最后一次确认时的形态——然后把Reader设备重新放回桌面上,推回到Zero那一侧。“那串地址的解析结果你现在就可以用它来读取。Reader设备的解析引擎在你之前读取的时候已经加载了那套解析功能,只是当时它的解码输出字段没有被指向特定内容。你把那串地址输入解析引擎,得到的输出结果会显示那台设备当时所指向的地址段是否位于第三层系统的物理链路范围内。” Zero把Reader设备从桌面上拿起来,拇指沿着它侧面的接口边缘走了一遍,然后将设备连接到了主机的一个备用接口上。主机识别到Reader设备后,他打开设备的管理界面,在解析引擎的输入框中逐字输入了那串目标地址编码。他输完之后按了回车键,解析窗口在读取了两三秒后输出了一行结果。结果的第一段是一个时间戳,跟胶卷画面上的日期一致,第二段是一个简短的文本字段,内容不是一个地址,是一个设备类别名称:"LT-7/冷备节点-主控终端接口——存储阵列第二逻辑分区目标地址。与缩微胶卷扫描文件的存放路径同源。" Zero把那行结果读完,然后把Reader设备从主机上断开,放回帆布包的夹层里。他拉好拉链,帆布包的表面在暖灯光下恢复到平整状态。他侧过头看着安琪,“那个目标地址指向的位置跟你存放缩微胶卷扫描文件的路径相同。设计者在把胶卷转移到隐藏目录时,把地址编码写进了缩微胶卷的日志条目里,为的是让读取到那帧画面的人能确认存放位置与数据来源之间的对应关系。他在系统离线之前已经做好了最后一重索引的对齐。” 安琪的视线落在主机屏幕上那段解析结果的窗口上。她没有关闭它,让它在屏幕上保持打开状态,然后从椅子上站起来,走到隔音室门边停住,回头看了一眼Zero坐在桌边的方向。门外的走廊光线从门缝边缘渗进来,在隔音室地板边缘形成了一道窄长的亮痕。Zero把帆布包从桌面上拿起来挎在肩上,站起来朝门口走过去,他在门口停了一步,侧过身,等安琪先迈出门槛。门锁入位的声响跟之前每次合拢时相同,短促而干净,在走廊里传出一次回音后消散了。