老东家的园区比三年前冷清了许多。沈夜递了访客登记,门卫认出他,说,哟,老熟人了,上去吧,机房那层还空着,没什么人用。
沈夜道了谢,和林小雪坐电梯上到那层楼。走廊里的灯坏了一半,剩下的亮着惨白的光,映着空置的工位。他停在机房的玻璃门前,指纹锁滴滴响了两声,门开了。
冷气还是那么足,机柜的指示灯一排一排亮着,像一片安静的灯海。沈夜站在门口,没有马上进去。他想起上一次来这里,是为了修复零号第一次宕机的那台老服务器,那是他第一次真正看清,零号记忆里那些断点的形状。
林小雪说,你在想什么。
沈夜说,我在想三年前的事。他说,当时这层楼还有夜班,我加班修服务器的时候,总有人给我留一杯热水在桌上。我一直以为是我们组的同事,后来问了才知道,那几天根本没有人排夜班。
林小雪说,那杯水是谁留的。
沈夜说,我没查出来。他说,现在想起来,能在深夜自由进出这层楼的,除了值班的人,就是熟悉整栋楼结构的人。老周当年在园里管档案,可他也在这一带跑过很久,对这栋楼的门禁和机房布局,恐怕比我们公司自己的员工还熟。
他顿了顿,说,如果老周要藏乙册,他一定会挑一个他熟、而别人不熟的地方。这层楼的机房,正好满足这个条件。
他沿着机柜走到最里面。那台初版服务器的机柜还在,外壳蒙着一层薄灰,指示灯正常地闪着。他蹲下来,没有急着动手,先用手电把机柜底部照了一圈。地面是防静电地板的颜色,灰尘积得不厚,只有靠墙那一侧,有一道几乎看不出来的浅痕,像是有什么东西被拖出来过,又被推了回去。
他说,这里有人动过。
林小雪说,是你上次来的时候动的吗。
沈夜摇头,说,我上次只开了机柜前门,没有动过底部夹层。这道浅痕的边缘很整齐,不是检修留下的,是有人特意把什么东西抽出来,看完以后又放回去,放得很小心,但还是留下了痕。
林小雪说,你在找什么。
沈夜说,老周要是把东西藏在这种地方,一定会挑一个既在机房范围里,又不在任何人日常维护清单上的位置。他说,他扫视了一圈机柜与墙之间的夹缝,目光落在最靠里的那块地砖上。
那块地砖的边缘,与相邻地砖之间有一道比别处宽的缝,缝里卡着一小截灰白色的东西,像是纸边。沈夜用指甲把它挑出来,是一张纸条,叠成四方,纸色发黄。
他展开纸条,上面是老周的笔迹,写得很短。
如果你能找到这里,说明你已经查到了名单。机器停过的那一格,夹层里有你要的东西。读之前先看最后一行,别先看第一行。
沈夜看着那行字,说,老周连我怎么找过来都猜到了。
林小雪说,他连你先看哪一行都替你安排好了。
沈夜把手伸进机柜与墙面之间的夹层。夹层很窄,他侧着身,指尖摸到一块金属的边角,慢慢抽出来。那是一台旧式读卡器,灰白色外壳,接口老得发黄,背面贴着一截透明胶带,胶带上写着一行小字,初版配套,勿丢。
他把读卡器放在地上,又往夹层深处探。这一次,他摸到一个扁平的盒子。盒子是防静电袋包的,拆开袋子,里面躺着一块巴掌大的存储介质,方方正正,像一块老式记忆卡,背面贴着手写标签。
标签上写着,微笑幼儿园补课名单,乙。
沈夜捏着那块介质,指腹能感觉到标签纸微微的凹凸。他说,乙册不是纸做的,是一块存储介质。
林小雪说,老周把它做成跟零号芯片同规格的样子。
沈夜点头,说,一样的封装,一样的接口。老周这是在做备份的思路。他找了一个跟零号同规格的载体,把名单抄进去,就像给重要数据做了一份离线的副本。
他拿着读卡器和介质,在机房角落的检修台上坐下来。台面上灰尘很厚,他擦出一块干净的地方,把读卡器接上电源,又把介质插进去。
指示灯亮起,绿的,闪了两下,稳定住。检修台旁边连着一台旧显示器,屏幕慢慢亮起来,出现一行系统提示,介质已识别。
沈夜没有动鼠标。他想起老周便签上的话,先看最后一行,别先看第一行。
他直接滚动数据列表,拖到最末尾。
列表最后一行,不是孩子的名字,不是编号,而是一句留给他的话。字迹是文本格式,可他一眼就能认出那语气,是老周。
第五份碎片在这份名单的出生日期里。读完就删,别让档案室知道你读过。
沈夜盯着这句话,手指停在键盘上,没有落下。
林小雪站在他身后,也看到了,她说,第五份碎片,真的在乙册里。
沈夜说,在出生日期里。他说,可这行字本身,也是老周留的。他知道我们会读到最后一行,所以他把最关键的信息放在这里,让我们先看到。
林小雪说,他让你别让档案室知道你读过。
沈夜说,是。他说,档案室的老师一直在等乙册被打开。她一打开,就会知道有人动过这份名单。
他低头看那行字,心里盘算着怎么把介质里的数据完整读出来,又怎么在读完以后,让访问痕迹彻底消失。
他没有急着接电源,先拿起那块介质,翻来覆去看了一遍。封装的接缝处有一道很细的划痕,像是被硬物撬开过,又被人重新压合回去。他用手电照那道划痕,说,这块介质被打开过。
林小雪说,老周拆过它。
沈夜说,可能是老周,也可能是别人。他说,这种封装是一次性的,打开过就会留下痕迹。他指了指标签的一角,说,你看这里,标签贴了两层,底下一层的边比上面这层黄。老周先把标签贴好,后来又把介质拆开,做完事以后,重新贴了一张新的标签盖上去,想遮住拆过的痕迹。
林小雪说,那他拆开以后做了什么。
沈夜没有马上回答。他把介质举到灯下,顺着标签边缘慢慢掀起一角,底下露出一行极小的字,是刻在壳体上的,不是印刷的。他眯起眼辨认,念道,原稿于春分前迁移,本载体内存修订记录一条,修订人签名字迹倾左。
他说,老周在这块介质里做过修订。他拆开外壳,往里面加了一条记录,然后重新封好,贴上新标签,让它看起来像一份从没被动过的原档。
林小雪说,他为什么要加修订记录。
沈夜说,因为他想让我们知道,这份名单被动过,而且是被他动的。他说,老周大概是怕我们拿到乙册以后,分辨不出哪些是档案原本的内容,哪些是他留下的线索。他把自己的痕迹做成了标注,就像程序员在代码里写注释,告诉后来的人,这段是我改的,改之前是什么样。
他顿了顿,说,老周做事的风格,从头到尾都是一个程序员的风格。他连藏东西,都藏得像是做版本管理。
他把介质插进读卡器,又说,既然他留了注释,那注释里多半也会告诉我们,他到底往这份档案里加了什么。
他先把介质里的目录结构调出来,里面只有一个文件,没有文件名,只标着创建时间和修改时间。创建时间是三年前的初春,正是老周从桃园路档案室登记借走乙册的那一天。修改时间也是同一天,之后就再没有动过。
沈夜说,老周拿到这块介质以后,当天就把数据写进去,然后锁了三年,一次都没打开过。
林小雪说,连他自己都没再看过。
沈夜说,他不敢看。他说,这份名单上写的东西,可能是他这辈子最不想面对的内容。他把介质封在这里,就是不想让任何人,包括他自己,再去翻那些名字。
他正说着,读卡器的指示灯忽然从绿变红,闪了两下,又变回绿。显示器上跳出一行小字,检测到远程状态查询,来源地址未知。
沈夜说,有人在探这个端口。
林小雪说,档案室那边?
沈夜没有答话,他迅速把介质的访问记录关掉,断开读卡器的网络端口,只保留本地读取。指示灯重新稳住,绿色的光安静地亮着。
他刚松了口气,裤兜里的手机忽然震动起来。他掏出来,深渊应用弹出两条消息。第一条是一行红字,老师发现你借了不该借的东西。
第二条没有文字,只有一串音频信号。他点开,听筒里传来一阵很轻的铃声,像是老式的电话铃声,一下一下,不紧不慢,从很远的地方响过来。
林小雪说,这个铃声,像是从桃园路那边传来的。
沈夜说,我刚才也这么想。可他看了一眼手机上的时间,又说,不可能。桃园路离这里隔着好几条街,我们走的时候,那栋楼里什么声都没有。
他重新看向读卡器,指示灯还是绿色的,稳稳地亮着。可他知道,从刚才那行红字跳出来的那一刻起,这间档案室的老师,已经知道他碰了乙册。
他低下头,把老周那句话又读了一遍,读完就删,别让档案室知道你读过。
他苦笑了一下,低声说,老周,你来晚了。她现在已经知道了。
林小雪说,那我们怎么办,还读吗。
沈夜说,读。他说,既然她已经知道了,那我们更要赶在她找上门之前,把第五份碎片拿到手。
他把那块介质重新插好,调出出生日期那一列数据,屏幕的光映在他脸上,一跳一跳的。
他盯着数据流,又抬眼看了看读卡器上那块介质。介质比常见的记忆卡厚一点,分量也更沉,像是里面多塞了一层东西。他转头对林小雪说,老周要是只想藏数据,用普通卡就够了,不必做成跟零号同规格。
林小雪说,同规格意味着什么。
沈夜说,意味着它可能不止是名单。他说,同一套封装,同一套接口,如果里面跑的是同一套底层协议,那么这份名单,也许从一开始就是照着零号的记忆格式做的。
他没有把话说完。有些猜测,要等数据真正读出来以后,才能验证。
窗外的天已经黑透,机房深处的指示灯无声地闪烁,像一双一双没有合上的眼睛。