杨兴把网线拔出来的那一刻,手很稳的。拔完之后,手指开始抖。不是因为恐惧——好吧,有一部分是——但更多是因为他的大脑正在以接近过载的速度运算。威斯克在扫描服务器。威斯克发现了有人访问地下结构图。威斯克正在往大厅走。这三条信息拼在一起,等于一个结论:他还有最多三分钟来伪造一个完美的系统故障假象,否则等威斯克回到大厅,就是他的死期。
他把网线重新插回终端,打开之前在地下管道里已经扫描过的洋馆内部设备清单。刚才他只是粗略看过一遍,现在他需要精准定位几个关键节点。配电室的电力管理系统、二楼走廊的环境传感器、资料室的温度监控模块——这三者之前的通讯日志显示,它们用的通讯协议和建筑服务器是同一套老旧的LoNworks总线,而且日志轮转周期有个漏洞:系统每三小时才对时一次,对时失败会自动触发一次全设备巡检。上次对时是在两小时四十六分钟前。也就是说,如果他在现在这个时间点制造一次“电压异常→传感器离线→巡检触发”的假日志序列,系统记录会显示这是正常周期内的自动事件,而不是人为扫描。杨兴舔了一下干裂的嘴唇,开始敲键盘。
他先从洋馆的电力管理系统入手。保护伞公司的工业控制系统用的是定制化的ScAdA套件,界面丑陋但底层逻辑和他在浣熊市分部维护过的版本完全一致。他进入配电室子系统的日志模块,找到两小时前的电压波动记录——那次电压波动是真的,暴君培养舱升温时整栋洋馆都闪了一下灯。他在这条真实记录的基础上,追加了三条伪造的连锁日志:电压再次波动→二楼环境传感器离线→系统自动启动全设备巡检。每一条日志的时间戳都严丝合缝,和真实的电压波动曲线完全匹配。他甚至顺手把资料室那台坏掉的温度监控模块也写进了日志里——反正那台设备本来就坏了,威斯克就算派人去检查,也只会看到一个冒烟的铁疙瘩。
然后他开始处理最要命的部分——他的访问记录。建筑服务器的访问日志里清清楚楚地记录了他的终端Ip访问了地下结构图目录。这条记录不能删——删除会留下空白,反而更可疑。他用了另一种方式:把这次访问嫁接到自动巡检进程上。就好像真正的入侵者从来没有存在过,这一切只是一段出了bug的工业代码,和他杨兴没有任何关系。
最后,他把自己终端的mAc地址从服务器ARp表里擦掉,换成吉尔刚才在二楼核对蓝图时用过的平板——他在二楼走廊经过时瞥到过她的设备名称,pAd-VALENtINE-02。他没有用瑞贝卡或者克里斯的设备信息,因为威斯克知道那两人是什么时候进入洋馆的,伪造他们的时间戳反而危险。他选择伪造一个威斯克自己用过的平板,把自己藏在一堆系统进程里——威斯克如果彻底追查,会发现入侵来自他自己,等于自己查自己,最好的结果是他认为真的是系统故障,最差的结果是查不下去。
全部搞定之后,他把终端离线,网线从墙上扯开,用脚踢到壁龛最里面的灰尘堆里。然后他的视野里弹出了一行系统提示:【伪造日志已完成。威斯克发现真实入侵痕迹的概率降至12%。当前怀疑度:23%→21%。】
弹幕从视野右侧缓缓飘过,这次的颜色是冷静的淡蓝色:
【这波操作太It了,我给满分】
【威斯克回来查日志会看到什么?“您的服务器刚刚自己重启并巡检了一遍所有文件”】
【他甚至把证据指向了威斯克自己的平板……什么反向栽赃……】
【怀疑度降了!!!降了!!!从23降到21!!!】
【别高兴太早,威斯克不是看日志的人,他是看人的人】
最后这条弹幕飘过的时候,走廊尽头响起了皮鞋踩在木地板上的声音,步频稳定,步幅均匀,每一步的间隔都像是被节拍器校准过。威斯克回来了。杨兴把终端装进工具包,做了三次深呼吸来降低心率——虽然效果甚微——然后靠坐在壁龛的阴影里,摆出一副“我已经休息了很久很无聊”的姿态。吉尔跟在威斯克身后,手里拿着那份建筑蓝图,表情看不出任何异常。
威斯克走进大厅。他的第一个动作不是走向杨兴,而是走向大厅中央的长桌,将手电筒放在桌面上,然后缓缓扫视了一圈在场的所有人。他的目光移动得并不快,从每个队员的脸上一一滑过,像是在做某种不紧不慢但不可省略的巡检。杨兴垂下眼,装作被手电光晃了一下,顺势把脸埋进阴影里。但他注意到一件事——威斯克的目光扫过他的时候,停了一下,大概比扫过别人多了零点几秒。
“刚才洋馆的电力系统出现了一次波动。”威斯克开口了,语气一如既往地平稳,带着那种标准的队长式可靠感,“我检查了二楼的主配电盘,电压已经稳定。不过——系统日志显示有人在波动期间访问了建筑数据库。”
这句话一出来,大厅里的气氛瞬间变了。克里斯从楼梯口转过身来,眉头拧成川字。巴瑞把正在清点的弹药放下,粗壮的手臂交叉在胸前。瑞贝卡醒了,但她是个聪明孩子,没有出声,只是悄悄往墙角又缩了缩,圆眼睛在煤油灯的映照下闪了一下。
“访问建筑数据库?”克里斯重复了一遍,目光第一时间转向杨兴,然后是吉尔,最后还是回到杨兴,“我们没有一个人会从这里直接控制洋馆的系统——除了你,It哥。”
克里斯这句指向不是为了逼问他,而是要在威斯克开口之前把他投进一个相对安全的死角——由自己人先审,不给威斯克先审的机会。杨兴从壁龛里站起来,摊开双手。“如果是我访问的数据库,我不会让电力波动刚好发生在我登录的同一时间。太蠢了。这要么是系统故障——电力波动触发了自动巡检——要么是别人干的。”
“别人?”威斯克的嘴角动了一下。那个微笑还在,但杨兴注意到微笑的角度比平时上扬了大概一毫米,“你认为洋馆里还有除了我们之外的人?”
“洋馆里有一整群被感染的研究员和安保人员。其中如果有人还保留了一部分认知能力,试图通过内网获取信息或者发出求救信号,也不是不可能。”杨兴说得面不改色,甚至还耸了耸肩,“当然,也可能是系统自己抽风。老旧的工业控制系统在电压不稳定的时候会触发各种莫名其妙的东西,我在浣熊市分部维护的时候见多了。”
威斯克没有说话。他走到大厅角落那台壁挂式的建筑管理终端前——那台终端杨兴之前检查过,已经断电了——按了一下电源键。屏幕亮了。杨兴的心跳在那一瞬间猛地撞了一下肋骨,但他脸上没有任何变化。他知道屏幕会亮,因为整栋建筑的主控线路和资料室核心服务器共享同一个电力猫网络,服务器刚才被访问过,电力猫网络的数据包队列还在缓存里没有完全清空。终端开机后会自动从服务器拉取最后一次系统日志备份,而那份备份就是他伪造好的。
威斯克站在终端前,手指在触摸板上滑动,打开了系统日志界面。沉默了大概三十秒。这三十秒里的每一秒,杨兴都在数自己的心跳。然后威斯克点了点头,把屏幕转向众人。
“确实是系统自动巡检。日志显示电力波动导致二楼环境传感器离线,触发了全设备状态扫描。时间戳和电压波动曲线吻合。”
克里斯走过去看了一眼屏幕,又看了一眼杨兴。那个眼神的意思是——算你走运。杨兴暗自松了一口气,但他的视野右上角同时弹出两行信息。一行是白色的系统提示:【你在威斯克面前成功伪造了系统日志。怀疑度暂时回落。威斯克当前怀疑度:24%。】另一行是红色的弹幕,比系统提示更醒目:【怀疑度24%——但上次显示是21%。系统在说谎。他根本不信。】
弹幕说的是系统在安慰他。但系统说的也是对的——威斯克的怀疑度确实在短时间内大幅跳变过,从23降21再升24,这种数据波动本身也是一种警告信号。不管数值怎么变化,威斯克对他的关注已经超出了对一个“路人甲It顾问”的正常范围。
威斯克合上终端,转向杨兴。“杨顾问,既然系统没有问题,你的专长暂时不需要用在这方面了,现在更需要你跟着大部队行动。下一阶段,克里斯和巴瑞继续搜索东翼二楼剩余区域,吉尔留守大厅照顾瑞贝卡,杨顾问——”
“跟我去一楼餐厅后方的备用军械库。”巴瑞突然出声,声音洪亮得像是故意要让所有人都听到,“他的弹药还空着大半,我在那里看到过几盒9mm手枪弹。克里斯说他不敢给他火器,那是另外一码事——但训练弹药总得让他装满弹匣。”
杨兴知道巴瑞在撒谎——他两个小时前刚给过杨兴备用弹匣,根本不需要再去军械库。但巴瑞撒谎的时机太完美了,完美到杨兴差一点就信了。这个憨厚大叔显然已经注意到威斯克对杨兴的格外照顾——被队长留在资料室单练、被队长询问系统故障、被队长连续两次想调离主力队伍——这不是正常的任务分配,这是隔离。而现在巴瑞在用自己的方式打破这种隔离:用重火力手兼任武器教官这个天经地义的理由,把杨兴从威斯克身边拉走。
“可以。”威斯克沉默了两秒后吐出这两个字。
克里斯拿起自己的突击步枪,检查了一下弹匣,语气还和上次在书房一样硬:“巴瑞,给他装完弹药立刻归队。”然后他的视线转向杨兴,抬手指了指他腰间的弹匣袋,“你最好真能压进弹匣发子弹。下次遭遇战,你要是还在尖叫诱敌,就靠这一匣子子弹给我撑到吉尔能补枪的位置。”
杨兴点头。他看向吉尔,她已经扶着瑞贝卡坐下,正低头检查那把改装过的手枪。她没有和杨兴多说一个字,但在威斯克转身走远之后,杨兴发现自己的手腕上多了一道很浅的指甲印。吉尔刚才经过他时抓了一下他的手腕,什么话都没说,但这道指甲印比任何话都直白——活着回来。
弹幕又飘起来了:
【巴瑞好爸爸力全开!!!!】
【“他的弹药还空着大半”,笑死,巴瑞你明明半小时前才给他塞过一盒子弹】
【威斯克的表情管理是真的强,但我赌他墨镜后面的眼神已经裂了】
【现在威斯克只能暂时松手,但他肯定不会放弃对杨兴的单独接触】
【接下来巴瑞和杨兴独处——巴瑞是下一个被胁迫触发剧情的关键角色!】
杨兴跟在巴瑞身后走出大厅。巴瑞的背很宽,在狭窄的走廊里几乎遮住了前方所有视线。他走得不快,麦林左轮在腰间轻轻晃动。走出威斯克的听觉范围之后,他放慢脚步,和杨兴并肩,声音压得很低。“你再撑一会儿,老哥帮你把人隔开。你是好孩子——现在这楼里好孩子不多了。