恢复舱的蓝色指示灯一盏接一盏熄灭。
顾临川蹲在机房门口,双手离控制柜还有十几厘米。他不敢直接拔电,也不敢关机。索引正在被覆盖,一旦断电,缓存里还没落盘的数据也会一起丢掉。
“网断了。”他对手机说,“后备电池还在供电。可它不用外网也在自己删。”
唐砺的车刚进联赛馆地库:“别拆柜子,等电子物证员。先把你看见的屏幕录下来。”
“再等就只能录一段葬礼了。”
顾临川嘴上不停,手却没越过那条线。他先用手机连续拍下控制柜面板、接口封条和柜门铅封,再用一只只读采集器接到外部维护口。采集器不向设备写入指令,只把它向外说的每一个数据包复制下来。
控制柜发出一声短鸣。剩余索引:百分之五十二。
沈砚和唐砺冲进机房时,电子物证员也从另一部电梯到了。唐砺先把现场人员姓名和进入时间报给执法记录仪,由物证员检查顾临川的接线。
“没写入。”物证员说,“可以保留。”
顾临川吐出一口气:“我就说我修器械比打比赛靠谱。”
“先别给自己颁奖。”唐砺说,“数据还在掉。”
顾临川指向机架最下方的一条窄缝。主控的存储模块在柜内,要拆铅封才能取出。但同型恢复舱为了断网检修,还有一个独立本地控制器。它会保留最近几分钟的步进电机位置,防止检修时舱体夹伤人。
“主机删的是日志。”顾临川说,“位置控制器不归它管。但我要拆一块防护板。”
唐砺看向物证员。对方先检查固定螺丝和封签,确认它们不在先前的封存范围,重新拍照、编号,才让顾临川动手。
顾临川看了一眼螺丝:“两颗后换过。”
“依据?”
“原厂螺丝是十字沉头,左上和右下变成了六角。螺纹一样,长度少了一毫米。一般人装上能用,我们这种天天挖别人烂机器的才会骂。”
物证员将两颗螺丝分别装袋。防护板拆下后,顾临川找到一排覆着绝缘胶的触点。第三接口原本应该通过主板授权才能访问本地控制器,现在却多了一条很细的跨接线。
“有人给它留了个后门。”顾临川说。
“先叫非标准跨接。”唐砺说,“是不是后门,等检验。”
顾临川看了他一眼,把“行”字咽得很不服气。他换上绝缘夹具,由物证员将控制器转入只读模式。
他背后的衣服已经被汗浸透,手指却没有抖。
剩余索引:百分之二十一。
第一次读取失败。控制器里没有视频,只有大量位置坐标和电流值。顾临川把坐标导入同型恢复舱的维修模型,屏幕上出现一个只有骨架线的人形。
人形先完成了一次常规伸展。右肋负荷达到设定值后,周铮的主动力量明显下降,设备却没有收力。它调高髋侧和肩背的阻力,逼迫使用者用一条更短的路径完成动作。
沈砚见过这条路径。
他右前臂的旧损伤被相同结构牵动,在看见骨架线折向时跳了一下,并未触发新的回演。他把右手收到身后,靠近屏幕。
“停在这里。”他说。
顾临川将模型暂停。人形的右肋向内旋,髋部却被另一组阻力拖住。两条力在躯干里形成折转,与周铮右肋后端深层骨裂的方向相符。
“这只能证明设备完成过这种动作。”沈砚说,“还要核受力数值、传感器校准和伤势的容许误差。”
“你能不能先说一句我找对了?”顾临川问。
“你找对了数据。结论还没做完。”
“也行。”顾临川继续操作。
本地控制器记录了三分十二秒。第一分钟是正常恢复,随后设备进入“动作纠错”。周铮两次降低主动输出,系统都将它判定为动作未完成,用电机负荷把他推回设定路径。
第二分四十一秒,应急中止信号出现。
第二分四十三秒,一条外部指令覆盖了中止,并将两组阻力各上调一档。
十一秒后,右肋传感器出现峰值,周铮的主动输出掉到接近于零。设备又运行了七秒才停止。
机房里没有人说话。
沈砚把这一段与尸检里的伤势逐项对照。摆拳留下的右肋前外侧淤血形成于比赛,恢复舱记录的力量则由后外侧进入,在深层折向。时间、位置和方向都能对上。
他又调出腕带数据和操作审计。二十一点十二分,周铮本人从舱内手动提参一档,持续四十六秒,只为把隐藏配置导入临时缓存,随后系统复位;全程只有这一次本人提参。约二十一点十八分,外部指令经第三接口进入,在警报后同时调高两组阻力。两次操作的时间、账户、参数和后果都不同,必须分开封存留档。
“联赛公告只保留了‘选手自行调参’。”沈砚说,“那四十六秒没有造成致命伤。把它和约二十一点十八分进入的外部指令合并,才会把加害变成死者自负风险。”
物证员将两组数据同时封存。周铮主动加参的记录不需要被隐瞒,它恰好是区分两次行为的对照。
许衡没有站在周铮面前打出双折劲。他甚至没有进入恢复室。可这不再是减轻嫌疑的理由。恢复舱的电机和绑带代替了出拳者,把周铮的身体逼进一条致命劲路。
主控索引在这时掉到了零。
屏幕暗下去,所有常规日志变成空白。顾临川保下的只读采集和本地控制器镜像已由两名物证员完成校验。它们不是经过修补的录像,只是设备在每一秒做过什么的原始记录。
顾临川在镜像末尾又找到一条模块载入记录。载入物没有厂家签名,代号只有“b-17”。它在事发当夜接管第三接口,完成操作后卸载,却因跨接线的缓存留下了代号。
物证员将载入记录、控制器镜像和非标准跨接分别编号。三者不能互相替代:载入记录证明模块运行过,镜像证明设备实际执行过加参,跨接则证明这台机器被改造过。将三条证据连在一起,才能说明一次性模块是如何绕过正常授权。
顾临川又去看那两颗六角螺丝。“这种规格不是随便哪里都有。联赛馆的器械间会配,外包维修车也会配。如果能在许衡的工具箱里找到同批螺丝,可以比较表面镀层和加工痕。”
“你以前见过b-17吗?”沈砚问。
顾临川摇头:“我见过b开头的工程测试版,没见过这个编号。正式维修包都有数字签名,修完能查到厂家、工程师和软件版本。这个只留了一个代号,像是专门不想让人找回去。”
沈砚在记录上写下“来源未明”,把下一步追查落在模块签名、跨接安装和上传路径上。
“能找到指令是从哪里发的吗?”唐砺问。
“现在只能确定是一次性凭证。”顾临川说,“这东西用完就把自己删了。但设备的跨接线得有人现场装,无法隔空长出来。”
唐砺立刻通知看守许衡的队员,对面却说人不见了。
他没在电话里发火,只连问了四个时间:许衡离开询问室的时间,最后一次被看见的时间,货运通道开门时间,机房报警开始时间。四个时间被记在白板上,只差几十秒。
“他知道报警会把人吸开。”顾临川说。
“还不能确定报警是他设的。”唐砺将四行时间发给调度中心,“但他利用了这个窗口。先锁定人,不要在公共频道广播周铮家属信息。”
他又叫停了联赛馆的所有同型设备。在查明有多少台设备装过非标准跨接前,谁也不能让选手再进舱,这已经不只是一个封闭的证据问题。
询问结束后,许衡尚不符合强制措施条件,只被要求在办公区等待补充核查。遥控自毁开始时,负责看守的队员被机房报警吸引到楼梯口,许衡用一张临时工单刷开了货运通道。
药品仓也少了东西。
同批次药品的留样箱被人打开,其他瓶子都在,只缺最后一支未开封原药。
冷柜门上没有破坏痕迹。许衡的工作卡在权限暂停后本应无法使用,记录里却出现了一次管理员强制开锁。调查员找到仓库管理员时,他的手机里有一张女孩的住院照片,还有许衡发来的一句话:“我只拿她的药。”
管理员以为那是许衡女儿的治疗药,用管理权限开了柜。他并不知道留样箱里的制剂与周铮有关。
“许衡拿原药不是为了销毁全部对照。”沈砚说,“仓里还有五十多支。”
林见夏在电话另一端说:“那支留样的含量和储存状态最适合做精确对照。他可能想证明周铮使用的药与原药一样,剂量没有超标。”
“证明药没有毒死人,”唐砺接道,“再把责任推给设备。”
许衡还想说他只是执行了无害的校准。而能让这种说法有力量的地方,不在机房,在周铮母亲的病房。
顾临川调出地库出口监控。许衡没有开自己的车,而是从医疗废物转运口走了出去。他背着一只黑包,衣服还是询问时的那件浅灰衬衫。
货运口的画面中,许衡上车前回头看了一次。他没有看联赛馆出口,而是看向恢复区的窗户。那里没有灯,只有一个人知道机器正在三分钟内清空记录。这个动作不能作为定罪证据,却让唐砺更快地下了查找决定。
唐砺发出紧急查找指令。机房里的记录已经证明恢复舱产生了致命力量,但要证明许衡有刑事责任,还得找到是他发出了警报后的加参指令,并且主动删除日志。
唐砺将目前的证据拆成三组任务:一组查许衡的账户和一次性凭证,一组核查他的工具和跨接线,还有一组保护周铮家属。他没让人在通讯里使用“凶手”,因为他们刚拿到的是致死机制,还不是完整的人为责任链。
五分钟后,交通筛查给出第一个结果。许衡没有购买出城车票,手机也没向城外移动。他蹲进一辆医院后勤车,二十分钟后下车。
车辆路线上还有两个丢失的监控点。唐砺没等待完整轨迹,先通知医院保卫科安静封闭住院部的消防通道,不拉警报,不疑异病人。如果许衡只是想见周母,过度的抓捕动作反而可能让他伤害人质或毁掉原药。
沈砚把恢复舱镜像的复制件交给物证员,只带上尸检方向图和药物检验结果。他们已经知道设备做了什么,现在要防的是许衡拿一支没有致死剂量的原药,把整件事重新说成一场无人负责的故障。
那里是临岚市第三医院。
周铮的母亲住在住院部九楼。