第454章 妈妈出手了(1/1)
萧队长和陆组长到的时候,已经快中午了。陆组长把技术组的两个人也带了过来,说是万一需要做紧急备份或者隔离操作,多两个人手更稳妥。萧队长在走廊里听童童简要说了情况,表情一直很平静,直到童童说到“心率阈值触发”那段,他的脚步顿了一下。他说:“你妈妈在设备里埋了条件判断?让覆盖程序在目标心率过高时自动失败?”童童点头。萧队长沉默了两秒,然后说:“她不是在写程序。她是在写遗书。只是用代码的形式写的。”
一行人进了分析室。童童重新打开终端,把那段代码调出来给陆组长看。陆组长看了很久,又让技术员做了代码溯源。技术员敲了几行命令,屏幕上跳出一串数据。陆组长看完,抬起头说:“这段代码确实不是白塔写的。它的底层编译逻辑和这套设备的主程序不一样。主程序用的是白塔惯用的那套老式编译框架,但这段代码被嵌在框架的底层,用的是另一种更简洁的编译方式。两种代码在同一个文件里共存,但没有冲突。这说明写这段代码的人,对白塔的编程框架非常熟悉,熟悉到可以在它的底层偷偷加东西而不被发现。”他看着童童,“你妈妈当年在科学院负责程序校验的时候,是不是接触过白塔的编程框架?”童童说:“她离职前最后一份工作,就是校验科学院所有在建项目的程序安全性。白塔当时在科学院有几个外包项目,那些项目的代码都是她审过的。”陆组长说:“那她就有机会在审核的时候,把自己写的代码塞进白塔的代码库里。白塔的程序员用她改过的代码库来写覆盖程序,她的代码就跟着进了最终版本。他们根本不知道。”
童童把那段代码从头到尾又看了一遍。心率阈值,条件判断,跳过覆盖序列的最后三步。这三个步骤写得很简洁,每一行都刚好卡在白塔程序的逻辑缝隙里,既不破坏原有功能,又能在关键时刻让整个覆盖流程失效。妈妈写这段代码的时候,一定反复测试过很多遍。她知道白塔的程序员会用什么方式写程序,知道他们的编译习惯,知道他们的测试流程会漏掉哪些角落。所以她把自己写的东西藏在那些角落里,等一个合适的时机,让它自己浮出来。而那个合适的时机,就是当有人被绑上金属床、恐惧到心率飙升的时候。
童童坐在椅子上,两只手搁在膝盖上。她的眼眶确实热了一下。她想起妈妈在笔记本最后几页写的那行字——“已发现异常,留此备份。”她以前以为“备份”指的是数据。现在她明白了,妈妈说的“备份”也是代码。是救人的代码。妈妈知道自己可能来不及阻止白塔造出这台设备。她甚至可能知道设备一旦造出来,就会被用来害人。所以她在那台设备里埋了一个看不见的开关。当有人被绑上去、害怕到极点的时候,那个开关就会自动跳闸。爸爸就是这样活下来的。
她站起来,走到金属床旁边。床架上的绑带已经被取走了,只剩下光秃秃的金属边框。她蹲下来,用手掌贴着床沿的凹痕。那是爸爸当年被绑在这里时留下的吗?还是张成林留下的?或者是其他什么人?她不知道。但她知道,从今天起,这张床再也绑不住任何人了。
她站起身,走回终端前。萧队长问:“后门在哪?”童童把终端屏幕转向他。屏幕上那个极简的命令行界面还在,提示符一闪一闪的:“输入清除指令。”童童说:“这个后门的入口藏在代码的底层函数里。调用条件是今天的系统时间戳。妈妈把日期设成了今天。她不知道白塔会用这台设备害谁,但她知道有一天会有人找到它。所以她把入口留在了她认为对的人会来的那一天。”萧队长看了陆组长一眼。陆组长说:“可以操作。但清除之后,设备就彻底废了。再也无法启动。”童童说:“就是要让它废掉。留着它,白塔就可能找到办法把它修好。把它清空,白塔就再也找不回那些数据了。”她转向萧队长,“萧叔叔,我要按下去。”萧队长点头:“按。”
童童把手放在键盘上。她深吸一口气,然后敲下了那行指令。屏幕上弹出一行字:“确认清除所有覆盖记录?此操作不可逆。”她按下“是”。屏幕闪了一下,然后开始滚动。一行接一行的数据从屏幕底部往上涌,像一条被拆开的河。每滚过一行,就意味着一个人的覆盖记录被永久删除。那些名字、那些日期、那些实验数据、那些被覆盖的人、那些失败的、成功的、被清除的——所有的一切都在几秒之内化为乌有。屏幕上最后跳出一行字:“清除完成。设备已锁定。”然后整个屏幕暗了下去。主控台上的指示灯依次熄灭,最后连电源灯也暗了。设备间里安静得只剩通风系统的低鸣。童童把手从键盘上收回来。她低头看了看自己的手,手指还在微微发颤。肖国华站在她身后,把右手搭在她肩膀上。他没有说话,只是站着。童童说:“爸,妈妈把能做的都做了。现在轮到我们了。”她转过身,看着萧队长,“设备清了。白塔在华国的意识覆盖记录,全没了。他们再也找不回来了。”萧队长说:“那我们就趁他们还没反应过来之前,把剩下的人收了。名单上那些‘观察中’的人,还有平川那个开柴油车抽旱烟的人,一个都不放过。”童童点头。她把铜钱从领口里拉出来,握在手心里。铜钱温热,像母亲最后一道余温。故事,还在继续。