圣安妮之家在夜色里是一团灰扑扑的暗影。疗养院的招牌灯三天前灭掉之后没再亮过,只剩下入口处一盏应急灯,把“Annie”几个字母照得一半明一半暗。科尔多瓦把车停在两条街外的加油站,步行过来的,运动鞋底踩在人行道的裂缝上尽量不发出声音。她没穿防弹背心,不是因为不想穿,是因为她走得太急,把背心落在了办公室椅背上。
东区这一带入夜之后空得像一座被撤离的小镇。大部分店铺拉下了铁闸门,少数亮着灯的民居窗户也拉着厚帘子。一只野猫从垃圾桶后面蹿过,惊得路边排水管里的一团积水晃了几下。科尔多瓦站在疗养院侧门外,隔着生锈的铁栅栏望向地下锅炉房的通风口——那是一个方形的铸铁格栅,半埋在冬青丛里,里面透出一丝极其微弱的黄光。
她没有走正门。侧门的锁是旧的弹子锁,她用一张信用卡顺着锁舌划了两下就开了。这栋楼的安全系统在停电之后一直没恢复,门口的监控摄像头镜头朝下耷拉着,像一只被打断脖子的鸟。
她沿着台阶往下走。地下室的空气比地上凉,混杂着柴油和铁锈的味道。走廊很短,尽头是一扇没有窗户的金属门,上面贴着“锅炉房——闲人免入”的褪色牌子。门虚掩着,门缝里透出来的黄光在墙上投出一道窄窄的亮线。
科尔多瓦推开门,走了进去。
锅炉房比她想象的大。三台老式燃油锅炉横排在南墙下面,表面裹着一层灰色的保温棉,有些地方破裂了,露出里面发黑的金属。管线在天花板下面爬行,交错得像一张网。房间中央有一张掉漆的木桌,桌上放着一盏充电式的露营灯,灯旁边坐着一个穿深灰色夹克的人,背对着她,正在翻一个文件夹。
那个人听到门声,没有回头,只是举起右手轻轻摆了摆,像是在示意她别关门。然后她侧过身来——是个女人,大约五十岁上下,头发扎成一把低马尾,脸型瘦长,颧骨很高,眼下有很深的皱纹。她的夹克袖口沾着机油,手指甲剪得很短,其中一根手指上缠着创可贴。
“科尔多瓦探员。”她的声音不高,带着阿什兰本地口音里那种含混的尾音,“你比我想的来得快。我刚泡的茶,在那边台子上,不过凉了。”
科尔多瓦没有动。她站在门边,让门保持半开,视线扫过房间的每一个角落——墙角堆着几卷备用管道,天花板的检修口是闭合的,除了女人和桌子之外没有其他人。“你是谁?”她问。
女人把文件夹合上,抬眼看着科尔多瓦。“我叫琳达·帕里斯。以前在这家疗养院做行政主管,做了十四年。去年被辞退了。”
“被辞退?”
“因为我举报了东翼备用发电机没有通过年检,但上面的人把报告改了。”琳达的语气很平,没什么起伏,“死的三个人里,麦克·科瓦奇是我认识的人。他住进这里之前是我邻居。”
科尔多瓦往前走了两步,站在桌子对面。露营灯的光照在琳达脸上,把她额角的一道旧疤衬得格外明显。“那条短信是你发的?还有之前那条数字IP,也是你?”
琳达点点头。“那条IP短信用的是预付费卡,运营商端不留记录。今天的短信用的是另一张卡。我干过行政,知道怎么走账外渠道。”她从夹克内袋里掏出一部老式的翻盖手机,放在桌上,屏幕亮着,显示着一个空白的短信草稿框。
“为什么帮我?”
琳达没有立刻回答。她低下头,把文件夹推过来,翻到中间某页,用手指点着一段打印出来的内部维修记录。“你看这个。去年十一月,东翼发电机组的控制模块曾经因为过载烧过一次,维修工当时写的报告是‘模块老化,建议更换’。但财务部没有批采购,他们让维修工换了一块二手的模块,把日期标签从旧机器上撕下来贴上去。消防检查员来的时候,看到的是模块上的标签是新的,就过了。”
科尔多瓦看着那张纸,纸张边缘被揉皱了,折痕很深,像是被反复打开合上。“这和你今天让我来这里有什么关系?”
琳达抬头直视她。“那次发电机故障,是从外面进来的一个远程指令引发的。我和维修工私下聊过,他说那天的日志里有一条外部登录记录,IP段和监狱管理局的出口网关吻合。我当时觉得荒唐——监狱里的人怎么可能操控一台疗养院的发电机?但那之后没多久,维加那桩水利局案子就开庭了。我听到新闻里提到他的作案手法——远程修改消毒剂参数,我才开始把这两件事联系在一起。”
科尔多瓦眯起眼睛。“所以你一直在私下调查?”
“我辞职之后拿了一份U盘,里面有疗养院过去五年的SCADA联动日志。”琳达从夹克口袋里掏出一个银色U盘,放在桌面上,“市政电力公司的SCADA系统其实和疗养院的备用电控系统有联动通道,因为疗养院属于市政保障设施名单——一旦停电,电站会优先通知这里。但那个联动通道本身是个漏洞。如果你能进入市政电力公司的网关,你就能通过这条通道反向访问疗养院的设备。反之,如果你在疗养院的设备里埋了后门,你也能通过这条通道摸到市政电网的侧门。”
科尔多瓦沉默了几秒。她看着桌面上的U盘,想起自己在管教所地下室里提取的那份流量日志,想起里弗斯和维加利用楼宇控制器做跳板的路径。这是一模一样的逻辑——利用一个被忽视的联动协议,让本应不互通的两个系统通过维护通道彼此穿透。
“你知道里弗斯和维加下一步要干什么?”科尔多瓦问。
琳达的手指在桌上敲了两下。“我不知道他们具体的时间表,但我从疗养院的旧维护端口里截到过一段加密广播,解码之后得到一个地理坐标和一个时段——坐标是阿什兰市议会大厦的地下泵站,时段是后天凌晨三点到五点。那个泵站控制着议会大厦和周边三个街区的消防用水和饮用水加压系统。如果他们在那里动手,不用投毒,只要把压力阀全部开到最大再突然归零,管道就会因为水锤效应爆裂,整栋楼的基础会被冲刷掏空。”
露营灯的光忽然闪了一下。琳达抬头看了一眼天花板,皱着眉头说:“楼里的临时供电不太稳。我今天下午接了一条从消防照明回路拉过来的线路,可能过载了。”
她站起身,走到墙角的配电箱,打开箱门,检查里面的空气开关。科尔多瓦低头看着那份文件夹,翻到了最后一页——那是一张手写的纸条,笔迹很草,写着几个字:“帕金斯每周三来换书。”
科尔多瓦把纸条折起来,放进自己的裤兜里。“你跟踪了帕金斯?”
琳达回过头来,手里捏着一根保险丝。“跟踪谈不上。但我坐在图书馆对面的咖啡店里观察了两个星期。帕金斯每周三下午会推一辆书车去C区图书馆,书车底层有一个暗格,里面装的不是书。我没看清是什么,但他每次进图书馆之前和之后,楼宇控制器的外部登录记录都会多一条。我查过登录名,和维加旧案子里的作案代码签名一致。”
她换上保险丝,合上配电箱的门。灯光重新稳定下来。
科尔多瓦把U盘收进包里,转身准备离开。她在门口停了一下,没有回头。“你今天叫我来,就是为了把这些给我?”
琳达的声音从身后传来,比刚才低了一些:“还有一个原因。我查到了那个联通疗养院和市政电网的联动协议端口,那个端口的管理员账户在过去三个月里被重置过三次密码。每次重置的人,IP地址都来自同一个地方——联邦监狱管理局南方管教所的行政办公区。不是C区图书馆,不是楼宇控制器,是行政楼。是那栋副典狱长办公室所在的楼。”
科尔多瓦转过头。琳达站在那盏露营灯旁边,半边脸被光照亮,另外半边隐在阴影里。她的嘴唇动了动,像是想再说什么,但最终只是摇了摇头:“我不能帮你更多了。我只能告诉你,里弗斯和维加只是手指,关节在行政楼里。”
科尔多瓦点了点头,推开门,走上楼梯。凉风从出口灌进来,吹在她的脸上。她在路边站了一会儿,看了一眼手机——晚上九点五十二分。她想起自己植入管教所网络的追踪脚本,如果今晚十点那个换气扇信号依然出现,她的脚本会捕捉到第二个握手包,并自动记录下握手包中的所有跳板节点。
她坐进停在两个街区外的车里,把琳达给的U盘插入电脑。文件结构很简单,只有一个加密的压缩包,解压密码是琳达写在文件夹边缘的一串数字——02281976。那是麦克·科瓦奇入伍的年份和月份。
解压后的文件是一份完整的日志汇总,包含了十二次外部登录记录、六次密码重置操作、以及一张网络拓扑草图。草图中央用红笔圈出了一个节点,标注着“行政楼——三层——备用网络交换柜”。
科尔多瓦盯着那张图看了很久。她忽然意识到一件事:琳达说她去年就被辞退了,那么这些密码重置操作的记录,她是从哪里拿到的?离职人员不应该再拥有访问SCADA联动日志的权限。
她抬头看向后视镜。车的后方,路灯下空无一人。但她注意到了一个细节——她刚才走出疗养院侧门的时候,那把被她用信用卡划开的侧门锁,现在锁舌的位置变了。有人在她和琳达谈话期间,从里面重新锁上了那扇门。
她立刻给琳达的翻盖手机拨号。响了三声,接通了,但对面传来的不是琳达的声音,而是一段录音循环播放的机器语音——“您拨打的用户已关机”。随后信号中断。
科尔多瓦放下手机,启动引擎,把车掉头,朝疗养院侧门的方向压着油门开了回去。但她的动作在路口停住了——远处疗养院地下室的通风口,那团黄光已经灭了。
一片彻底的黑暗里,她听见自己的心跳在挡风玻璃上撞出闷响。


暂无评论,来抢沙发吧!