我全家都是从贴吧认识的: 第447节:
“老沈,我又想了一下,感觉这种跨校卖书还真挺可行的,首先就是……”
蒋亚腾刚开了个头,就被打断了。
“等一下!”
是王盘。
他不知何时,搬了张椅子坐到了旁边,此刻站起身来。...
沈亢喉结上下滚动了一下,手指无意识地抠着裤缝边缘——那是他每次被彻底震住时的小动作。马良还保持着半扭着脖子看屏幕的姿势,眼睛一眨不眨地盯着终端里那串绿色字符,像在辨认某种失传古籍上的符咒。何秋竹则微微踮着脚尖,左手还攥着沈亢的衣袖没松开,右手食指悄悄蜷起,在自己掌心画了个小小的、歪歪扭扭的问号。
创业基地212室的灯光是老式日光灯管,嗡嗡低鸣着,照得三人影子投在墙上,晃动、拉长、又缩回地面。沈亢忽然抬手,啪地一声关掉了头顶那盏最亮的灯。光线瞬间暗了三分,只有电脑屏幕幽幽泛着蓝光,映在马良鼻梁上,也映在何秋竹睫毛底下,像两小片颤动的蝶翼。
“所以,”沈亢声音压得很低,却异常清晰,“那个‘快乐的布鲁托’,根本不是什么黑客高手。”
马良没接话,只是缓缓转过头,目光从屏幕移到何秋竹脸上,又落回沈亢眼中,停顿了足足五秒。然后他慢慢摘下眼镜,用衬衫下摆擦了擦镜片,再重新戴上——这个动作他做了十年,每次要下判断前都做。
“不是高手。”他终于开口,语速比刚才慢了一倍,“是内鬼。”
沈亢没说话,只把右手插进裤兜,拇指用力顶住大腿外侧,像是在按某个开关。他听见自己太阳穴跳了一下。
“北冥社区论坛的服务器,托管在校信息中心机房三楼B区。”马良一边说,一边手指在键盘上轻轻敲了两下,调出一个隐藏进程树,“但用户注册信息、发帖日志、IP绑定表……这些核心数据,走的是另一条链路——直连网络中心主数据库的专用光纤,物理隔离,独立供电,连监控摄像头都是单独布线。”他顿了顿,喉结动了动,“而这条链路的入口权限,整个阳科大,不超过七个人。”
何秋竹忽然小声插了一句:“助管学姐说……她上个月刚交接完,新来的管理员还没来得及重置旧账号。”
空气凝住了。
沈亢听见自己后槽牙咬合的声音。不是愤怒,是某种更冷的东西在血管里游走——像一条细小的金属丝,顺着脊椎往上爬,缠住脑干,勒紧太阳神经丛。他忽然想起今天早上去食堂路上,看见信息中心楼门口停着一辆没挂牌照的银色别克,车窗贴着深色膜,副驾座位上搁着一只印着“阳科大网络中心实习证”的蓝色帆布包,包带耷拉下来,晃晃悠悠,像一条将死的蛇。
“哪个助管学姐?”沈亢问。
何秋竹张了张嘴,没立刻答。她低头看了看自己的鞋尖——一双洗得发白的帆布鞋,左脚鞋带系得有点歪,右脚却工整得过分。这是她紧张时的习惯:左脚系活扣,右脚打死结。沈亢注意到了,于是伸手,替她把左脚鞋带重新捋直,指尖蹭过她脚背凸起的踝骨。
“林……林晚学姐。”她终于说出口,声音轻得像羽毛落地,“大三,计算机系,去年开始在信息中心实习,负责新生账号批量激活和老系统日志归档。”
马良猛地抬头:“林晚?就是那个连续三年拿国家奖学金,去年还带队拿了全国大学生信息安全竞赛二等奖的林晚?”
何秋竹点头。
沈亢没再问。他转身走到窗边,一把拉开百叶窗。外面是创业基地后巷,堆着几只鼓鼓囊囊的黑色垃圾袋,一只野猫正蹲在袋口舔爪子。路灯昏黄,光晕在它背上浮出一层毛茸茸的金边。沈亢盯着那只猫看了足足二十秒,直到它忽然竖起耳朵,朝某个方向转头,瞳孔在暗处缩成两条细线。
“她为什么要这么做?”马良忍不住问。
沈亢没回头,声音平得像块铁板:“因为她知道陆听澜是谁。”
马良一愣:“什么?”
“陆听澜。”沈亢重复了一遍,舌尖抵着上颚,把这三个字嚼得又硬又脆,“林晚去年带队参赛时,陆听澜是校方技术评审组组长。决赛答辩那天,林晚的项目出了致命bug,现场崩溃三次。最后是陆听澜临时调用自己的测试服务器,帮她续上了演示流程。”他顿了顿,手指在窗框上划出一道浅浅白痕,“陆听澜没给满分,给了92。但他在评审意见栏里写了一句话——‘代码有缺陷,逻辑有灵气。建议重点培养。’”
马良倒抽一口冷气:“所以……这是记恨?”
“不是记恨。”沈亢终于转过身,脸上没什么表情,可眼底有东西在烧,“是献祭。”
何秋竹抬起头,眼睛睁得圆圆的:“献祭?”
“对。”沈亢走回来,弯腰从地上捡起刚才摔落的手机——屏幕碎了一道蛛网纹,但还能亮。“林晚知道陆听澜在查她。也知道陆听澜查不到她——因为所有操作记录,都会在凌晨三点自动覆盖,覆盖前的备份,存在她自己U盘加密分区里。她故意留了线索,又掐断了所有能追过去的线。”他点开手机相册,翻到一张照片——是今天中午拍的,北冥社区论坛后台管理界面截图,角落里有个极小的水印:LW-20231017-0846。
“你看这个时间戳。”沈亢把手机递给马良,“08:46。她发帖是在早上八点四十六分。而陆听澜收到第一条举报私信,是八点五十一分。中间五分钟,她在干什么?”
马良盯着那串数字,额头沁出细汗:“……在等。”
“等陆听澜上线。”沈亢接下去,“等陆听澜点开那个帖子。等陆听澜看到‘灯罩有点歪’这五个字——然后,立刻意识到,这不是沈亢干的。”
何秋竹忽然抓住沈亢的手腕:“等等……那她怎么知道陆听澜会这么想?”
沈亢笑了。不是那种欠揍的笑,也不是敷衍的笑,是一种近乎悲悯的、带着钝痛的弧度:“因为林晚读过陆听澜的硕士论文。《网络舆论场中认知锚点的生成机制》,全文一万两千字,其中三十七次提到‘细节偏差’——她说,当攻击者刻意使用模糊化、去个性化细节时,恰恰暴露了其认知边界的狭窄;而真正的熟稔,必然携带不可复制的故障性记忆。”
屋子里安静得能听见服务器风扇转动的微响。
马良忽然抓起桌上一包没拆的咖啡糖,撕开,倒进嘴里,咔嚓咔嚓嚼碎,声音刺耳。他咽下去,才哑着嗓子说:“所以……她算准了陆听澜会反向验证‘灯罩’细节,算准了陆听澜会因此排除沈亢,算准了陆听澜会立刻打电话给你……”
“更算准了,”沈亢接口,声音低下去,“我会把这个电话,录下来。”
他举起手机,屏幕还亮着,录音图标正无声闪烁红光。
何秋竹怔住了:“你……从一开始就在录?”
“从她喊我‘长官’第一声起。”沈亢把手机翻转,让她们看清录音时长:18分43秒,“她太想演好这个角色了。演得太真,反而漏了馅——首席技术总监不会在电话里喊老板‘长官’,只会喊‘沈总’或者‘老板’。但林晚不知道,她只查了陆听澜的公开履历,没查陆听澜的微信签名——那上面写着‘别叫我老板,叫我阿澜’。”
马良一拳砸在自己大腿上:“操……她连这个都漏了?”
“不怪她。”沈亢把手机收进口袋,语气忽然平静下来,“她查的资料截止日期是九月三十号。而陆听澜改微信签名,是十月二号。”
何秋竹望着沈亢,嘴唇动了动,没发出声音。
沈亢却读懂了她的唇语——“那现在怎么办?”
他没直接回答,而是走到何秋竹刚才坐的位置,拉开抽屉,取出一个牛皮纸信封。信封没封口,里面露出一角泛黄的打印纸。他抽出那张纸,展开——是张手绘的校园网络拓扑简图,线条稚拙,却标满了密密麻麻的箭头与注释。右下角用铅笔写着一行小字:“致未来的我:如果看到这张图,请相信,你比想象中更懂这座校园的血管。”
“这是我大一那年,跟林晚一起画的。”沈亢说,指尖抚过图上信息中心楼的轮廓,“那时候她教我用Wireshark抓包,我教她用MATLAB画正态分布曲线。她说网络像人体,交换机是心脏,光纤是动脉,而每个端口,都是等待被命名的毛细血管。”
马良忽然明白了什么,声音发紧:“所以……她今天做的所有事,都是在提醒你?”
“提醒我,”沈亢把图纸轻轻放回信封,动作很慢,“她还记得我们曾共享过同一套密码学教材的页边笔记。提醒我,她比任何人都清楚,要怎么让一场风暴,既摧毁目标,又不沾湿自己的鞋尖。”
窗外,那只野猫已经不见了。路灯的光晕里,飘着几粒微小的尘埃,悬浮,旋转,缓慢下沉。
沈亢走到门边,拧开门把,又停住。走廊感应灯亮起,惨白灯光泼在他肩头。
“马良,”他说,“把林晚过去三个月所有进出信息中心的门禁记录,调出来。”
“还有,”他顿了顿,侧过脸,目光扫过何秋竹,“通知傅蓉,让她带人,去林晚宿舍楼下守着。不是监视,是陪她吃晚饭。就说……陆听澜请客。”
何秋竹眼睛一下子亮了:“陆听澜?”
“嗯。”沈亢点头,嘴角终于浮起一丝真实的、带温度的笑意,“告诉林晚,她赢了第一局。但第二局,陆听澜要请她吃饭,当面聊聊——关于‘灯罩扶不正’,到底该用多大的扭矩扳手。”
门关上,脚步声远去。
马良长长呼出一口气,瘫坐在椅子上,抓起桌上半杯凉透的咖啡灌下去,苦得皱眉。何秋竹却站在原地没动,盯着那扇关紧的门,忽然抬起手,用指尖小心翼翼描摹空气里沈亢刚刚站过的位置。
她描得很轻,很慢,仿佛怕惊扰什么。
描完,她低头看着自己空空的手心,小声说:“原来……灯罩扶不正,真的需要扳手啊。”
创业基地212室的灯光依旧嗡嗡作响。
服务器风扇声,咖啡杯放回桌面的轻响,还有何秋竹指尖划过空气时,那一声几乎不存在的、细微的叹息。
——全部落进隔壁211室敞开的门缝里。
那里,陆听澜正靠在门框上,手机屏幕还亮着通话结束的界面。她没挂电话,也没走进来,就那样静静站着,听着212里每一丝动静,像在听一段加密乐谱。
直到何秋竹那句“扳手”落下,她才终于抬手,把额前一缕碎发别到耳后。
指尖冰凉。
她转身,轻轻带上211的门。
咔哒。
一声轻响,像一枚棋子,落定。