下一章 上一章 目录 设置
10、第 10 章 程序的正义 ...
-
花清月在实验室的沙发上睡了四十分钟,比她自己说的“十分钟”多出了整整半个小时。
她醒的时候,季寒声的外套还盖在她身上,墨香混着铁观音的味道。实验室里没有别人,季寒声坐在操作台前,三块屏幕都亮着,她在写一份报告——花清月从她敲键盘的节奏判断出来的,不是分析数据时的急促,是遣词造句时的停顿。
花清月坐起来,外套从肩上滑下来。她把它叠好,抱在怀里,走到季寒声旁边。
“你怎么不叫我?”
“你在说梦话。”
花清月的脸瞬间红了。“我说什么了?”
季寒声看了她一眼,那个眼神里带着一种花清月看不懂的东西——不是好笑,不是好奇,是一种更安静的、像在看什么珍贵东西的表情。
“你说,‘这个数据包不对’。”
花清月愣了一下,然后笑了“我做梦都在想那个加密协议。”
“嗯。所以你醒了之后,我们可以接着做。”
季寒声接过她手里的外套,随手搭在椅背上,然后重新坐回操作台前。花清月拉了椅子坐过来,两个人并肩盯着屏幕。
下午的工作比上午更深入。季寒声把“夜莺”案到目前为止的全部技术资料向花清月开放,包括那些还没有写入正式报告的原始数据。花清月一边看一边在笔记本上写写画画,她的字不算好看,但思路很清晰——关键词、箭头、问号、圆圈,像一张正在生长的思维导图。
三点刚过,实验室的门被推开了。
林铮端着一杯速溶咖啡走进来,黑色圆领T恤,工装裤,腰间一串钥匙叮当作响。他一进门就看到了花清月,眼睛亮了一下。
“这就是那个小黑客?”
花清月抬头看了他一眼。小黑客,又是这个词。她今天第二次听到了。
“林铮。”季寒声的语气没有任何情绪,但林铮显然听懂了其中的警告,举起双手做了个投降的姿势。
“好好好,技术顾问,技术顾问。”他笑嘻嘻地走过来,在花清月旁边蹲下来,压低声音,“我叫林铮,网安一线的,跟着季姐干了三年。你是不知道,她这几天天天念叨——”
“林铮。”季寒声的声音从操作台那边传过来,依然没有情绪,但林铮立刻闭嘴了。
花清月看了看林铮,又看了看季寒声,嘴角弯了一下。季寒声的耳朵没红,表情没变,但花清月注意到她翻到下一页文档的速度比正常快了半拍。
她在紧张。
花清月在心里记下了这件事。
林铮是来送一份新数据的——网安部门刚刚截获了一批“夜莺”团伙的通信流量,需要尽快分析。他把U盘递给季寒声,又看了花清月一眼,笑着说:“小姑娘,你小心点,季姐这人工作起来不要命的。”
“我不是小姑娘。”花清月说,“我有名字。”
“行行行,花顾问。”林铮笑着出去了。
门关上之后,花清月转向季寒声。“你天天念叨我什么?”
季寒声把U盘插进电脑,打开文件夹,语气平淡得像在说今天天气不错。“念叨你的代码写得比我好。”
花清月盯着她的侧脸,试图从那张清冷的骨相脸上找到任何说假话的痕迹。没有。季寒声说“你的代码写得比我好”的时候,语气和说“今天泡的是铁观音”一模一样。
“你这个人,”花清月说,“夸人都夸得像在念报告。”
“因为我说的是事实。”
花清月没有再说话,把头转回屏幕,但她的耳朵尖又红了。今天红了三次了,她想。在这个人面前,她的耳朵像是别人的。
新数据的分析开始了。季寒声和花清月各负责一个模块,花清月做流量特征提取,季寒声做协议解析。两个人配合得比花清月预想的要默契——她提取出来的特征,季寒声能马上对应到协议层的某个节点;季寒声解析出来的结构,花清月能第一时间找到其中不符合常规的地方。
四十分钟后,花清月发现了一个问题。
“季警官,你看这个。”她把一段流量数据放大,指着其中几个时间戳,“这批数据里有一个高频通信节点,每四十七秒发送一个心跳包。这个频率不是随机的——四十七秒,这个数字我在哪里见过。”
季寒声凑过来看。她的肩膀碰到了花清月的肩膀,布料摩擦的声音很小,但花清月听得一清二楚。
“四十七秒。”季寒声重复了一遍,然后她的手指在键盘上快速敲击,调出了一份旧文档。“你看这个——‘夜莺’案两个月前的初查报告里,有一个被标记为‘可疑但不具备分析条件’的通信特征,也是四十七秒心跳。”
花清月眼睛亮了。“这不是新的通信节点,是旧节点换了IP。他们的通信基础设施没变,只是重新部署了。”
“这意味着——”
“意味着我们不需要重新分析整个通信架构。”花清月接上了她的话,“只需要在旧框架里找到新IP的位置。节省至少两周的工作量。”
季寒声看着她,目光里有什么东西在微微发亮。不是那种夸张的惊喜,是那种“我果然没看错人”的确认。
“做得好。”她说。
花清月被这三个字说得心里痒痒的,但她没让那种感觉浮到脸上。她低下头继续分析数据,手指敲键盘的速度比之前快了一些。
快五点的时候,季寒声站起来,说去接杯水。花清月一个人坐在操作台前,盯着屏幕上那批新数据,脑子里转着一个念头。
季寒声说那个四十七秒心跳的旧文档“不具备分析条件”,被搁置了两个月。如果两个月前就有人分析出这个特征呢?案子可能已经往前推了一大步。
她看了一眼季寒声的茶杯,里面还有半杯凉了的铁观音。然后她的目光落在季寒声的电脑屏幕上——屏幕没有锁,文档还开着。
花清月犹豫了一秒。
然后她点开了季寒声的工作文档。
不是偷看——她是技术顾问,这些资料她有权查看。但她的目光没有落在技术内容上,而是落在了文档边缘的批注和标记上。
季寒声的习惯是:每看完一份资料,会在末尾写一个简短的评估——“可用”“待交叉验证”“优先级低”“特征不明确,建议二次采集”。
花清月一页一页地翻着那些批注,手指在触控板上滑动。她看到了那个四十七秒心跳的标记——“特征不明确,建议二次采集”。
季寒声没有说“不具备分析条件”。
她说的是“特征不明确,建议二次采集”。
这意味着她当时就注意到了这个特征,只是证据链不完整,不能贸然推进。不是没有能力分析,是程序不允许。
花清月关掉文档,靠在椅背上,盯着天花板。
季寒声不是想不到,是不能做。
程序的正义。
花清月在座谈会上听过这个词,但那是理论层面的。现在她看到了它在实践中的样子——不是枷锁,是锚。季寒声把自己绑在规则里,不是因为不够聪明,是因为她太清楚规则之外的风险。
季寒声端着水杯回来了。
“你在想什么?”她坐下的时候问。
“在想你。”花清月说出口之后才发现自己说了什么,赶紧补了一句,“想你的工作方法。”
季寒声看了她一眼,没接话。她把水杯放在桌上,重新打开文档。
“季警官,你两个月前就注意到那个四十七秒心跳了,为什么没有往下追?”
季寒声的手指在键盘上停了一下。
“因为证据链不完整。当时只有这一个节点有异常,其他的数据特征都不匹配。如果贸然追下去,可能会打草惊蛇,也可能把错误的方向带进整个案件的研判里。”
“但你的判断是对的。”
“判断对不代表程序对。”季寒声的语速依然平稳,“在公安系统里,程序正义和结果正义同样重要。一个靠直觉推进的案子,哪怕破了,也经不起法律的检验。”
花清月没有说话。
她明白季寒声在说什么。技术世界里,她觉得对的就可以做,写代码不需要审批,漏洞找到了就马上利用。但在季寒声的世界里,每一行代码、每一条数据、每一个判断,都可能成为法庭上的证据。
“你不觉得这样很慢吗?”花清月说。
“慢。但稳。”
“如果两个月前你就追了,现在可能已经找到人了。”
“也可能追错了人,浪费了两个月,还打草惊蛇让他们跑了。”
花清月咬了咬嘴唇。她知道季寒声说得对,但她心里有一种不舒服的感觉——不是因为被反驳了,是因为她第一次意识到,自己的思维方式在这个系统里可能行不通。
她习惯了做独行侠。看到漏洞就钻,看到机会就上,不需要向任何人解释。但在季寒声面前,在这个系统里,她不能再这样了。
“我不会改。”花清月说,声音比平时低了一些,“我的方式就是这样的。你找我来,不就是因为我能做你们做不到的事吗?”
季寒声看着她,沉默了几秒。
“我找你来,是因为你能看到我看不到的。不是让你放弃你的方式,是让你学会在一个更大的系统里使用它。”
“有什么区别?”
“区别是——你现在做的事,影响的不只是你自己。你的一条分析结果,可能决定一个案件的走向,可能影响几十个人的命运。”
花清月没有说话。
季寒声停了一下,然后说了一句更重的话:“如果你不能接受这一点,你现在就可以走。”
实验室里安静了。
空调的风声,服务器的散热风扇嗡嗡地转,走廊里有人经过,脚步声由远及近,又由近及远。
花清月看着季寒声的脸。那张脸上没有愤怒,没有失望,甚至没有任何情绪的痕迹。但花清月看到了她放在键盘上的右手——食指在轻轻敲击空格键,一下,又一下。
季寒声在等她。
不是在逼她,是在等她。
花清月深吸一口气。
“我不走。”
季寒声的手指停了。
“但我有一个条件。”
“说。”
“你给我犯错的机会。”
季寒声看着她,那双狭长的单眼皮眼睛里,有什么东西软了一下。不是融化,是松动——像冬天的冰面下,有水流过。
“我给。”季寒声说。
花清月低下头,手指在触控板上漫无目的地滑动。她看到屏幕上那个四十七秒心跳的数据还在闪,像一个永远不会停下来的心脏。
“那我们现在能追这个吗?”她问。
“证据链已经补了两个月,今天你确认了它的通信架构没变。可以追了。”
花清月转过头,看着季寒声。“你一直在等这个。”
“我一直在等证据链补全。”季寒声说,“你今天帮我找到了最后一块。”
花清月盯着她,忽然笑了。“你利用我。”
“我说过,这是合作。”
花清月摇了摇头,但眼睛里没有生气的意思。她重新打开分析界面,手指放在键盘上,但没敲下去。
“季警官。”
“嗯。”
“以后我有什么想法,先跟你说。不自己乱来。”
季寒声看着她,过了两秒才开口。“好。”
“你不说点什么?比如‘谢谢配合’或者‘我很欣慰’之类的?”
“你希望我说?”
花清月噎了一下。“算了,你还是别说。你说这种话太奇怪了。”
季寒声的嘴角动了一下——很轻,但花清月看到了。她看到了季寒声的嘴角动了一下,然后季寒声转回头,端起那杯凉透了的铁观音,一口喝完。
窗外,十一月的天黑得早。五点半不到,暮色已经透过百叶窗的缝隙渗进来,在操作台上投下一道一道的光影。
花清月看着那些光影,忽然想到一件事。
“季警官,你在这间实验室里,有多少次像今天这样——明明知道一个方向是对的,但程序不允许,只能等?”
季寒声没有立刻回答。
“很多次。”她最后说。
“不觉得憋屈吗?”
“会。”季寒声的语气依然平淡,但花清月听出了一种类似于“承认”的东西——不是倾诉,不是抱怨,只是在陈述一个事实。“但我更怕的是,因为我的着急,让一个本可以定罪的嫌疑人逃脱法律制裁。”
花清月看着她,看着她被百叶窗的光影切割成一条一条的侧脸。
她忽然觉得,这个人比她想象的要复杂得多。不是那种“高深莫测”的复杂,是那种“你以为她是冰,结果她是水,你以为她是水,结果她是河”的复杂。
她有方向,有目的地,有必须流经的河道。
而且她不着急。
“季警官。”
“嗯。”
“你泡茶的时候,会等水烧开吗?”
“会。”
“等多久?”
“看心情。岩茶要沸水,正山小种可以稍微凉一点。”
“那如果水一直烧不开呢?”
季寒声转过头看着她。百叶窗的光影落在她的脸上,银框眼镜反射着暮色的橘红。
“那就等。”她说。
花清月低下头,在笔记本上写了一个字——“等”。
她盯着这个字看了两秒,然后在旁边画了一只翻白眼的小猫。
她把笔记本合上,塞进书包里。
“今天还有多少活?”她问。
“你觉得呢?”
“我觉得你说‘你觉得呢’的时候,意思就是‘还有一堆’。”
季寒声没有否认。
花清月叹了口气,重新打开笔记本电脑。
“那来吧。”
季寒声站起来,去烧了一壶新水。水开的时候,她泡了一泡老白茶,茶汤颜色淡得像秋天的树叶。
她给花清月倒了一杯。
花清月端起来喝了一口,不烫了,正好。
“温度刚好。”她说。
“我算过时间。”季寒声说。
花清月看了她一眼,没问算了什么时间。但她知道,季寒声连泡茶的水温都精确到秒。
这就是她。
这就是她要在这个系统里学会的事情——不是更快,是更准。不是更狠,是更稳。
花清月把茶杯放下,重新把目光投向屏幕。
窗外的天彻底黑了。实验室里的灯亮着,两个人的影子落在墙上,一个高一点,一个矮一点,靠得很近。