风把照片的纸角吹得哗哗响。
沈君则把照片放进夹克内袋,指尖碰到父亲写的那行钢笔字。灯塔的光扫过来,从他背后掠过,影子长长地拖在港区的水泥路上。他转身走向警车,拉开车门前回头看了一眼——光柱已经扫向出海口的方向,在暮色里切出一道白色的通路。
他拉开车门,坐进副驾驶。
“市局。”他对开车的警员说了句,然后靠在椅背上闭上眼睛。
警车驶离港口区,穿过滨江老城区。路灯开始亮起来,街边小贩推着车准备收摊。车载电台里传来调度中心的声音,“三号线全线停运,五号线区间停运”。沈君则睁开眼睛,看向窗外。一个母亲正牵着孩子过斑马线,孩子手里举着红色气球。
他在想“审判”这个词。
凶手在网上发视频,说他审判了那些被法律放过的人。这不是普通的黑客攻击。
车到市局门口时,周涛的电话又打进来。这次语速更快:“我刚拿到初步报告。两列车是正面相撞,三号线往北方向的一列车被调度系统错误导引进五号线的轨道区间。信号灯显示绿色,但那是被篡改过的。”
沈君则推开车门,“我到了。”
技术科办公室里的灯全亮着。周涛站在三块屏幕前来回切换,左边屏幕显示地铁调度系统的事件日志,密密麻麻的代码行;中间屏幕是事故现场的航拍画面,两列列车像扭曲的铁皮玩具挤在一起,救援队的探照灯把残骸照得惨白;右边屏幕是一段暂停的视频——像素不高,背景是个昏暗的房间,一个人的轮廓坐在镜头前。
“你看这个。”周涛把中间屏幕的画面缩小,调出新窗口。地铁控制中心的系统日志,时间戳停在今天下午16:23:07。他敲了几下键盘,高亮了一行代码,“看到了吗?入侵者不止篡改了信号。他还留下了一个签名文件,就放在系统根目录下。”
他点开那个文件。
屏幕上弹出一个极简的图标——ASCII字符拼成的天平符号,两边平衡,下方是一行英文花体字:“Justice”。
“正义天平。”沈君则念出声。
周涛点头,“我已经查了国内近五年的黑客入侵案件数据库,没匹配到相同的签名。地下论坛里也没有。”他切换到一个全黑的界面,上面是跳板IP的追踪路径图,从滨江出发,经过至少七个节点,最后消失在东欧的一个匿名服务器集群。“攻击源来自境外,但前两层跳板是滨江本地的IP——三号线春江站附近的基站。所以操作者很可能就在滨江。”
沈君则盯着那个天平符号。“这不是勒索,也不是破坏。他在挑衅。”
周涛调出那个视频。“你要看吗?他发布在一个海外视频平台,十七分钟后才被下架,但已经被转发了三千多次。”
视频开始播放。
画面质量很差,一个人的轮廓,背后是黑的,声音经过了变声处理——像金属摩擦的调子,每个字都被拉平了音调。
“今天下午四点二十三分,滨江地铁三号线,三个逃过法律审判的人受到了惩罚。”
他念出三个名字。两个成年男性,一个女性。
“一个是家暴者,法院以‘证据不足’不起诉;一个是醉驾撞死人的富二代,赔偿和解后免于刑事处罚;一个是虐待老人的护工,从未被追究。法律放过他们,正义不会。”
视频最后,他在镜头前放下一张纸。纸上画着和系统里一模一样的天平符号。
视频结束。
沈君则没有立刻说话。他盯着停住的画面,那张纸,那个符号。然后开口:“查这三个人的背景,所有的。案件卷宗、不起诉决定书、和解协议,全部找出来。”
“已经在调了。”周涛切换到一个数据库检索页面,“但这让事情更复杂——凶手在炫耀,他想要关注。”他顿了顿,“这不是那种躲在暗处为了钱或者为了报复的黑客。这是……”
周涛找着词,“这是表演。”
“是声明。”沈君则接上,“他觉得自己是对的。他在告诉我们,他做的事,法律做不到。”
桌上的电话响了。
一线勘查组从地铁控制室打来的。“沈队,”那边的声音有点急,“控制室里发现了一张纸条。压在值班日志下面,不是今天写的,是提前放进去的。”
“上面写的什么?”
对方顿了一秒。“‘沈君则,你抓了那么多罪犯,该轮到我了。’”
办公室里安静了一瞬。
沈君则握着听筒。“纸条封存,送回局里做笔迹鉴定。”
“明白。”
放下电话,沈君则看向周涛。周涛已经在摇头了,“这不是血信案那个人的笔迹和风格。血信那个人用毛笔,字很漂亮,像书法。但这张纸条如果是提前放的,说明侵入控制室的不止是线上——他有线下配合,或者他自己进去过。”
沈君则站起来,走到窗边。街灯连成一片,远处能隐约看到三号线春江站附近还没撤完的警戒线。
“血信案那个人,是为了复仇。”他忽然说,“这个人不一样。”
他转过身,“有人想当法外制裁者,但不是为了正义。”
“是为了出名?”周涛接话。
“是为了证明自己比别人聪明。”沈君则走回桌前,“这是模仿犯罪——但他模仿的不是血信的作案手法,而是血信制造的‘审判’这个概念。他在借我们的案件热度,搭建自己的舞台。”
周涛愣了一下,然后点头。“所以电子签名留英文,所以发视频。他要的观众不只是滨江,他要的是……”他指了指电脑,“全球黑客社区的关注。”
“小伍那边怎么样?”
“还在康复医院。腿能动了,但医生说起码还要两周才能坐起来。”周涛调出小伍的病房监控画面,“老鬼现在跟他在一起。他说腿断了不影响脑子,非要远程参与案情分析。”
沈君则没接这话。他看着满屏的数据、视频、签名,脑子里在拼图的不是作案手法——手法已经清楚了,一个高水平的黑客入侵调度系统,篡改信号,制造撞车——他在拼的是动机。
为什么选这三个人?
为什么要在控制室留纸条?
为什么要@他?
“周涛。”他说,“查一查,滨江这半年有没有申诉失败的民事案件当事人。重点查跟‘不起诉’、‘免于处罚’、‘不予立案’有关的。还有——有没有人最近在社交媒体上公开表达过对司法系统的不满,而且技术水平达到能黑进地铁调度系统的程度。”
“这范围可不小。”
“先缩小到有计算机或者网络工程背景的人。另外,通知地铁安保部,把所有控制室的出入记录调出来,最近一个月。”
小伍坐在轮椅上,腿上盖着毯子,笔记本电脑放在面前的小桌板上。病房的灯调得比较暗,屏幕的光把他的脸照得很清楚。脸色还有点苍白,但眼睛很亮。
平板电脑架在一旁,老鬼的脸出现在屏幕上。他叼着那个没点火的烟斗,背景是龙城密室的监控墙。
“沈君则刚给我发了案情摘要。”老鬼的声音压低了些,“地铁那事,你看了吗?”
“看了。”小伍敲着键盘,调出几页数据,“我已经在扒最近一星期三号线和五号线调度系统的维护日志。入侵时间窗口很窄——系统自从那次升级之后,只有周二凌晨三点到五点之间会有维护窗口,入侵者应该是卡在这个时间段植入的篡改程序。”
他又切了个页面,“但我发现一个更有意思的东西。”
老鬼凑近摄像头。“什么?”
“沈队刚才让我查的,控制室出入记录。最近一个月,有三个人比较可疑——两个是地铁自己的运维工程师,另一个是半个月前离职的。”小伍调出第三个名字,“这个人,李文博,今年三月份因为一桩家暴案被调查,但受害人撤销了指控。他离职之前在春江站控制室值班。”
“三月份的家暴案撤销?”老鬼的眉毛抬起来,“今天他‘审判’的第一个人就是家暴者。”
“是的。”小伍咬了下嘴唇,“而且他离职的时间是六月七日。电梯监控显示,六月九日凌晨两点,他刷工卡进过一次春江站控制室——但他六天前就应该没有权限了。系统没有报警,说明有人帮他保留了权限。”
老鬼沉默了片刻,缓缓说:“把这个人所有信息拉出来,尤其查他的网络技术背景和社交账号。沈君则说得对,这是个想出名的人。”
小伍已经开始调数据了。
但这时,监控墙上的一条新信息让老鬼脸色变了。
“小伍,打开海外那个视频平台。”老鬼的声音突然变得很紧。
“怎么了?”
“凶手又发了条动态。这次只说了一句话:‘下一个,滨江化工厂。’”
沈君则正在翻看从现场带回来的纸条照片,周涛突然把手机屏幕怼到他面前。
“他预告了。”
只见账号“JusticeBalance_01”在视频平台发了一条纯文字动态,发布时间是三十秒前:
“滨江的空气中还有更重的罪。北区化工厂,你们的赔偿协议掩盖了多少真相?下一次审判,不留活口。倒计时:48小时。”
沈君则立刻拿起座机拨通刘法医的电话。
“刘法医,滨江化工厂近两年有没有相关的案件?”他按了免提。
刘法医的声音在电话里有点沙哑,显然是被吵醒的。“化工厂?去年六月,北区化工厂发生泄漏事故,造成周边居民区十七户居民中毒,三人留下永久性呼吸道损伤。但最后是庭外和解,化工厂赔了钱,没有人被追刑责。”
“那些受害者的家属呢?有没有懂计算机技术的?”
“这你得问档案室。但那个案子当时争议挺大,网上骂声很多。”刘法医顿了顿,“沈君则,这个凶手跟血信那个人不一样吧?”
“不一样。”沈君则说,“但他更危险——他没有血信做事的克制。”
“什么意思?”
“血信至少不伤无辜,只找目标。但这个人为了‘表演’,会不择手段。他预告‘不留活口’,化工厂是化工装置,一旦引起爆炸或者再次泄漏,死的可能不止他想‘审判’的人。”
挂电话后,周涛已经调出了化工厂的区域地图和人员排班表。“化工厂现在还在运行,夜班员工有一百二十多人。如果四十八小时内凶手按预告做事——”
他没往下说。
沈君则站起来,走到案情板前,在空白处写下:李文博(家暴指控/离职地铁员工)——化工厂泄漏案受害者关联?
“立刻查李文博和化工厂受害者有没有关系,亲属、朋友、社交关系,全部拉出来。另外,给我接特警队的电话。”
周涛那边已经开始调数据,手指在键盘上敲得飞快。桌面上,电脑屏幕里那个天平符号静静地亮着。
沈君则拿起座机听筒,拨出特警队的号码。
电话接通前的那一秒,他看了一眼窗外。滨江的夜景安静的铺开,像什么都没发生过一样。
但四十八小时的倒计时已经开始了。
