卫星终端的屏幕在警告窗口弹出后陷入了死寂。不是关机——是比关机更可怕的沉默,那种被外部力量接管之后、所有本地指令都变成无效敲击的沉默。纳撒尼尔跪在水泥地上,手指在触摸板上疯狂滑动,屏幕上的光标却以比他慢半拍的速度移动,像一只被胶水粘住腿的虫子。
“他们在反向注入。”文森特靠在水泥墙上,一只手按着肋骨,每说一个字嘴角的血沫就冒出新的气泡,“不是破解密码。是往终端里灌了一个镜像程序。你现在看到的每一个操作界面,都是他们画给你的。”
纳撒尼尔的手指停了下来。他终于注意到屏幕上一个他早该发现的细节——警告窗口的关闭按钮不在右上角,而是偏了三个像素。他在米尔福德学院的数据中心见过同样的手法。那是一种被称为“幽灵界面”的渗透技术,用一层像素级精确的假界面覆盖真实系统,让操作者在自以为控制一切的时候,实际上每一步都在入侵者铺设的轨道上滑行。
“我们还有多少时间?”
“从反向注入完成到物理定位锁定,最快九分钟。”文森特咳了一声,用手背擦掉嘴边的血,手背上留下一道被雨水稀释过的淡红色,“鲁尔克不需要冲进来。他只需要等九分钟,然后用无线电告诉那辆SUV里的人我们精确到厘米的坐标。”
纳撒尼尔站起来,环顾水泵房。铁门——唯一的正常出入口——外面是沙暴和暴雨的混合物,以及那辆熄了灯蹲守在黑暗中的黑色SUV。后窗已经被风吹得完全变形,窗框卡死在半开位置,勉强能挤出一个人的宽度。但那扇窗朝向休息站北侧的荒漠,没有任何掩体,出去之后是三百米的完全暴露地带。
“后窗能走。”他说,“但出去之后没有掩护。”
“不需要掩护。”文森特用没受伤的那只手把帆布包拽到身边,从里面翻出那支信号枪,“需要的是让他们往错误的方向看。”
他把信号枪递给纳撒尼尔,然后从包里掏出最后一颗信号弹——不是红色的,是白色的,外壳上印着“军用剩余物资——高亮度照明弹——持续燃烧时间约四十秒”的字样。
“往加油棚方向打。白色照明弹在沙暴里会产生漫反射,整个加油棚区域会在半分钟内亮如白昼。所有夜视设备在那四十秒里都会过载。”他从包里又抽出一根细长的导线,一端连接着卫星终端背面一个纳撒尼尔从未注意过的辅助接口,另一端握在自己手里,“他们在监视终端屏幕,不知道我已经在物理层上做了旁路。这根导线绕过了被镜像劫持的显示芯片,直接连接到硬盘阵列的原始读写通道。我需要四分钟。”
“四分钟之后呢?”
“之后你用信号枪照亮加油棚,从后窗出去,往北跑。跑出三百米之后趴下,等照明弹熄灭。然后继续往北——北边那条干涸的泄洪沟可以一直通到州际公路的桥洞下面。”他把导线插进终端背面,头也不抬,“在那等我。”
“你呢?”
文森特终于抬起头。他的嘴唇因为失血而发白,但眼神里那台永不停机的计算机仍在全速运转。他看着纳撒尼尔,用一种不算温柔也不算冷酷的语气说:“我留在终端旁边。鲁尔克的镜像程序需要看到一个持续在操作的使用者,否则它会立刻触发物理定位。我需要让它以为我还在试图修复系统。”
“那九分钟到了呢?”
“九分钟到了之后,鲁尔克的人冲进来,看到的是一台已经完成上传的终端和一个已经没有利用价值的我。”他把手从肋骨上移开,掌心里全是血,“他们要的是数据不外泄。如果他们确认数据已经泄出去了,杀我的成本就会远远超过止损的意义。这是蓝门公司的决策逻辑——不是复仇,是成本收益分析。”
纳撒尼尔在他面前蹲下来。
“你刚才说上传完成了?屏幕上写着‘已成功发送文件:0个’。”
“屏幕是假的。”文森特的嘴角浮起一个极其微弱的、带着血的上扬,“我在引雷摔下来之前按下了紧急上传密钥。终端在天线接通的最后十一秒内推送了全部核心文件——调整系数表、违约预测模型、哈蒙德的举报信原件、蓝门协议附件、奥尔特加的汇款记录。全部四十三封邮件的附件。那个假界面盖住了真实的上传确认,但硬盘阵列的读写指示灯在那一刻闪了六下。六下代表写入完成。鲁尔克还在追一个已经被发送出去的幽灵。”
纳撒尼尔听到自己的呼吸在喉咙里卡了一下。不是松一口气——是那种在悬崖边上走了整夜之后发现太阳正在升起时,反而不敢确定那是不是另一种幻觉。
“他不知道自己已经输了。”
“他不会输。他会继续追。”文森特把信号枪塞进纳撒尼尔手里,手指沾了血,在纳撒尼尔掌心留下一个温热的印记,“但他的雇主——洛马克斯的合规官、奥尔特加主席、那三家贷款服务机构的副总裁——他们会在明天早上被邮件唤醒。他们会用四十分钟的时间试图撤回邮件、联系媒体、启动危机公关。在那四十分钟里,瓦斯奎兹会拿着你交给她的证据原件向联邦法官申请紧急冻结令。没有法官会在看到同一套证据被独立提交两份的情况下拒绝签署。这就是为什么你需要去桥洞下面等她。”
“等她?”
“我在你爬后窗的时候给瓦斯奎兹发了加密坐标。不是我发的——是终端的自动分发协议。它的最后一条指令不是上传文件,是上传我们的位置。瓦斯奎兹现在正在往这边赶。你需要在她到达之前不被鲁尔克的人找到。”他停了片刻,“这是最后一段路。”
纳撒尼尔握紧信号枪的枪柄。塑料握把上有一道裂纹,摸起来像他小时候和文森特一起在后山上摔碎的恐龙骨化石。二十年前那些骨头在他们手里拼成了错误的形状,但他们坚信那是一只从未被发现的史前巨兽。后来县博物馆的人告诉他们,那是三副不同动物的骨架混在一起,什么都不是。他们不信。他们把骨头埋回土里,在上面插了一根树枝做标记。那根树枝的位置,他现在还能在记忆里找到。
“桥洞下面见。”他说。
文森特点了点头。然后他做了一件纳撒尼尔从未见过他做的事——他伸出手,用那只没沾血的手,握住纳撒尼尔的手腕,用力按了一下。不是握手,不是拥抱。是一种更古老的、属于那些在一起长大之后各自走向不同深渊的人之间的道别方式。
然后他转身面对终端,开始敲击那个已经被劫持的假界面,每一次敲击都在告诉屏幕另一端的追踪者:他还在这里,还在挣扎,还在试图修复一个已经被掏空的系统。
纳撒尼尔推开后窗。暴雨打在他的后背上,瞬间把外套淋透。他蹲在窗框上,把信号枪对准加油棚方向,扣下扳机。白色照明弹在沙暴中炸开,漫天飞舞的沙粒变成了一面巨大的反光幕,整个休息站废墟在瞬间被照成白昼。他听到身后水泵房里文森特敲击键盘的声音仍然在继续,有节奏,有规律,像一首只有他自己听得见的进行曲。
然后他跳下窗台,朝北跑。
三百米的距离在暴雨和沙暴的双重撕扯下被拉成了无限长。他的脚步踩在已经泡软的沙土上,每一步都会陷下去两寸,拔出来时带着泥和碎石的重量。风从侧面推他,雨从上面砸他,照明弹的强光在他身后逐渐减弱,影子在他脚前越拉越长,最后在照明弹熄灭的瞬间,整个世界的影子一起消失。
他在黑暗中继续跑。干涸的泄洪沟在他脚下忽然出现——不是看到的,是踩到的。他整个人滑下去,后背贴着沟壁的碎石,一只手抓住了沟沿上一丛带刺的灌木,才没有一直滚到沟底。他用灌木稳住了身体,在沟壁上蹲下来,大口喘气。嘴巴里进了沙子和雨水,还有从额头上流下来的汗。
他在黑暗中回头看休息站的方向。距离已经把那里压缩成一片模糊的黑影,只有偶尔的闪电能勾勒出加油棚的钢架和水泵房低矮的方形轮廓。水泵房的窗户里有一小点微弱的蓝光——那是终端屏幕。文森特还坐在那点光前面,手指还在敲击键盘,让鲁尔克的追踪程序以为一切仍在控制之中。
然后蓝光忽然熄灭了。
不是渐渐变暗——是瞬间熄灭,像是被一只手干脆地按掉了电源。紧接着,黑暗中亮起了手电筒的光柱,三束,从不同的角度刺入水泵房,在墙壁和天花板上扫过。SUV的车门开关声穿过雨幕传来,沉重而急促。有人在大喊什么,声音被风撕碎,只留下几个无法辨认的音节。
纳撒尼尔握紧了手里的信号枪。枪管还是烫的。他在心里数数。数到十二的时候,手电筒的光柱从水泵房里撤了出来,开始朝不同的方向扫射。他们在找人。他们在找一个已经不在那里的人。
他想站起来继续往北走,但腿不听话。不是没有力气——是身体在违背大脑的指令。他的理智说走,他的膝盖说再等一分钟。就在这一分钟的僵持里,他听到了一个不该出现在泄洪沟里的声音——脚步声。不是从休息站方向来的,是从北边,从他本该去的方向。有人正沿着泄洪沟朝他走来,脚步不疾不徐,踩在碎石上的声音均匀而有节奏,像一台被精密调试过的节拍器。
一道闪电劈开夜空。在那一瞬间的白光里,纳撒尼尔看清了来人的轮廓——身材不高,肩膀宽阔,左手打着一把黑色的战术伞,右手自然垂在身侧。雨滴打在伞面上,溅开一圈细密的水雾。
马尔科姆·鲁尔克收起伞,在距离他不到十米的地方停下来。
“索恩先生。”他说,声音穿过雨幕,平静得像在会议室里做汇报,“你的搭档花了很大力气让我以为你们在一起。两套分开的假信号,一南一北。很有创意。但你忘了一件事——我在加油棚的钢架上安装的不只是引雷装置。还有震动传感器。刚才你从水泵房跑向北边的时候,每一步都踩在我铺设的传感阵列上。我不到四十秒就知道你在往这个方向跑。”
他把伞重新撑开,用那只手背上有旧伤疤的手握住伞柄。
“所以很遗憾,你跑的方向不是北。是我想让你跑的。”
纳撒尼尔慢慢站起来。膝盖还在发抖,但声音已经稳住了。
“你不知道。”他说。
“不知道什么?”
“你不知道在你追我的这段时间里,那些文件已经被发送出去了。全部四十三个收件人。调整系数、违约预测、奥尔特加的汇款记录。每一个标点符号。你不是来抓我的——你是来确认的。你想从我嘴里听到我说‘没有发送成功’,然后你回去向洛马克斯报告一切仍在控制中。”他往前走了一步,雨水顺着他的眉毛往下淌,“但我说不出口。因为真相是另一个版本。”
鲁尔克没有回答。他站在雨中,黑色战术伞下的脸上看不出任何情绪波动,但握伞柄的手指——纳撒尼尔在闪电中看到了——指节泛白了一下。
然后鲁尔克把伞微微抬起,让手电筒的光柱从侧面照在纳撒尼尔的脸上。这个动作持续了大概五秒。然后他把光柱移开,拿起卫星电话,拨通了一个号码。
“代码蓝。”他说,“执行第七章预案。”
挂断电话后,他把手电筒关掉,重新隐入黑暗中。脚步声朝休息站方向退去,越来越远,最后被风雨完全吞没。
纳撒尼尔站在泄洪沟里,全身湿透,手里握着一把已经没有子弹的信号枪,耳边反复回放着鲁尔克最后说的那五个字——“第七章预案”。他不知道第七章是什么,但他知道一件事:在他认识文森特的那些年里,每一次文森特说“这是最后一段路”的时候,都意味着他自己选择的那条路已经走完了。
他沿着泄洪沟朝休息站方向跑回去。不是朝北,是朝南。方向错了,他知道。但他的身体在替他做决定,而他的大脑已经放弃了反对。
在距离休息站大约还有一百米的地方,他撞上了迎面跑来的另一个人。那个人穿着一件湿透的深色防风外套,手里举着一把战术手电筒,光柱在他脸上一扫而过然后迅速压低。埃琳娜·瓦斯奎兹。她的身后跟着四个穿着防弹背心的身影,背心上印着联邦调查局的黄色字母。
“索恩?”她一把抓住他的肩膀,手上的力道比他预想的更大,“你在这干什么?我收到的坐标——”
“那个坐标是假的。文森特在终端上设了自动分发,把真实坐标发给了你,然后把我引向另一边。”纳撒尼尔几乎是在喊,“他还在水泵房里。”
瓦斯奎兹用手电筒照亮纳撒尼尔的脸,看了他两秒,然后转向身后那几个探员。
“包围休息站水泵房和加油棚。所有武装人员。马上。”
四个探员散开朝休息站方向推进。瓦斯奎兹扣住纳撒尼尔的手腕,拽着他往前跑。她的手指是冷的,但力道很稳。
“你刚才说‘他还在水泵房里’——用过去时?”
纳撒尼尔没有回答,因为他在说出“用过去时”这几个字之前,先看到了休息站的方向。
水泵房在燃烧。
不是那种慢慢蔓延的火焰——是整栋预制水泥板建筑在同时燃烧,橘红色的火舌从每一扇窗户和每一条墙缝里喷涌而出,在沙暴和暴雨中发出水火冲突的嘶嘶尖啸。雨滴落在火焰上瞬间汽化,白色的蒸汽和黑色的浓烟在火焰上方拧成一股旋转的柱子,像一根从沙漠深处伸出来的手指。
蓝光。蓝色是什么时候熄灭的?是在他跳进泄洪沟之后。熄灭的理由不是他被抓到了,而是文森特自己按掉了终端。他在暴露坐标的最后一刻关闭了所有电源,用物理手段阻止了鲁尔克的追踪程序锁定纳撒尼尔的位置。然后他启动了自毁——不是终端自毁,是那根连接到加密硬盘阵列的导线,导线里埋着的不是数据线,是引线。终端自毁会触发电池短路,电池短路产生电弧,电弧引燃水泵房里残留的油污和那桶纳撒尼尔根本没注意到的备用汽油。
整栋建筑在三分钟内变成了一根燃烧的火柴。
纳撒尼尔站在原地,雨水和泪水在他脸上汇成同一条线。瓦斯奎兹站在他旁边,手电筒的光柱垂下来,照亮两人之间的泥泞地面。
一名探员从休息站方向跑回来,气喘吁吁。“没有生命迹象。水泵房里没有人。整个建筑被烧空了,屋顶已经塌了。”
“外面呢?有没有人逃出来?”
“没有目击到任何人离开。另外——”探员犹豫了一下,把手里拿着的一个东西递给瓦斯奎兹。那是一块烧焦了一半的塑料片,外壳上还残留着一个褪色的卡通蝙蝠贴纸。塔米的电脑。
瓦斯奎兹翻过塑料片,背面有几道用力划出的痕迹,不是火烧的,是有人用尖锐物刻的。她用手电筒对准那些痕迹,辨认出了六个歪歪扭扭的字母。
“向北。”
她把塑料片递给纳撒尼尔。纳撒尼尔握着那半块残骸,塑料边缘还很烫,但他没有松手。他看着刻痕上被火烧过的颜色——黑色,然后更深的黑色。文森特在被烧死之前,用最后的时间在这块塑料上刻了一个方向。而这一次他指的不是假的,不是替身,不是陷阱。
向北。
在休息站以南不到四百米的黑暗里,马尔科姆·鲁尔克坐在他的SUV后座上,用车载加密终端输入了发给洛马克斯基金总部的最后一封战报。
“代码蓝已执行。数据泄露确认。建议启动联邦监管应急对冲。外勤单位撤回。”
他合上终端,把咖啡杯从杯架上取下来。咖啡已经凉透了,但他还是一口喝完了。
SUV发动,朝南驶去。尾灯在沙暴中变成两个越来越小的红点,最后被沙尘完全吞没,像两只终于闭上了的眼睛。


No comments yet. Be the first to comment!