小杰在安全屋里待了三天,把脑子里的东西一点一点地往外倒。他记性好得不像话,三个月前在加密聊天室里看到的一句话,隔了这么久还能一字不差地复述出来。林子川坐在他对面,手里拿着本子,记了整整七页。
“他那天心情好像不错,话比平时多。”小杰盘腿坐在沙发上,怀里抱着一个靠垫,下巴搁在靠垫上,眼睛盯着茶几上的水杯,“我就顺嘴问了一句服务器的部署情况,他说‘北山的服务器该升级了,你去盯一下’。我当时没在意,以为‘北山’是个代号。现在想想,他说的可能是一个具体的地方。”
林子川的笔停了:“北山?”
“嗯。北山。不是网名,不是代号,就是地名。因为我后来查了一下那个词,他说的不是英文,是中文。他说的是‘北山’两个字。”
林子川合上本子,站起来,走到阳台上。安全屋的阳台不大,放着一把塑料椅子和一盆快死了的绿萝。他掏出手机打给王磊。
“查一下省城所有带‘北山’两个字的地方。街道、小区、产业园、数据中心,什么都行。”
王磊的速度很快。二十分钟后,电话回过来了。
“林队,省城北郊有一个‘北山数据产业园’,里面大概有七八家互联网公司的机房。其中有一家叫‘云创科技’的,我们之前查‘蜂巢’资金链的时候,发现他们的一个境外账户跟云创科技的某个客户有间接的资金往来。当时没深挖,因为那个客户的注册信息是假的,查不到实际控制人。”
林子川的手指在阳台栏杆上敲了两下:“云创科技的机房,能进去吗?”
“需要搜查令。但赵厅长那边已经批了,只要你有足够的理由。”
“北山”两个字,加上“服务器升级”,加上“间接的资金往来”。这三样东西叠在一起,够不够理由?林子川觉得够了。他给赵厅长打了电话,赵厅长听完,沉默了三秒,说了一个字:“去。”
云创科技在省城算是一家中等规模的互联网公司,主营业务是云服务和数据中心托管。公司在北山数据产业园占了整整一层楼,机房在地下一层,恒温恒湿,嗡嗡的机器声隔着墙都能听到。林子川到的时候,公司负责人已经在门口等着了,一个四十多岁的中年男人,戴着金丝眼镜,穿着深灰色的西装,领带系得一丝不苟。他的脸色不太好看,但态度很配合。
“林警官,我们公司的一切业务都是合法的。机房是租给客户用的,我们不知道里面放了什么。”他的声音有点抖,不是心虚,是紧张。一个正经生意人被警察找上门,紧张是正常的。
林子川没有接话。他让王磊和莫晓带着技术人员直接下机房。机房很大,两排黑色的机柜从这头排到那头,指示灯密密麻麻地闪着,绿的、黄的、蓝的,像一片微型的城市夜景。技术人员拿着一个手持设备,在机柜之间来回走,设备上的天线转来转去,像一只在找气味儿的狗。
走了不到五分钟,设备叫了。
“这里。”技术人员蹲下来,指着一个机柜。这个机柜跟周围的没什么不同,一样的黑色,一样的指示灯,一样的嗡嗡声。但技术人员用螺丝刀拆开了机柜的前面板,露出了里面的设备——不是普通的服务器,是定制的,散热片比标准的大了一倍,网口多了四个。机柜的背面,电源线下面,还藏着一个不起眼的黑色盒子,上面没有logo,没有标签,什么都没有。
王磊凑过去看了一眼,脸色变了:“这是远程控制模块,带自毁功能。一旦检测到非法侵入,会立刻发送信号,让服务器执行格式化指令。”
林子川蹲下来,看着那个黑色的盒子。它安静地躺在那里,指示灯不亮,像一个睡着了的东西。
“能不能屏蔽它的信号?”
技术人员摇了摇头:“来不及了。这种模块用的是独立的通信通道,不经过机房网络。我们一拆开面板,它就已经发了信号。现在里面的服务器应该已经在自毁了。”
王磊冲上去,拔掉了服务器的电源线。但已经来不及了。当他把服务器重新接上电源、连上显示器的时候,屏幕上只有一行错误提示:无法找到启动设备。硬盘被格式化了,所有的数据都被抹得干干净净,连分区表都没剩下。
林子川站在机柜前面,看着那块砖头一样的服务器。技术人员在尝试数据恢复,手指在键盘上敲得飞快,但表情越来越凝重。那个表情林子川看懂了——希望不大。
就在这时,显示器上突然弹出了一个窗口。不是技术人员的操作,是服务器在自毁前预设的一个程序,在最后几秒执行的。窗口里是一张图片——一个蜂巢的图标,六边形的网格,空荡荡的,只有最中间的那一格有颜色,暗红色的。图标的下面有一行字,黑色的,宋体,不大,但很刺眼:
“林子川,你慢了。”
林子川看着那行字,嘴角动了一下。不是笑,是一种“我知道了”的确认。Q知道他在查,知道他会找到北山,知道他会找到这台服务器。这台服务器不是被他们发现的,是Q故意留给他的。一个陷阱?一个信号?一个“你追不上我”的炫耀?也许都是,也许都不是。
王磊的技术人员在服务器硬盘上忙了三个小时,从那些被格式化的残骸里一点一点地抠出了一些碎片。大部分是乱码,没有任何价值,但有一小段指令被部分恢复了。
“林队,你看这个。”王磊指着屏幕上的一行十六进制代码,“这条指令的发送IP,不是境外地址,是省厅内部的。”
林子川的瞳孔缩了一下。
王磊把那个IP地址输入查询系统,几秒后,结果弹了出来。林子川凑过去看,那个IP对应的设备是省厅技术科的一台备用机,放在机房的角落里,平时很少有人用。使用记录显示,登录这台机器的账户名是“刘明”。
刘明。技术员,一年多前因为涉嫌泄露警务机密被逮捕,案子已经结了,判了三年。他现在应该在监狱里,不在省厅。
“有人冒用了他的账户?”林子川问。
王磊已经在查登录日志了。他翻了十几页,手指停了下来。
“不是冒用。这台备用机最后一次登录是在刘明被捕之前。之后一直没人用过,也没人注意到它还连着内网。但这条指令的发送时间,是三个月前。也就是说,有人在刘明被捕之后,用他的账户登录了这台机器。要么是有人拿到了他的密码,要么是——”
“要么是刘明本人,不是他一个人。”林子川接上了他的话。
王磊的脸色更难看了:“刘明已经判了,案子结了。如果他是‘蜂巢’的人,他的同伙可能还在省厅里,知道他的密码,用他的账户做跳板。”
林子川站在机房里,听着那些服务器风扇嗡嗡的鸣响。头顶的灯管很亮,照得整个房间没有一丝阴影。他看着那块被格式化了的硬盘,那块砖头,那个Q留给他的挑衅。
“查。”林子川的声音不大,但在安静的机房里格外清晰,“把刘明的所有关系人重新过一遍。他的室友、他的同事、他的社交圈。看他进去之前,跟谁走得最近。那个人,可能就是省厅里还没被挖出来的那颗钉子。”
王磊点了点头,开始打电话。
林子川走出机房,上楼,出了云创科技的大门。阳光照在脸上,刺眼。他站在台阶上,眯着眼看了一会儿天。远处的山影影绰绰的,北山,就在那个方向。山不高,但绵延很长,像一道弯着腰的脊背。
他想起Q在聊天里说的那句话——“北山的服务器该升级了。”不是代号,不是暗语,就是字面意思。北山,服务器,升级。他知道林子川会查到云创科技,会查到这台服务器。他也许还知道林子川会看到那行字——“林子川,你慢了。”
慢了。是真的慢了。
如果早几天拿到小杰的线索,早几天申请搜查令,也许能在那台服务器自毁之前把数据拷出来。也许能顺着那些数据找到更多的服务器,找到更多的IP,找到Q的真实身份。
林子川走下台阶,拉开车门,坐进去。他没急着发动,靠在椅背上,看着挡风玻璃上落的灰。那些灰是细小的、均匀的,像一层薄纱。他伸手在上面画了一道,露出了玻璃本身的透明。透过那道透明的划痕,他看到了外面的世界——灰蒙蒙的天,灰蒙蒙的楼,灰蒙蒙的路。
手机震了,是陈雨婷的消息:“妈问你今天回不回来吃饭。”
林子川看着那行字,打了两个字:“不回。”
消息发出去,他把手机放在副驾驶座上,发动了引擎。车灯亮了,照亮了前面那条灰白色的路。他挂挡,松刹车,车子驶出了停车场。后视镜里,云创科技的大楼越来越小,北山数据产业园的招牌在阳光下反着光,一闪一闪的,像一个在跟他告别的老朋友。
他开上了主路,车流裹着他往前走。窗外是这座城市的日常——有人在等公交,有人在遛狗,有人在街边的小摊上买烤红薯。没有人知道,一个代号Q的人藏在某个角落里,用算法编织着一张看不见的网。网正在收紧,一点一点地,勒进那些毫无防备的人的皮肤里。
林子川踩了一脚油门,车速提了起来。
刘明这颗棋子,不管是他本人还是他的影子,他都要挖出来。北山这条路断了,那就从刘明开始,重新接上。
