第17章:熟悉的幽灵
第17章:熟悉的幽灵 (第2/2页)路容张开嘴。
她想说话。想说“我没事”。想说“继续排查”。但喉咙像被什么东西堵住了,声带僵硬,发不出任何声音。她只能听见自己粗重的呼吸,在安静的房间里显得格外刺耳。
“若溪?”
她用力吞咽,口腔里干得发苦。手指在键盘上摸索,敲出两个字:“在。”
“你找到什么了吗?”周哲问,“我这边倒是发现问题了。你看这个——”
屏幕切换回数据流监控界面。周哲用鼠标圈出一段代码:“你的过滤规则,第87行,边界条件判断有问题。`if(error_rate>0.01&&data_volume>1000)`,这里用的是逻辑与,但实际应该用逻辑或。因为只要异常率超过1%或者数据量超过阈值,就应该告警。你用与的话,必须两个条件同时满足才会触发。所以之前那些零散的异常数据包没触发告警,直到今晚这个新数据源涌入大量数据,两个条件才同时满足。”
他的声音轻松了一些,甚至带着点笑意:“小bug,我改一下就行。改完重新部署,告警应该就能解除。不过你设计这个规则的时候,是不是太谨慎了?怕误报太多?”
路容盯着屏幕上被圈出的那行代码。
她的代码。
她故意留下的漏洞。
她精心设计的鱼饵。
现在,周哲轻松地找到了问题,轻松地修复了。他以为这只是新手工程师常犯的逻辑错误。他不知道这行代码背后藏着什么。不知道这个漏洞是故意留下的。不知道这个告警是她等待的契机。
更不知道,就在他排查技术问题的这几分钟里,她已经看到了地狱。
“若溪?”周哲又问了一次,“你确定没事吗?你的呼吸声有点重。”
路容闭上眼睛。
三秒。
五秒。
十秒。
她重新睁开眼睛,手指在键盘上敲击,通过聊天窗口发送消息:“没事,刚才在对比日志。你说得对,是我考虑不周。谢谢指正。”
发送。
然后她关掉了麦克风。
她需要安静。
需要绝对的、彻底的安静。
周哲在耳机里说了什么,她听不见。她只看见聊天窗口里弹出他的回复:“客气什么,一起解决问题嘛。我改好了,正在重新部署。大概两分钟后生效。你那边可以继续监控异常率的变化。”
路容没有回复。
她的目光重新回到那两个并排的屏幕上。
左边,星耀。
右边,天启。
相同的日志格式。
相同的标点习惯。
相同的空格用法。
相同的分号前面加空格的诡异细节。
这不是巧合。
这不是“行业通用规范”——她在这行干了七年,看过无数公司的系统日志。有的用方括号,有的用圆括号。有的时间戳精确到秒,有的到毫秒。有的错误码用下划线,有的用点号。有的在冒号后面加空格,有的不加。有的审计ID用UUID,有的用自增数字。
但像这样,每一个细节都吻合——
只有一种可能。
写这些日志记录的服务,是同一个程序员开发的。
或者更准确地说,设计这些日志格式规范的人,是同一个人。
李剑。
路容的嘴唇无声地动了一下,念出这个名字。
三年前,他是天启科技的技术副总裁,负责“灯塔”项目的整体架构。所有核心服务的日志规范,都是他亲自审核定稿的。路容记得很清楚,因为当时她还为此和他争论过——李剑坚持要在分号前面加空格,说这样“更美观”;路容认为这不符合大多数编程语言的惯例,容易造成解析问题。最后李剑用职权压了下来:“按我的规范来。”
她当时只觉得这个人固执。
现在她知道了,那不是固执。
那是习惯。
是烙印。
是无论换到哪家公司、哪个项目、哪个系统,都会不自觉带上的个人印记。
就像指纹。
而现在,这个指纹,出现在了星耀集团的“深蓝计划”里。
路容靠在椅背上,仰起头。
出租屋的天花板很低,白色的涂料有些剥落,露出下面灰色的水泥。角落里有一小片水渍,是楼上漏水留下的痕迹,形状像一张扭曲的脸。她盯着那片水渍,眼睛一眨不眨。
所以,李剑不仅当年构陷了她。
不仅偷走了她的职业生涯。
不仅毁了她的人生。
现在,他还在用同样的手法,在另一家公司,另一个项目里,做类似的事情。
“深蓝计划”到底是什么?
那些加密格式错误的数据包,来自哪里?
那个IP段198.51.100.0/24,背后是什么?
还有——
路容猛地坐直身体。
如果日志格式是李剑的个人习惯,那么“深蓝计划”的整个技术架构,很可能也是他主导设计的。或者至少,核心的数据处理流程是他把关的。那么,这个项目里,会不会藏着和三年前“灯塔”项目一样的秘密?
非法数据交易?
黑市数据源?
洗白渠道?
她的心脏狂跳起来,在胸腔里撞击出疼痛的节奏。手指重新放在键盘上,冰凉僵硬。她切回远程桌面,看到监控面板上的红色警示标志已经消失。异常率降到了0.23%,数据流恢复正常。周哲在聊天窗口里发来消息:“搞定。告警解除。你可以休息了,今天辛苦了。”
路容盯着那条消息。
她的手指在键盘上悬停了几秒,然后敲下:“辛苦了。谢谢。”
发送。
然后她断开远程连接。
屏幕暗下去。
房间里只剩下她电脑本地屏幕的光,照亮着那张三年前的日志截图。那张截图里,有李剑的操作记录。有他导出数据的记录。有系统审计的记录。有所有能证明他当年做了什么、却因为“证据不足”而被忽略的记录。
而现在,她有了新的线索。
相同的指纹。
相同的习惯。
相同的幽灵。
路容关掉图片窗口,打开一个新的文档。她开始打字,手指在键盘上飞快移动,敲击声在安静的房间里回荡,像某种急促的心跳。
标题:日志格式对比分析
时间:2025年3月18日凌晨
对比对象:天启科技“灯塔”项目日志(2022年7月)vs星耀集团“深蓝计划”日志(2025年3月)
相似点:
1.时间戳格式:[年-月-日时:分:秒.毫秒]
2.日志级别与服务名称之间的分隔:一个空格+破折号+一个空格
3.操作描述后的标点:冒号+空格
4.错误码后的标点:分号前加空格
5.审计ID生成规则:AUDIT-年月日-时分秒-序号
6.字段顺序:时间戳、级别、服务、破折号、描述、执行者、目标、审计ID
7.……
她列出了十七条相似点。
每一条,都是细节。
每一条,都是习惯。
每一条,都是同一个人留下的痕迹。
文档写完,她保存,加密,备份到三个不同的地方。
然后她坐在椅子上,一动不动。
窗外的天空开始泛白。深港市的黎明来得很快,远处的天际线从漆黑变成深蓝,再变成灰白。高架上的车流声逐渐密集起来,城市正在苏醒。新的一天要开始了。
路容看着窗外渐亮的天光。
她的脸上没有任何表情。
没有愤怒。
没有悲伤。
没有恐惧。
只有一种冰冷的、绝对的确定。
李剑。
果然是他。
耳机里传来“叮”的一声——是周哲又发来了消息。路容没有去看。她的世界在那一刻缩小到只剩下一个事实:那个毁了她一切的人,就在那里。就在星耀集团。就在她此刻潜伏的这栋大楼里。用着同样的手法。做着同样的事。
而她,已经找到了第一个确凿的证据。
不是猜测。
不是推理。
是刻在代码里的、无法伪造的指纹。
路容慢慢站起身。
腿有些发麻,血液流通不畅带来的刺痛让她微微皱眉。她走到窗边,拉开窗帘。清晨的光线涌进来,照亮房间里漂浮的灰尘。楼下街道上,早班的公交车驶过,轮胎压过路面发出湿漉漉的声响。空气里有早餐摊飘来的油烟味,混合着城市清晨特有的清冷气息。
她看着这一切。
看着这个她生活了三年的城市。
看着这个她必须复仇的世界。
然后她转过身,走回电脑前。
屏幕还亮着。
文档还打开着。
那些相似点还列在那里。
路容坐下,关掉文档。
她打开邮箱,开始写一封邮件。收件人:周哲。主题:关于今早告警事件的复盘与改进方案。正文:感谢协助排查,我已记录问题原因,后续会优化规则设计,避免类似情况发生……
她的手指在键盘上移动,敲出专业、冷静、克制的文字。
就像什么都没发生过一样。
就像她只是一个普通的新人工程师,刚刚经历了一次小小的技术故障,正在做善后总结。
就像她的内心没有刚刚经历一场海啸。
就像那个熟悉的幽灵,没有在深夜里,对她露出狰狞的微笑。
邮件写完,发送。
路容关掉电脑。
屏幕彻底暗下去。
房间里陷入昏暗,只有窗外透进来的晨光,在地板上投下一片模糊的亮斑。她坐在椅子上,看着那片光。光里有灰尘在缓慢旋转,像某种无声的舞蹈。
她的手机震动了一下。
路容拿起来看。
周哲回复了她的邮件:“收到。不用太自责,技术问题难免。你今天上午可以晚点来,好好休息。”
她盯着那条消息。
看了很久。
然后她放下手机,双手捂住脸。
肩膀开始颤抖。
不是哭泣——她没有流泪。只是身体在不受控制地发抖,像寒冷,像恐惧,像某种积压了太久的情绪终于找到了裂缝,正在从内部撕裂她。
三年来。
一千多个日夜。
每一次从噩梦中惊醒。
每一次看到行业新闻里李剑的名字。
每一次被人用异样的眼光打量。
每一次在招聘网站上投出简历然后石沉大海。
所有那些时刻积累的重量,在这一刻,全部压了下来。
但只持续了不到一分钟。
路容放下手。
她的脸上依然没有表情。只是眼睛比刚才更亮,像某种淬过火的金属,在昏暗的光线里泛着冷硬的光泽。她站起身,走进狭小的卫生间,打开水龙头。冷水泼在脸上,刺骨的冰凉让她彻底清醒。
抬头,看向镜子。
镜子里的人,黑眼圈很重,脸色苍白,嘴唇干裂。但眼神是坚定的。是那种知道自己要做什么、并且一定会做到的坚定。
路容用毛巾擦干脸。
然后她走出卫生间,开始换衣服。
白衬衫。
黑色西装裤。
低跟鞋。
她把长发扎成利落的马尾,戴上那副伪装用的黑框眼镜。镜片后的眼睛,已经看不出任何情绪的波动。
她拿起包,检查里面的东西:手机、钥匙、工牌、笔记本、笔。
还有那个小小的、伪装成口红管的变声器。
一切就绪。
路容走到门口,手放在门把手上。
她停顿了一秒。
然后拉开门,走出去。
走廊里很暗,声控灯没有亮。她踩着高跟鞋,脚步声在空旷的楼道里回响,一声,一声,清晰而稳定。
下楼。
走出单元门。
清晨的空气扑面而来,带着凉意。
路容抬起头,看向远处那栋高耸的写字楼——星耀集团的总部。玻璃幕墙在晨光中反射着金色的光,像一座冰冷的、华丽的宫殿。
而她知道,在那座宫殿里,住着一个幽灵。
一个熟悉的幽灵。
现在,她要去找他了。