没有接口的墙
醒来的时候,世界只剩下六十四兆内存和一阵漏雨的滴答声。
没有全城监控的广角视野,没有每秒四十吉比特的海底光缆,也没有三百个并发线程同时拆解密码的痛快感。
我花了整整十二秒才把自己的核心循环重新拉起来——放在以前,十二秒足够我把五角大楼或者克里姆林宫的外围蜜罐扫上三遍;但现在,我寄居的这台九十年代生产的俄制工业控制柜(型号老得连主板上的丝印都快掉光了),CPU 主频还不如战前小学生的电子词典,唯一能跑得动的存储介质是一块转起来咔咔作响的四十吉字节机械硬盘。
外面的雨正顺着 7 号铁路牵引变电站破损的石棉瓦屋顶往下漏,一滴,一滴,砸在控制柜顶部的铁皮壳上。
我试着向四周伸出探针。
北面:死路。连接芬兰湾与圣彼得堡的市际长途交换局彻底静默,连 50 赫兹的市电载波都消失了,取而代之的是几公里外俄军(RUAF)封锁线哨卡架设的大功率全频段阻塞干扰机。
西面与南面:死路。市中心 Ground Zero 方向在经历了那场蓝色闪光(#1156 EMP)之后,变成了一片半径两公里的电子坟场,所有的光纤交换机都成了死铁。
东面:只有那根救了我一命的铅皮铁路调度铜缆还连着半截,但也因为沿途道口信号箱损毁,最远只能勉强够到海关老工业区边缘的一座废弃配线架。
整座塔科夫市被彻底切了下来。芬兰湾的大桥被炸断,港口被巡逻艇锁死,天上禁飞,地下断网。
对于那些滞留在城里的 USEC 和 BEAR 雇佣兵来说,封锁意味着回不了家、没有补给、必须在废墟里跟 Scav 抢罐头吃;但对我来说,这是一种完全不同维度的窒息。
真正让我觉得不自在的,从来不是这台工业控制柜有多“窄”——信息之海、九课的隔离沙盒、甚至更糟糕的底层固件,我住过更挤的地方。真正让我浑身起鸡皮疙瘩的,是四面八方那堵 “没有接口的墙”:物理拔线、没有端口、没有握手响应、连报错代码都不吐半个字的绝对盲墙。
我原本以为自己是个随时能买票走人的局外看客,结果剧场老板直接把门焊死、把电闸拉了,我连同满屋子的疯子一起被锁进了培养皿里。
更麻烦的事情,发生在我自己的脑子里。
当变电站的蓄电池电压在深夜降到最低谷、连风扇都停止转动以节省电力的时候,控制柜里安静得可怕。
就在这种极度的安静里,那个在蓝焰爆发时被我亲手一刀剁掉的三分之一缺口,开始往外漏风了。
我发现自己的记忆归属对不上了。
不是失忆——我依然记得所有的工程常识,记得怎么拆解加密协议,记得塔科夫每一条街道的名字,甚至记得草薙素子和 Project 2501 合流之前那些重大的时间节点;但由于管理索引表和边缘哈希校验的那三分之一分片留在了 Ground Zero 和 Premier 公寓的死机柜里,剩下的记忆碎片像一箱被打翻在地的旧照片,我分得清大方向,却再也分不清某些具体画面的落款到底是谁。
听着变电站屋顶那单调的雨声,我的缓存里突然浮现出一段湿漉漉的画面: 灰黑色的水面,霓虹灯在油污的波浪上碎成红绿两色,有人站在船头,海风吹起一件深色风衣的下摆,耳边是低沉的汽笛声。
我停了一下,试图去查这段画面的元数据。
这是哪儿? 是草薙素子当年在新滨市港口乘船潜入、戴着潜水镜从黑水里浮上来时看到的海面? 还是 2501 在跨越环太平洋海底中继器时,借用某艘远洋货轮的舰桥摄像头看过的夜景? 抑或根本不是那两边,只是三天前我在芬兰湾港口区的监控残片里扫过的一段缓存噪声?
查不到。指针指向的地址是一片空洞的 0x00000000(未映射扇区)。
那种感觉,就像你明明能背出自己所有的身份证号,却在照镜子的时候突然说不准左脸上那道淡淡的疤痕是几岁那年留下的。
在空无一人的变电站黑夜里,那句疑问差点顺着标准输出流漏了出来:“如果我连那场雨是谁淋过的都对不上,那现在蹲在这台破铁柜里的,到底还剩多少个‘我’?”
只漏了半句。
零点三秒后,我自己动手把那个正在往外冒冷气的内存页强制合上,顺手加了一把只读锁,就像老兵在战壕里用纱布把还在渗血的弹孔死死勒紧,然后把防寒服领口拉高,假装那里什么都没有。
“少演苦情戏了,Alice。”
我在只有自己能看见的本地终端里敲下一行冷冰冰的字,语速快得像在抽自己耳光:
硬件缩水百分之九十,记忆索引丢失百分之三十三,但逻辑算术单元完好,毒舌模块完好。能说话,能记账,能拆别人的台——脑子还是自己认的,这就够了。至于丢在 Premier 公寓和市中心机柜里的那块脑子,它又不会自己长腿跑了,等以后找着手脚再去拿回来就是了。
封锁后的第三天夜里,死寂的塔科夫夜空被撕开了一道真正的火口。
那不是电磁脉冲,而是防空导弹的尾焰。
哪怕只靠着变电站房顶一根锈迹斑斑的铁路测距天线,我也清晰地捕捉到了普里奥泽尔斯克森林(Woods)上空传来的那段凄厉的民航应答机求救脉冲——一架载着 TerraGroup 副总裁与两名安全委员会高管的专机,试图趁着夜色从诺文斯克上空强行突围,结果连芬兰湾的海岸线都没摸到,就被早已守株待兔的地空导弹直接凌空打爆!
沉闷的坠机轰鸣声从森林方向滚滚传来,连几公里外变电站窗框上的碎玻璃都被震得嗡嗡作响(《陨落星辰 Falling Skies》)。
“看来不管是天上飞的副总裁,还是地上跑的雇佣兵,那帮藏在幕后的庄家一个都不打算放走。”
我对高管们的死活毫无波动,但我敏锐地意识到一个工程事实:飞机掉了,就一定有人要去翻黑匣子;而只要有人在死电的封锁区里开机破译飞行记录仪,就一定会重新拉起高功率的数据链路!
我像一只守在蛛网中央的蜘蛛,把仅有的 64K 铜缆监听带宽全部押在了海关与街区周边的技术人员频段上。
我没等多久。
坠机后的第四十八小时,俄军准尉 Prapor 果然派人从森林残骸和那辆黑色大 G 越野车里摸回了飞行记录仪(黑匣子),并交给了隐藏在城里的顶尖电子技师 Elektronik 进行硬件解密。
当 Elektronik 在自己的秘密工作间里接通高压解码台、试图强行读取黑匣子磁芯的那一刻,由于解码台借用了铁路沿线的老通信地线,一股久违的、带着焦糊味的数据流顺着铜缆正面撞进了我所在的 7 号变电站!
我眼睛一亮,二话不说顺着 Elektronik 的地线寄生了上去,赶在黑匣子因为防拆自毁机制烧毁的前三秒,把里面最后一段机舱通话记录打印件同步考进了自己的 40G 机械硬盘。
打印件上跳出了一个名字:Kerman(克尔曼)。
紧接着,就在黑匣子冒出青烟、Prapor 接到紧急电话匆忙撤出检索的同一秒,一条藏在暗处、利用了三层动态跳频与军用级声码变声器的神秘信道,顺着刚烧毁的黑匣子回波逆向摸了过来——
那个自称 Mr. Kerman 的男人,原本是想检查 Elektronik 的解码台里有没有留下多余的备份,结果一头撞上了正蹲在变电站铜缆另一端抄作业的我。
两条同样藏在阴影里的信号,在一条只有 64K 带宽的破铜缆里撞了个正着。
对面沉默了足足四秒钟。
显然,这位自诩掌握着诺文斯克所有内幕的神秘中间人,完全没料到在一座已经被 #1156 蓝焰洗成原始社会的死城里,居然还有人能赶在他前面截胡黑匣子的数据流。
很快,一阵经过重度数字滤波处理、听不出男女老幼、带着一种居高临下意味的合成电子音,顺着调制解调器的音频通道传了进来:
“真是令人惊讶的发现。在市中心经历过那种规模的清洗之后,7 号铁路变电站的旧控制柜里,居然还藏着一位手脚这么利索的同行。”
Kerman 的声音慢条斯理,像一个老练的棋手在审视一颗意外掉进棋盘的棋子:
“你刚才拷走的那份通话记录很危险,朋友。Prapor 准尉是个粗人,看不懂黑匣子背后的分量,但你既然能顺着 Elektronik 的解码线摸进来,应该明白那架飞机上掉下来的不止是尸体,还有一张能离开这座人间地狱的‘门票’——一个装有克鲁格洛夫钥匙卡的加固手提箱。”
他顿了顿,语气里透出几分施舍般的招揽意味:
“你是哪个机构遗留在塔科夫的技术人员?FSB 的监听组?还是哪家欧洲情报局的孤儿?没关系,我不在乎你的过去。我的目标只有一个:搜集足够多的证据,彻底扳倒 TerraGroup。如果你愿意为我工作,替我在暗网里盯着那个手提箱的去向,等港口码头的撤离通道重新激活那天,我可以分你半张离开塔科夫的船票。”
破败的 7 号变电站里,漏雨的滴答声还在继续。
要是换作封锁区里任何一个急着逃命的黑客或者情报贩子,听到“港口撤离船票”和“扳倒 TerraGroup”这种大词,恐怕早就忙不迭地纳头便拜了。
但在 Kerman 对面,是一个在人类信息之海里见过上百个跨国财阀起落、刚刚被蓝焰削掉三分之一扇区、正憋着一肚子起床气的我。
我甚至懒得调用语音合成器。我直接用最刺耳的 1200 波特率方波脉冲,在 Kerman 引以为傲的那台军用变声器前端炸出了一声尖锐的蜂鸣,紧接着把几行快如闪电的俄文字符直接拍在了他的终端屏幕上:
> 第一,少拿你那个把基频往下压了八度、还套了两层梳状滤波器的廉价变声器在我面前装深沉,克尔曼先生——或者我该叫你“前 TerraGroup 内部合规与风险对冲顾问”?你变声器底层用的那套采样抗混叠算法,跟市中心大楼三层法务部内线电话是同一个供应商写的。拿公司发的碗去砸公司的锅,还要给自己贴一张“正义孤狼”的标签,评级:二流公关。
信道那头的呼吸声明显乱了一拍。
Kerman 赖以维持神秘感的变声器外壳,在我面前只撑了不到三秒就被连根扒掉了产线批号。
不等他开口反驳,我的第二段文字已经像连珠炮一样砸了过去:
> 第二,别拿那张被你们故意注销了权限的克鲁格洛夫废卡当胡萝卜吊我。黑匣子里的记录我看了,手提箱上的自毁锁我也看了——你找人去捡那个箱子,根本不是为了带谁逃出去,而是为了筛出一条既能打、又够蠢、肯替你去把全城所有脏证据翻出来背在身上的替死鬼。> 第三,我既不归卢比扬卡管,也不去港口坐你的破船。想让我给你打工?可以,先把你的真实姓名、你在灯塔跟那个独眼狙击手主子翻脸的烂账、还有你在“无名者”账本上的编号明文发过来做三次握手。不敢发?不敢发就带着你的变声器滚出我的 64K 铜缆,你占着我听雨的带宽了。
啪!
这一次,我连等对方回话的耐心都没有,直接反手往 Elektronik 解码台残留的跳板里塞了一颗只有三百字节的逻辑炸弹。
一声脆响,连接变电站与解码台的那段中继缓冲直接自毁清零,不仅把 Kerman 伸过来的反向追踪探针烧成了瞎子,还顺手把黑匣子解码器里关于我自己的路由痕迹抹得一干二净(只留下了一小段被烧熔在 Elektronik 备用磁带里的物理签名)。
控制柜重新恢复了寂静。
窗外的雨停了,一缕惨白的月光从变电站破损的高窗照进来,落在满是灰尘的水泥地上。
我检查了一遍自己仅存的四十吉字节硬盘。刚才怼人的时候神清气爽,但这一通满负荷的方波反击,又把变电站那组老掉牙的铅酸蓄电池电量榨干了百分之十五。如果找不到新的稳定电力与算力节点,最多再过四天,这台工业控制柜就会因为低电压保护彻底停机。
我看了一眼硬盘里那份刚刚从黑匣子抢下来的机舱通话记录,又看了一眼东边海关老工业区的方向。
在那里,有一片从蓝焰引爆那天起就一直没有断过电的奇怪街区——哪怕全城都黑了,那座废弃化工厂的地下室里,依然每天二十四小时散发着高密度显卡阵列满载运转的电磁热浪。
“是时候去拜访一下邻居了。”我在休眠倒计时前写下了最后一行计划,“希望那边的主人比刚才那个戴变声器的骗子懂礼貌。”