2025年12月16日,周二。上午9:00。
安全屋的早晨弥漫着泡面和焦虑的味道。林骁坐在餐桌前,面前摊着数据结构笔记,脑子里却在复盘昨晚天台救人的每一个细节。
“第三道测试会是什么?”他问苏砚。
苏砚的声音比昨天更轻了一些,像是信号不良的收音机:“生存测试……字面意思。‘老师’会派人追杀你,持续七十二小时。”
“他会蠢到在警察眼皮底下动手?”
“不会。”苏砚分析,“他会创造一个‘合理’的意外,或者……利用你不得不离开保护圈的时刻。”
话音刚落,陈锐推门进来,手里拿着三份文件:“好消息和坏消息。”
“先说坏的。”林骁放下笔。
“周哲的尸检报告出来了——氰化物胶囊的封装技术很专业,不是普通黑市能搞到的。这意味着‘老师’确实存在,而且能量不小。”陈锐把报告扔在桌上,“好消息是,我们通过胶囊的微量成分溯源,锁定了一家境外化工企业的对华出口记录。虽然还没查到具体买家,但至少有了方向。”
林骁翻看报告。那些化学名词他看不懂,但结论栏的红字很刺眼:“他杀可能性高,建议深入调查同监室人员。”
“看守所里有内鬼?”张浩从沙发上抬起头。
“可能。”陈锐点了根烟,“但更可能的是,‘老师’的人早就潜伏在系统里。周哲被捕后,他们就在准备灭口。”
赵大壮抱着泡面桶,声音含糊:“那我们……是不是很危险?”
“你们三个现在是重点保护对象。”陈锐弹了弹烟灰,“尤其是林骁,你通过了‘老师’的技术测试,又完成了道德测试——在他眼里,你已经是半个继承人了。”
林骁苦笑:“这继承人谁爱当谁当。”
“由不得你。”陈锐看了眼手表,“今天上午十点,你们学校数据结构期中考试,王振华特意打电话来问你能不能参加。我说可以,但必须有警方陪同。”
林骁一愣:“我还要考试?”
“不然呢?你真想被开除?”陈锐把烟掐灭,“‘老师’再神通广大,也不敢在几百人的考场里动手。而且,我会安排两个人混进考场。张浩、赵大壮,你们俩也去,就当是分散风险。”
上午九点半,林骁在两名便衣的“护送”下走进教学楼。走廊里挤满了赶考的学生,有人认出他,窃窃私语:
“那不是林骁吗?听说他疯了……”
“食堂晕倒那个?我看他最近是有点怪。”
“他后面那两个是谁?保镖?”
林骁低着头快步走进考场。座位是按学号排的,他在倒数第三排靠窗。张浩和赵大壮坐在他斜后方,两名便衣则伪装成重修生坐在最后一排。
试卷发下来。林骁扫了一眼:选择题、填空题、简答题……最后一题是编程题,要求实现红黑树的删除操作。
他拿起笔开始作答。前几题很顺利——这半个月在苏砚的“填鸭式”教学下,他的算法水平突飞猛进。但到编程题时,卡住了。
删除操作的边界情况太多,他昨晚复习时就没完全搞懂。时间一分一秒过去,周围已经有人交卷了。
“苏警官。”他在心里小声求救,“需要帮助……”
“协议第一条。”苏砚的声音微弱但清晰,“除非生命危险。”
“这比生命危险还严重!”林骁哀嚎,“挂科要补考,补考费八十!我没钱!”
苏砚沉默了两秒:“……仅此一次。下不为例。”
下一秒,林骁感觉自己的手自己动了。笔尖在纸上飞速移动,代码一行行出现,逻辑清晰,注释详细:
```python
def rb_delete(node):
#情况1:被删除节点是叶子节点
if node.left is None and node.right is None:
if node.color == RED:
#直接删除
pass
else:
#黑节点需要调整
fix_double_black(node)
#情况2:有一个子节点
elif node.left is None or node.right is None:
child = node.left if node.left else node.right
replace_node(node, child)
if node.color == BLACK:
if child.color == RED:
child.color = BLACK
else:
fix_double_black(child)
#情况3:有两个子节点
else:
successor = find_min(node.right)#找后继节点
node.data = successor.data
rb_delete(successon)#递归删除后继节点
```
“这里,当删除节点有两个子节点时,要找后继节点替换。”苏砚一边写一边在他脑子里讲解,“注意颜色调整,黑高不能变。这是红黑树的核心……”
“同学!”监考老师的声音突然响起。
林骁猛地抬头。监考老师是个年轻研究生,正盯着他桌角——那里放着手机。考试规定手机必须关机放包里,但林骁刚才急着进考场,随手把手机放在了桌角。
“手机交上来。”老师伸出手。
“老师,我关机了,只是忘记放包里……”林骁解释。
“规定就是规定。”老师面无表情,“考试结束来办公室领。现在,请你交卷。”
林骁心里一沉。如果现在交卷,编程题还没写完,肯定不及格。但如果坚持不交手机,就是违纪。
“老师,”他深吸一口气,“我能证明我没有作弊。”
“怎么证明?”
“请给我一台电脑。”林骁站起来,声音平稳——这次是他自己在说话,“我现场写程序解析考场Wi-Fi数据包,可以证明我的手机在考试期间没有任何数据传输记录。”
教室里一片哗然。所有人都转过头看他。
监考老师愣住了:“你……你说什么?”
“或者更简单一点。”林骁看了眼墙角的监控摄像头,“调取监控,可以看到我全程没有碰过手机。如果您担心我通过其他方式作弊,我也可以现场解答任何技术问题——包括您正在研究的‘基于区块链的考试防作弊系统’的漏洞。”
老师的脸瞬间白了:“你怎么知道我在研究……”
“您办公桌上有相关论文,封面上有您的名字和课题名称。”林骁快速说,“而且您系统里用的加密算法是RSA-2048,但密钥生成方式有问题——用的是系统时间戳做种子,攻击者可以通过时间推测出密钥范围。”
死寂。
所有考生都张大了嘴。最后一排的两个便衣对视一眼,手默默摸向腰后。
监考老师嘴唇哆嗦了几下,最终摆摆手:“你……你继续做题吧。手机先放我这里,考完来拿。”
林骁坐下,后背全是冷汗。
“你怎么知道他的研究课题?”他在心里问苏砚。
“上周去他办公室交假条时看到的。”苏砚语气平淡,“至于加密漏洞……任何用时间戳当随机种子的系统都有这个风险。这是常识。”
“这是常识?!”林骁无语,“你管这叫常识?”
“对警察来说是常识。”苏砚顿了顿,“好了,专心写代码。还剩五分钟。”
林骁飞快地写完最后几行。交卷时,监考老师看他的眼神复杂得像在看外星人。
走出考场,张浩和赵大壮围上来。
“骁哥!你刚才太牛逼了!”赵大壮眼睛发光,“那个老师脸都绿了!”
“你知道他研究什么就算了,连漏洞都知道?!”张浩难以置信,“你是不是……是不是苏警官……”
林骁没回答。他看向走廊尽头,那两个便衣正朝他走来。
“林骁,”其中一个低声说,“陈队让你马上去安全屋。有情况。”
“什么情况?”
“第三道测试开始了。”便衣脸色凝重,“十分钟前,市局接到匿名举报,说你在考场使用高科技作弊设备。举报人提供了……很详细的‘证据’。”
林骁心里一沉。
“什么证据?”
“一段监控录像,显示你昨天深夜潜入学校机房,在服务器上安装了某种信号发射器。”便衣盯着他,“陈队需要你回去解释。”
“那是‘老师’的陷害!”林骁脱口而出。
“我们知道。”另一个便衣叹气,“但程序上,你必须接受调查。而且……举报人把录像发给了教育局和媒体。现在事情闹大了。”
林骁跟着他们往外走。教学楼外已经聚集了一些记者,长枪短炮对着门口。
“林骁同学!请问你考试作弊是真的吗?”
“有传言说你精神有问题,是真的吗?”
“你和最近的女学生跳楼案有什么关系?”
闪光灯刺得他睁不开眼。便衣护着他挤过人群,上了路边一辆黑色轿车。
车上,陈锐坐在驾驶座,脸色铁青。
“录像我看过了。”他发动车子,“技术分析显示是AI合成的,但合成水平很高,普通鉴定机构根本看不出来。‘老师’在逼我们公开保护你的事实——一旦警方承认在保护你,就等于告诉所有人,你和重大案件有关。”
“那怎么办?”
“将计就计。”陈锐猛打方向盘,“我们开个新闻发布会,公布部分案情——当然,是修改过的版本。就说你是警方线人,协助破获了校园数据泄露案,因此被犯罪团伙报复。”
林骁愣住:“这样……我的身份不就暴露了?”
“总比被贴上‘作弊疯子’的标签好。”陈锐看了眼后视镜,“而且,‘老师’想让你成为焦点,我们就让他如愿。聚光灯下,他反而不好动手。”
车子驶向市局。林骁靠在椅背上,闭上眼睛。
“苏警官。”他在心里说。
“嗯?”
“如果我公开了身份,以后……是不是就回不到普通学生的生活了?”
长久的沉默。
然后苏砚轻声说:“林骁,从你救周婷那一刻起,你就已经回不去了。有些人注定要走夜路,不是因为喜欢黑暗,而是因为他们手里有灯。”
林骁睁开眼睛,看着窗外飞速倒退的城市。
“你说得对。”他说,“那就让灯亮一点。”
车子开进市局大院。陈锐停下车,转头看他:“准备好了吗?一旦下车,你就正式进入这场游戏了。”
林骁拉开车门,阳光刺眼。
“早就准备好了。”他说,“毕竟我身体里,还住着一位专业玩家。”
苏砚在他脑子里轻轻笑了。
那笑声很轻,但林骁觉得,那是他听过最有力的声音。