第305章 咖啡渍里的代码影子

刑侦支队办公室的百叶窗没拉严,下午三点的阳光斜斜切进来,在林悦面前的审讯记录上投下一道窄长的光斑。光斑里浮着细小的尘埃,像极了陈默留在服务器日志里那些被刻意碎片化的代码痕迹——明明每一片都普通到不会引起杀毒软件警觉,拼起来却能撬开市值百亿公司的数据库。林悦指尖按在桌角那杯冷掉的美式咖啡上,杯底的圆形水渍晕开,恰好覆盖了“嫌疑人陈默”四个字。她抬头看向对面的单向玻璃,玻璃后是暂时被拘留在候问室的陈默:三十岁出头,穿洗得发白的格子衬衫,袖口卷到小臂,露出腕骨处一道浅褐色的疤痕——那是早年玩烙铁时留下的烫伤,林悦在上集勘查陈默住处时见过同款工具,焊头还沾着半融化的锡渣,像凝固的眼泪。

林老师,技术队刚传过来的,陈默近三年的银行流水。实习警员小周抱着平板电脑跑进来,声音压得低,有问题,每个月十五号左右都会有一笔匿名转账进来,金额从五万到二十万不等,来源查不到,走的是境外虚拟货币通道。林悦接过平板,指尖滑动屏幕时,目光却没离开单向玻璃里的陈默。男人正低头盯着自己的鞋尖,右手无意识地在膝盖上敲击——那不是随意的动作,是摩尔斯电码的节奏,林悦在上集分析他编写的恶意程序时见过相同的频率:短按代表“.”长按代表“-”此刻他敲的是ERROR,错误。转账时间和他公司发薪日重合。林悦突然开口,手指点在流水记录的某一行,你看,他每个月固定支出里有一笔房租,三千二,在高新区那片老小区——但我们去勘查时,他住的是带独立机房的loft,月租金至少一万五。

小周愣了愣:您是说,他故意做了两笔收支记录?一个用来应付可能的调查,一个才是真实生活?不是应付调查,是应付他自己。林悦把平板放在桌上,起身走到窗边,你见过真正的技术宅吗?他们对秩序的执念远超常人。陈默把生活拆成显性和隐性两部分,就像他写代码时严格区分‘前端交互’和后端逻辑,前者是给别人看的,后者才是核心。

她回头看向白板,上面已经贴满了陈默的个人信息:出生在南方小城,父母是机械厂工人,高考时以全市理科第三的成绩考入计算机系,毕业时拿到过互联网大厂的offer,却最终去了一家名不见经传的传统企业做运维。上次我们在他住处找到的那本《C++ Primer》,扉页上有他大学导师的签名,日期是2015年——但书的内页最新的笔记是2022年的。林悦走到白板前,指尖划过工作经历那一栏,一个能把七年前的教材翻到纸页发黄的人,会甘心在公司里只做修电脑的?小周顺着她的手指看去,陈默的工作履历里确实写着负责公司网络维护及办公设备检修,职责描述平淡到不像一个能写出穿透三层防火墙程序的黑客。

技术队还发现,陈默在公司的内网论坛里,有个隐藏的ID,叫默者。林悦继续说,声音里带着一丝不易察觉的锐利,“从2020年开始,这个ID在技术讨论区发过17篇帖子,全是关于系统漏洞修复的方案,但每篇的点赞数都不超过3。最新一篇是去年10月,讲的是如何优化公司的数据库查询效率,下面只有一条回复,是他的直属领导说别搞这些没用的,先把财务部的打印机修好。她顿了顿,拿起笔在白板上画了一条曲线:这是陈默入职五年的薪资变化,年均涨幅不到5%,去年甚至低于行业平均水平。但我们查他的技术贡献,2021年公司系统升级,他私下重写了核心模块,让服务器响应速度提升了40%,但功劳最终归了他的领导——这份内部表彰文件,上集在他抽屉最底层找到的,上面没有他的名字,只有领导的签名。

单向玻璃里的陈默突然抬起头,目光似乎穿透了玻璃,直直落在林悦身上。林悦没避开,反而微微前倾身体,像是在和一个看不见的对手对峙。他不是一开始就想犯罪的。林悦的声音放轻,却带着不容置疑的笃定,你看他编写的恶意程序,里面有个隐藏的自我销毁模块,触发条件是检测到公益组织数据——这说明他心里还有条线,不想伤害无辜。但这条线,是怎么断的?

她转身拿起桌上的咖啡杯,杯底的水渍已经干了,在陈默两个字上留下一圈浅褐色的印记,像个无法抹去的污点。去到2022年11月。林悦把杯子放回托盘,发出轻微的碰撞声,上集在他住处的日历上,这个月被圈了红圈,旁边写着‘星辰计划’。我要知道这个计划是什么,以及,这个月发生了什么,让他把修复漏洞的手,变成了制造漏洞的手。小周的调查反馈来得比预期快,第二天一早,他抱着一摞文件冲进林悦的办公室时,脸上还带着没消退的惊讶。

林老师,星辰计划是陈默他们公司2022年启动的重点项目,目标是开发一款面向青少年的编程教育平台。小周把文件摊在桌上,指着一份项目立项书,陈默是这个项目的技术支持,但实际上,我们从项目组前成员口中得知,整个平台的核心算法都是陈默写的——包括那个能根据孩子学习进度自动调整课程难度的AI模块。林悦拿起立项书,指尖划过核心成员名单,果然没有陈默的名字,只有项目经理、产品经理,甚至连负责UI设计的人都列在上面。她翻到项目预算页,研发费用一栏里,技术人员补贴只有五万,而市场推广费却高达两百万。2022年11月发生了两件事。小周继续说,声音压低了些,第一件,星辰计划完成内测,公司开了庆功会,项目经理在会上说这个项目能成,全靠团队的市场敏感度,没提陈默一个字。第二件,陈默的母亲查出肺癌,需要手术,费用大概三十万——他当时找公司申请预支奖金,被领导以项目还没盈利为由拒绝了。

小主,

林悦的指尖停在立项书的落款日期上,2022年3月15日,正好是陈默生日那天。她想起上集在陈默住处找到的一个旧纸箱,里面装着他大学时的奖状和奖杯——其中有一个全国大学生信息安全竞赛一等奖的奖杯,底座已经生了锈,上面的名字被磨得有些模糊,但还能看清陈默两个字的轮廓。他大学时是个明星学生。林悦把奖杯的照片调出来,放在文件旁,导师说他当时是系里的救火队员,不管哪个项目遇到技术难题,只要找他,都能解决。毕业时,大厂给的offer年薪是当时行业平均水平的两倍,但他拒绝了,选择回 hometown 的这家公司,理由是想离父母近点。

她点开小周传来的陈默母亲的病历,确诊日期是2022年10月28日,距离星辰计划内测只有一周。病历下方附着一张缴费单,付款人是陈默,金额是两万,备注是住院押金——而就在同一天,他公司的项目经理在朋友圈晒出了新买的宝马车,配文是感谢星辰,梦想成真。你看陈默的银行流水,2022年11月15日,他收到了第一笔匿名转账,五万。林悦指着平板上的记录,而前一天,他母亲的手术费刚好交齐——这笔钱,来源是境外的一个虚拟货币钱包,钱包的注册邮箱,和他大学时用的邮箱只差一个字母,是故意的,还是不小心?小周凑过来看,邮箱地址只差一个0。

像是故意留下的线索,又像是不敢完全隐藏。小周嘀咕道。林悦没说话,起身走到窗边。窗外正在下小雨,细密的雨丝打在玻璃上,模糊了远处的高楼。她想起上集去陈默住处时,看到他书房的墙上贴着一张世界地图,地图上用红笔圈了十几个城市,每个圈旁边都写着一个日期——最早的是2018年,标注着北京,大厂终面,最晚的是2022年10月,标注着上海,肿瘤医院。

他不是没想过离开。林悦的声音透过雨幕传来,带着一丝沙哑,2018年那次大厂终面,他因为母亲突发阑尾炎,没能去成;2020年,他投过一次简历,拿到了复试通知,但当时公司正在做系统升级,领导说你走了项目就黄了’,,他就留下来了;2022年9月,他还在看上海的租房信息,应该是想带母亲去大城市看病——但10月确诊后,这些信息就再也没更新过。

她转身拿起一份文件,是陈默的大学成绩单,几乎全是满分,只有人际关系学这门课是B。下面有教授的评语:技术天赋极高,但过于内向,不善于表达自己的价值。他把价值寄托在技术上,以为只要把事情做好,就会被看见。林悦把成绩单放在星辰计划的立项书旁,两者之间的空白处,仿佛隔着一条无法跨越的鸿沟,但公司看见的,是能带来短期利益的市场敏感度,是能写进汇报里的领导能力,却看不见那个在机房里熬了三个通宵,把漏洞一个个堵上的人。小周突然想起什么,从文件堆里抽出一张照片:对了,我们在陈默的旧电脑里找到一张截图,是2022年11月庆功会的现场——照片里,陈默站在角落,手里拿着一个一次性纸杯,看着台上领奖的项目经理,眼神里……说不上是恨,更像是空的。

林悦接过照片,指尖轻轻拂过陈默的脸。照片里的男人穿着和现在一样的格子衬衫,只是那时的衬衫还没有洗得发白,袖口也没有卷起——他还在努力维持着正常的样子,还在期待着什么。他的第一个客户,应该是主动找到他的。林悦把照片放回桌上,一个能发现他技术价值,又能利用他急需用钱的人。这个人知道他的弱点,知道他对被认可的渴望,也知道他的底线——所以第一次转账,只敢要五万,只敢让他做获取公开数据的小事。她拿起笔,在白板上写下第一个突破口:寻找2022年11月,与陈默有过网络接触,且有境外虚拟货币交易记录的人。