凌晨一点半,沈叙的卧室。
空气里弥漫着咖啡因和焦虑混合的气味。三台电脑屏幕的光在黑暗中显得格外刺眼,数据流像瀑布一样滚落,映在沈叙、林茜和陈烁三人凝重的脸上。
林茜已经对着屏幕连续工作了近六个小时。她的黑框眼镜滑到了鼻尖,头发被抓得乱糟糟的,嘴唇因为长时间紧张而抿成一条苍白的线。手指在键盘上飞舞的速度已经慢了下来,不是因为疲惫,而是因为挫败。
“不行。”她终于开口,声音沙哑,“第三层动态密钥的生成算法太复杂了。它用的是混沌数学模型,每次验证的密钥都不同,而且……有反制机制。”
屏幕中央显示着一个进度条,卡在42.7%的位置已经快一个小时了。旁边是密密麻麻的日志信息,红色的错误提示不断刷新:
【密钥验证失败 - 偏差值0.083】
【检测到异常访问模式- 启动反制协议】
【连接强制中断- 冷却时间300秒】
陈烁从地板上站起来,活动了一下僵硬的肩膀:“什么混沌模型?不能暴力破解吗?”
“不能。”林茜摇头,摘下眼镜揉了揉眉心,“这种密钥的有效期只有十五秒,十五秒后自动失效。而且如果我们连续尝试失败超过三次,服务器就会永久锁定这个访问点。”
沈叙一直没说话。他盯着屏幕上那些滚动的错误信息,大脑在飞速运转。哥哥留下的后门程序能让他们进入诺亚公司的外围系统,但真正关键的数据——意识迁移的具体时间表、实验室的核心日志、B计划的具体内容——都藏在需要动态密钥验证的内部数据库里。
他们已经拿到了足够证明项目存在的证据,但还不够。他们需要知道迁移会在什么时候发生,会在哪个具体实验室进行,会用到哪些具体设备,会有哪些人员参与。
而这些,都在那道该死的动态密钥后面。
“冷却时间还有多久?”沈叙问。
林茜看了眼计时器:“187秒。”
三分钟。
三分钟后,他们可以再试一次。但按照之前的失败模式,大概率还是会在42%左右卡住,然后再次触发反制,再次冷却。
“算法模型有规律吗?”沈叙继续问,“哪怕是一点点?”
“有,但太复杂了。”林茜调出一个窗口,上面是密密麻麻的数学公式和代码片段,“你看,这个密钥生成器基于洛伦茨吸引子模型,但加入了随机噪声和时变参数。理论上,除非我们能实时获取服务器端的完整状态变量,否则……”
她没说完,但意思很明白:不可能。
房间里陷入沉默。
窗外的风声更大了,刮过窗户时发出呜呜的声响,像某种不祥的预兆。陈烁烦躁地抓了抓头发,走到窗边看了一眼:“雪又下起来了。”
沈叙没接话。他的目光从屏幕上移开,看向卧室门的方向。
江寻在隔壁房间睡觉。
自从“清除程序”的威胁确认后,沈叙几乎寸步不离地守着江寻。白天带着他,晚上让他睡在隔壁——那是陈烁的房间,陈烁暂时搬去了体育生宿舍。两个房间之间只隔着一堵墙,沈叙还在墙上装了一个简易的震动感应器,如果隔壁有异常动静,他的手机立刻会收到警报。
但现在,沈叙脑子里冒出一个危险的想法。
一个可能解决问题,但也可能让江寻涉险的想法。
“林茜,”他缓缓开口,“把密钥生成过程的实时数据流导出来。不要解密,只要原始数据。”
林茜愣了一下:“导出来?那有什么用?数据量太大了,我们根本……”
“不分析。”沈叙打断她,“转换成可视化频谱图。三维的,动态的。”
陈烁转过头,困惑地看着他:“沈叙,你要干嘛?我们现在没时间搞什么数据可视化……”
“江寻。”沈叙只说了两个字。
房间里安静了一瞬。
林茜的眼睛慢慢睁大:“你……你是说,让江寻看?”
“他对数字和图案有超常的直觉。”沈叙的声音很平静,“那些移植的意识碎片里,有数学家的天赋,有神秘学爱好者的符号敏感。我们破解不了的算法,也许他能‘感觉’到规律。”
“可是……”陈烁皱眉,“江寻连电脑都不太会用,他能看懂频谱图?”
“不需要看懂。”沈叙站起来,“他只需要‘感觉’。就像他能从星空中看出隐藏的符号,就像他能从数学题里一眼看到答案——他的大脑处理信息的方式和我们不一样。”
林茜沉默了。她的手指在键盘上悬停了几秒,然后开始快速操作:“好吧。我试试把数据流转换成实时动态频谱。但沈叙,这有风险。如果江寻看到这些,如果这些信息触发了什么……”
“我知道。”沈叙说,“所以我需要先和他谈谈。”
他走到墙边,敲了敲墙壁——那是他和江寻约定的暗号,三下轻,两下重,代表“我需要你,但不用急”。
几秒后,隔壁传来窸窣的声响。又过了一会儿,卧室门被轻轻推开。
江寻穿着厚厚的睡衣,头发睡得乱糟糟的,眼睛还带着惺忪的睡意。他看到房间里亮着的屏幕和三个熬夜的人,愣了一下,然后小声问:“沈叙?怎么了?”
“抱歉吵醒你了。”沈叙走过去,很自然地接过江寻的手——手很凉,沈叙握在手心里暖着,“我们需要你帮个忙。”
“帮忙?”江寻的眼睛亮了一下,睡意消退了些,“我能帮什么?”
沈叙带他走到电脑前,指着林茜正在调试的屏幕:“看这个。”
屏幕上,原本枯燥的数据流正在被转换成动态的三维图像。无数光点像星辰一样在虚拟空间中漂浮、旋转、闪烁,彼此之间用细长的光线连接,形成一个不断变化、不断重组的复杂网络。颜色也在变化,从深蓝到浅蓝,从暗红到亮黄,像某种活着的、呼吸的生命体。
江寻睁大了眼睛。
他没有说话,只是盯着屏幕,眼神专注得可怕。瞳孔里倒映着那些流动的光点,嘴唇微微张开,呼吸变得很轻,很慢,像怕惊扰了什么。
林茜和陈烁都屏住了呼吸。
“江寻,”沈叙的声音很轻,像在引导,“看看这个图形。不要想它是什么,不要分析,只是看。有没有哪里让你觉得特别?有没有哪些点,哪些线,哪些颜色变化……让你觉得不一样?”
江寻没有立刻回答。
他向前倾身,几乎要贴到屏幕上。手指抬起来,在虚空中轻轻点着,跟着那些光点的移动轨迹。他的眉头微微蹙起,像在努力理解什么难以言喻的东西。
时间一分一秒过去。
冷却计时器还剩最后三十秒。
“它们……”江寻终于开口,声音很轻,像梦呓,“在跳舞。”
“跳舞?”陈烁忍不住问。
“嗯。”江寻点头,手指继续在空中划着,“但不是一起跳。有的……在这里,还有这里,还有这里——”
他的手指虚点在屏幕的几个不同位置。那些位置的光点看起来和其他光点没什么区别,都在随机闪烁,随机移动。
“——它们在跳自己的舞。”江寻继续说,眼神依然专注,“有自己的节奏。但是……藏起来了。像……像心跳,但把声音关掉了,只留下影子。”
林茜猛地转过头,眼睛死死盯着江寻指出的那几个位置。她快速调出原始数据流,开始分析那些节点对应的数据包。
“继续说,江寻。”沈叙的声音依然平静,但心脏在狂跳,“还有吗?”
“还有……颜色。”江寻的手指又移向另一个区域,“这里的蓝色……和其他地方不一样。深一点,但又不是真的深,是……叠了很多层。像说谎的时候,眼睛会眨很多次。”
“频率异常!”林茜突然叫起来,“他指出的那几个节点,数据包的发送频率有微小但规律的波动!周期是……1.337秒和2.419秒交替!这是密钥生成器的状态变量更新节奏!”
她手指飞快地在键盘上敲击,调出算法分析工具:
“还有颜色对应的数据层……天啊,是冗余校验码的叠加编码!他们用多层校验来伪装真实的数据结构!”
陈烁完全听不懂,但他能看到林茜脸上的兴奋和屏幕上的变化——原本卡在42.7%的进度条,突然开始动了!
43.1%... 44.5%... 46.8%...
“江寻,还有吗?”林茜头也不回地问,声音激动得发颤,“任何你觉得‘奇怪’的地方,任何‘不一样’的感觉!”
江寻闭上眼睛,深吸一口气,再睁开时,眼神更加清明:“左上角……那里有一条线,断了又连,连了又断。但每次断的位置……好像都一样。像在同一个地方摔倒。”
林茜立刻放大那个区域。屏幕显示那是一条连接两个数据集群的虚拟光线,在可视化过程中确实在不断闪烁,时断时续。
“是心跳包!”林茜的声音几乎在尖叫,“那是密钥验证服务器的心跳信号!每次中断的位置对应服务器端的负载均衡切换——那就是密钥生成窗口期!”
进度条跳到了52.3%。
然后是61.8%。
70.4%。
江寻还在继续。他的手指在虚空中游走,像在指挥一场无声的交响乐。每指出一个“异常”,林茜就能对应地调整破解算法的一个参数,绕过一层防护,解开一道锁。
“右下角的光点……转圈的时候,会顿一下。”
“中间那片红色……每次变亮之前,会先暗一点点,很短,几乎看不见。”
“那根弯弯曲曲的线……拐弯的角度,好像是固定的几个数字。”