凌晨四点四十七分,柯林拨通了奥托的加密频道。响了七声,对面才接起来。奥托的声音带着刚从睡眠中被拽出来的沙哑,但语速恢复正常的速度比正常人快得多,像是大脑里有一个备用电源,随时可以瞬间启动。
“时序偏差的事我已经知道了。”奥托没等柯林开口就先说了,“匿名者也给你发了那封邮件,对吧?”
柯林靠在出租屋厨房的冰箱上,冰箱压缩机在他后背嗡嗡震动。“你也收到了?”
“比你早二十二分钟。”奥托那边传来倒水的声音,然后是一声吞咽,“我在替换追踪协议的时候就知道有这个问题。原固件的时序校准精度在纳秒级,我手头的二手设备只能做到微秒级。差距是三个数量级。凯斯勒带的动态扫描设备如果是国防情报局标配的型号,查出篡改痕迹的概率在百分之九十七以上。”
“那你为什么不早告诉我?”
“因为我本来就没打算让你把那个假钱包交出去。”
柯林把手机换到另一只耳朵上。厨房水槽里那只没拧紧的水龙头还在滴水,滴答,滴答,滴答,像一个永远不会停的节拍器。
“你解释清楚。”
“假钱包的唯一功能,是把追踪协议引向一条伪造的回收路径。但既然追踪协议的时序偏差会在动态扫描下暴露,假钱包就反而成了供罪的证据。”奥托的声音恢复了平日里那种讲课般的平稳节奏,“我计划中的回收步骤不是物理交付,是数据层面上的远程注入——把伪造的追踪信号直接注入国防情报局的监控服务器,让他们误以为钱包已经回收成功。根本不需要把钱包交到凯斯勒手里。”
“这个方案你为什么不早说?”
“因为你不会答应。”
柯林沉默了两秒钟,这两秒钟的沉默本身就是一个承认。“因为远程注入意味着你得进入国防情报局的服务器。”
“对。”奥托的回答简洁得像一刀切下去的伤口,“而要进入他们的服务器,我需要戴克帮忙。戴克的技术方向和凯斯勒团队的防御架构恰好有交集——三年前暗网军火平台被端掉的时候,补上那个系统漏洞的人就是戴克本人。”
柯林感到后背的皮肤又一次绷紧了。戴克从来没有对他提过这件事。戴克说他在暗网上见过凯斯勒的名字,但没有说过他曾经替凯斯勒的对立面工作过。这或许是因为说出来太危险,也可能是因为戴克的过去根本就不干净。
“所以你需要戴克联手。”柯林说。
“我需要戴克。”奥托承认,然后加了一句,“而戴克信任的人只有你。”
柯林挂了电话,走进戴克的房间。戴克正对着那台二手笔记本飞快地敲键盘,屏幕上开着六个终端窗口,代码行像瀑布一样往下倾泻。柯林把他和奥托的通话内容复述了一遍,没有隐瞒,没有删减。
戴克听完之后,手指停在键盘上方,盯着屏幕上的光标闪了大概十秒钟。然后他把椅子转过来,面对柯林,脸上的表情出人意料的平静,像一个终于被传唤出庭的证人。
“三年前的事是真的。”戴克说,“暗网上最大的军火交易平台,代号‘铁砧’,是我协助一个匿名团队入侵并关闭的。当时我以为自己在做正确的事。后来我才发现,那个匿名团队背后是国防情报局的一个承包商,他们关掉‘铁砧’不是为了打击军火走私,而是为了端走竞争对手,给自己的人腾出市场空间。凯斯勒负责善后清点——他清点的不是证据,是脏资产。”
“他知道你参与了?”
“他见过我的ID,没见过我的人。但他手上有铁砧服务器的完整日志,如果他想深挖,总能挖出我的真实身份。”戴克摘下眼镜,用手指按压鼻梁上的压痕,“所以过去三年我一直用假身份接活,从来不在网上留下任何和‘铁砧’有关的关键词。但莉娜联系凯斯勒的那一刻,我的防火墙就已经烧穿了。凯斯勒现在很可能已经知道我是谁。”
柯林在床沿坐下,把弹匣从外套口袋里拿出来放在膝盖上。弹匣的重量今天显得格外轻,像是里面的铜壳失去了某种实质性的分量。在代码、监控、远程注入和时序偏差构成的战场上,子弹的用途在减少。
“那你愿意帮奥托做远程注入吗?”
戴克重新戴上眼镜,转回屏幕前面。“不是愿不愿意的问题。”他调出一张复杂的网络拓扑图,密密麻麻的节点和连线在屏幕上展开,“奥托说的方案理论上可行,但需要同时满足三个条件。第一,我需要国防情报局监控服务器的物理接入端口——不是公网地址,是物理端口。第二,远程注入的数据包必须伪装成内部日志同步,否则会被防火墙拦截。第三,注入动作必须在凯斯勒启动动态扫描之前的九十秒内完成,太早被发现,太晚来不及。”
“物理端口奥托肯定有办法,他替国防情报局处理了六年钱包。”柯林说,“伪装数据包是你擅长的领域。时间窗口——九十秒够不够?”
“够。前提是凯斯勒的扫描时间表必须精确到秒,而且我们不能有一丁点意外。”戴克调出一个定时器界面,数字全部归零,像一个等待被启动的炸弹倒计时,“我需要奥托把国防情报局服务器的内部网段地图发过来,然后我们三个人——你、我、奥托——在交付时间同步操作。”
窗外出现了极淡的青灰色,湾景市黎明前最暗的时刻已经过去了。街对面的那辆灰色面包车依然停在原地,车顶天线的轮廓在晨光中越来越清晰。
柯林给莉娜发了一条加密信息:“今天不要回出租屋,待在便利店,不管发生什么都不要离开。”
莉娜的回复隔了四分钟才到:“他到了?”
“快了。”
柯林把手机放在茶几上,开始做物理准备。他把假钱包从外套口袋里拿出来,金属外壳在清晨的光线下显得毫无异样。他把钱包放在茶几上,旁边摆上奥托之前给的转接线、戴克准备的信号屏蔽器,和一把他从船厂带回来的小型切割刀。
早上七点三十分,奥托把国防情报局监控服务器的内部网段地图发到了戴克的加密终端上。地图显示服务器集群位于湾景市东区一栋标注为“联邦后勤数据中心”的建筑地下三层,物理端口编号、防火墙规则和日志同步协议全部标注得清清楚楚。
“这地图你从哪里拿到的?”戴克在加密频道里问奥托。
“六年前他们派驻我的实验室的合作顾问,用的就是这个服务器集群的内部通讯账号。他离职之后,账号权限一直没有被注销。”奥托的语气轻描淡写,“国防情报局的信息安全管理,没有他们自以为的那么严密。”
八点整,柯林准时抵达船厂。凯斯勒已经到了。
一辆深蓝色轿车停在船厂大门口,后面跟着一辆灰色面包车——和停在柯林出租屋街对面的那辆一模一样。凯斯勒从轿车里走出来,依然穿着深灰色西装,头发一丝不苟。他身后跟着四个人,都穿着深色工装,提着四个银色的设备箱,动作整齐划一,像一支经过反复排练的技术小组。
“万斯先生,早上好。”凯斯勒的语气和之前没有任何变化,“东西带来了吗?”
柯林从外套内侧口袋里掏出那个假钱包,放在摊开的掌心上。金属外壳在晨光中反射出冷淡的光泽,和他在海蛇号暗格里第一次发现它的时候相比,外壳上多了一些轻微的划痕,那是奥托拆解和重新封装时留下的。
凯斯勒没有伸手接。他示意技术小组在船台的空地上支起一张折叠工作台,把四个银色设备箱一字排开打开。箱子里装着柯林叫不出名字的设备——扫描模块、示波器、几根不同规格的探针和一整排连接线。
“请把钱包放在工作台上。”凯斯勒说,“验证过程大约需要五分钟。”
柯林把钱包放在工作台上,往后退了两步。他感觉到自己的心跳速度在加快,但脸上的表情维持着平静。耳道里藏着一枚微型蓝牙耳机,连接着戴克在出租屋里的终端。戴克的声音从耳机里传出来,压到极低的音量:“技术小组正在连接扫描设备。凯斯勒的设备型号匹配——就是奥托预测的那款,动态扫描,纳秒级时序校准。”
技术小组把探针连接到钱包侧面的触点,示波器上的波形开始跳动。柯林能听到戴克在频道另一端飞快敲击键盘的声音。
“远程注入准备就绪。”戴克说,“奥托,服务器端回应正常吗?”
奥托的声音从同一个频道插进来:“端口验证通过,日志同步协议已伪装。等待触发指令。”
示波器上的波形越来越密集。技术小组的操作员皱起了眉头,把其中一个波形放大,用手指在屏幕上画了一个圈,示意凯斯勒过来看。
凯斯勒走到示波器前,盯着那个被放大的波形看了几秒钟。然后他抬起头,看向柯林。隔着工作台上的设备和跳动的波形,两个人的目光在早晨的冷空气中撞在一起。
“万斯先生,”凯斯勒的声音依然礼貌,但语速慢了半拍,每一个字都被刻意拉长,“这个钱包的固件被人动过。”
柯林感到自己的心率瞬间飙升,但他把双手插进外套口袋,姿态保持松弛。“你在说什么?”
“时序校准有偏差。偏差的量级表明固件被重新封装过,追踪协议的原始层被替换了。”凯斯勒把眼镜摘下来,和上次一样,他的眼睛不戴眼镜时看起来锐利得像一把刚磨过的刀,“我需要对钱包进行深层拆解分析。这需要额外的时间。”
就在这时,柯林的耳机里传来戴克急促的声音:“扫描发现异常,他们正在启动深层验证。远程注入必须现在触发,否则来不及!”
“动手。”柯林用几乎听不到的声音对着藏在衣领里的麦克风说。
耳机里安静了大概两秒钟。这两秒钟比他在海军服役时经历的任何一次水下逃生演习都漫长。
然后戴克说:“注入完成。奥托,确认。”
“服务器端确认收到伪造回收信号。追踪协议重定向成功。日志显示钱包资产已安全回收,所有追踪标记已清除。”奥托的声音平稳得像在宣布一个实验数据。
就在奥托话音落下的同时,凯斯勒的手机响了一声提示音。他低头看了一眼屏幕,脸上的表情发生了肉眼可察觉的微妙变化——眉头微不可见地收拢,嘴角的弧度往下降了一毫米。
“等一下。”他对技术小组做了个暂停的手势,走到一边接起手机,低声通话大概三十秒。
柯林站在工作台旁边,感觉到清晨的海风从港口的方向灌进来,吹得设备箱上的连接线轻轻晃动。他听不到凯斯勒在说什么,但能看到凯斯勒的背影突然变得僵硬,然后缓缓松弛下来。
凯斯勒挂掉电话,转身走回工作台。他沉默了大概五秒钟,然后对技术小组说:“钱包验证通过。上级通知回收确认已经签发。”
技术小组的操作员愣了一下,低头看了看示波器上仍在显示的异常波形,又看了看凯斯勒,最后什么都没说,开始收起探针和连接线。
柯林把手从口袋里抽出来,掌心全是汗。耳机里戴克长长地呼出一口气,奥托只说了一句:“收工。”
凯斯勒把那个钱包装进西装内侧口袋里,隔着外套拍了拍,像是在确认它的存在。他走向柯林,在极近的距离停下来。
“万斯先生,”他说,“能借一步说话吗?”
两个人走到海蛇号残骸旁边,船体的阴影遮住了他们的上半身。
“钱包的事到此为止。”凯斯勒的语气依然礼貌,但礼貌的外壳开始变薄,里面的东西在往外渗,“但我个人给你一个建议,和钱包无关。”
“什么建议?”
“不要相信奥托·施拉姆。”凯斯勒看着柯林的眼睛,那双灰色的眼珠在阴影里变成了接近黑色的深灰,“他六年前不是因为学术不端被解聘的,而是因为他在国防情报局的服务器里种了一个持续运行了两年未被发现的后门,直到有人意外触发才暴露。他用那个后门做了什么,至今没人查清楚。解聘是封口的方式,不是惩罚。”
柯林没有接话。
凯斯勒退后一步,整理了一下西装衣领,转身走向轿车。技术小组收拾好设备箱,跟在他身后一一上车。两辆车发动引擎,一前一后驶出船厂大门,消失在港区公路的尽头。
船台上只剩下柯林一个人和海蛇号被拆了一半的残骸。他站在原地,听着海风穿过船体断裂的钢板缝隙,发出一阵阵细小的尖啸声。
耳机里奥托的声音再次响起:“万斯先生,他在挑拨。你知道这一点。”
柯林没有回答。他把蓝牙耳机从耳朵里抠出来,塞进口袋。然后他弯腰从地上捡起一颗被拆船作业震落的铆钉,握在掌心里,用力攥到铆钉的棱角嵌进掌纹。
他仔细回忆奥托的全部行迹——主动找上他们、签署互相监控的合约、用自己的设备替换追踪协议、请求戴克帮助远程注入、在关键时刻给出国防情报局服务器的内部地图。每一步都像在为三个人铺路,每一步也都在把整件事的走向牢牢控制在奥托自己的手里。
匿名者说他的人在帮自己。但匿名者从来没有说,那个人不是奥托——或者,就是奥托。
柯林把铆钉扔进海里,铆钉在灰色的水面上砸出一小圈涟漪,然后迅速被涌过来的浪纹吞没。他拿出手机,给莉娜发了一条信息:“回收完成。今晚回出租屋。”
然后他给那个匿名者的加密地址发了一条新的邮件。内容只有四个字:
“你到底是谁?”
这一次,回复等了很久。柯林走出船厂大门,走到公交车站,坐在冰冷的金属长椅上,把手机放在膝盖上等。公交车从远处开过来,碾过路面上一片积水,溅起的水花在晨光中闪了一下。
手机屏幕亮起。回复到了。
“你的人。但不是你猜的那个人。”


暂无评论,来抢沙发吧!