凌晨两点零五分,控制室里的灯还亮着,白得像刀背。
林昼把最后一份封存袋压平,指节在透明袋边停了一瞬,目光却已经落到屏幕最上方那行新弹出的字上。
下一步:锁仓行动开始反向校验影子主控
“反向校验?”周工低声重复了一遍,像是怕这四个字惊醒什么东西。
屏幕另一侧,供述链比对图还在缓慢滚动。b侧、回流暗渠、黑屏后二次核验、备用侧补核验、应急转入,这些原本散落在不同材料里的词,已经被系统强行并到同一条线上,像一串被钩住的鱼骨,越拉越直,越直越显得下面藏着更粗的主干。
林昼没有立刻说话。他盯着“影子主控”四个字,脑子里过了一遍最近几天所有异常的共性。
压舱石背面有接头位,黑屏时掉线顺序被人为编排,b侧在不同脚本里反复出现,公开页里的补核验入口与转供链、回流暗渠互相缠绕。所有动作看起来都像分散的临时补救,实际上都在向一个更深的中心收束。那个中心不一定是某个具体的人,但一定有一套能把这些动作统一起来的主控。
只是这一次,系统没有给出“抓到谁”,而是直接给了“反向校验”。
“它不是让我们去找主控的身份。”林昼缓缓开口,“是让我们从现有锁仓结果里,反过来验它是不是还活着。”
周工抬头:“也就是说,锁住的未必是仓库,是镜子?”
“对。”林昼说,“锁仓行动封的是通道,影子主控如果真在里面,就一定会留下错位。我们要做的不是再加一把锁,而是看锁合上的时候,谁的影子没跟上。”
纪检联络员把一叠刚打印出来的核验记录放到桌上,声音比平时更轻:“锁仓名单已经出来了。回流暗渠相关的十二个节点、三条转供支路、一处设备间、两台临时控制盒,全部列入封停。外部平台的补核验入口也已经压了。现在的问题是,要不要把影子主控这个词也一起公开?”
林昼接过那份名单,视线掠过密密麻麻的编号。
“先不公开完整判断。”他说,“只公开动作,不公开结论。我们现在还在校验阶段,结论过早放出去,容易把对方逼成死口。”
周工点头,很快把一张新的关系图拖到主屏中央。图上,锁仓节点已经被标成红色,而所有红点的共同上游,汇进了一组未命名路径。
“我刚把昨晚的掉线顺序和历史调试单重新叠了一遍。”他说,“有一个规律很怪。每次影子主控相关动作出现之前,都会先有一个极短的权限空窗。不是彻底断开,是像有人把真正的权限先抽走几秒,再让表层账号继续运行。”
“空窗多久?”
“从七秒到十九秒不等。”周工把曲线放大,“但是都很短,短到普通日志会以为是网络抖动。”
林昼看着那条曲线,眼神慢慢沉下来。
“不是抖动。”他说,“是换手。”
换手两个字一出,控制室里的空气都像紧了一格。
如果说回流暗渠是路,b侧是门,那权限空窗就是手。真正动过仓库、动过回路、动过补核验入口的,不是那些表面能查到的账号,而是能在几秒钟内把权柄转来转去的人。影子主控,未必是一个人,也可能是一套被反复借用的高权限会话。它藏在系统最像正常的地方,像一只把手缩在袖口里的手,表面看不到动作,实际上一直在发力。
林昼抬眼:“把空窗时间点和锁仓节点对齐。”
周工立刻操作。很快,屏幕上出现了新的重叠层。
每一次锁仓前的准备、每一次b侧请求、每一次断电模拟、每一次回流补核验,前面都先出现了一个小得几乎看不见的权限空窗。空窗并不长,却总能卡在最关键的几秒,把真正的动作塞进去,再把表层记录推出来顶锅。
“这不是单独作案。”周工低声说,“是同一只手在反复校准不同入口。”
“所以才叫影子主控。”林昼说。
纪检联络员看向他:“那现在怎么反向校验?”
林昼没有马上回答。他把手里的封存袋放下,走到窗边,透过玻璃看向大厅。天还没完全亮,低温灯照得地砖发白,入口牌前那一圈人已经开始排队,动作不快,却很稳。公开栏旁边多了几张新贴上的封存照,围观的人不多,但每个人都在看。
看得越久,越能发现一件事:这座医院里真正被守住的,不只是流程,而是“谁说了算”。
“校验它最怕什么。”林昼终于开口,“不是抓,不是封,是让它在自己的动作里露出错位。锁仓一旦完成,影子主控如果还在,就一定会试图把空窗补回去。它会补,因为它不能让仓库真的静下来。只要它补,我们就能看见它用的是哪一只手。”
周工眼神一亮:“你是说,故意留一个最小缺口?”
“不是留缺口。”林昼说,“是留一个可控的反应位。我们把锁仓做实,把所有表层入口都封住,但把影子主控最可能补救的那条线单独标出来。它只要伸手,就等于自己给我们签名。”
周工几乎立刻明白过来:“反向校验不是找它在哪,而是逼它做动作。”
“对。”林昼说,“它不做动作,我们只能知道它存在;它一做动作,我们就能知道它靠什么存在。”