收到Ip地址的第二天,清晨。
林薇把系统给的地址段打印出来,叠好塞进包里,又检查了一遍移动硬盘和那沓复印件——伪造文件的证据她复印了三份,一份放家里,一份存银行保险柜,一份随身带着。钥匙拧了两下才发动引擎,车子抖了抖,尾气在冷空气里凝成白雾。她往Z先生的工作室开。
天还没亮透。东边泛着一层灰蓝,像没洗干净的底片,边角上还残留着几粒暗色的斑点——大概是远处的高压线塔。路灯还没灭,黄澄澄的光打在空荡荡的马路上。林薇打了个哈欠,顺手把收音机拧开又关掉,太吵。她需要安静。
拐进窄巷子的时候,她踩了刹车。
前方二十米,路边躺着一个人。不是流浪汉那种蜷在纸板上的躺法——是整个人侧卧在人行道上,姿势僵硬,一只胳膊窝在胸口,另一只手软塌塌地搭在马路沿上,指尖悬空。旁边没有包,没有拐杖,只有一个被踢翻的塑料袋,两颗橘子滚到了下水道盖子旁边。
林薇熄火,推开车门跑过去。高跟鞋在柏油路上敲出急促的嗒嗒声,跑到一半她蹲下来脱了鞋,赤脚跑到老人身边。
是个七十多岁的老头,中山装洗得发白,领口磨出了线头。脸色灰败,嘴唇发紫,额头上一层细密的冷汗,像刚从冷水里捞出来的。呼吸又浅又急,喉咙里嗬嗬地响,像有什么东西堵着。
林薇伸手摸他的脉搏——又弱又乱,那种跳法让她后脊背发凉。急救课的肌肉记忆比脑子快:平躺、侧头、解领口、保持气道通畅。她把老人的头轻轻侧过去,手指碰到他颈侧的皮肤,凉的。中山装最上面的扣子很紧,她解了两下才弄开。然后掏出手机打120。
“喂,急救中心吗?我这里有个老人晕倒,地址是——”她抬头看了一眼路牌,报了路口名称,“老年男性,大概七十多岁,意识不清,嘴唇发绀,脉搏微弱不规则,呼吸急促,喉咙有痰鸣音。可能是心脏方面的问题。”
接线员让她别挂电话。她把手机夹在肩膀和耳朵之间,一只手继续搭在老人腕上监测脉搏,另一只手从包里翻出文件夹给他扇风。扇了几下,风太小,她干脆把文件夹扔一边,脱下外套叠了叠垫在老人头下。
“爷爷,”她压低声音说,“救护车马上就到。您坚持一下。”
老人眼皮动了一下。那只搭在马路沿上的手慢慢抬起来,碰了碰林薇的手指。他的指尖冰凉,凉得让她想起小时候冬天摸到的自来水。
时间过得很慢。每一秒都被拉长了。
救护车来得比想象中快,但也等了七八分钟。林薇跟着上了车,急救人员接手的时候她还握着老人的手——说不上来为什么,就是觉得这时候松手不对。到了医院,她站在急诊室门口等。走廊里消毒水的味道呛得她眼睛发酸。
后来护士出来说“家属到了”。一个男人从走廊那头跑过来,西装袖子卷到胳膊肘,领带歪在一边,手里的手机还没挂断,屏幕亮着——大概是从什么会议上直接冲出来的。
“爸——我爸怎么样了?”
护士说已经稳定了,急性心律失常,幸好送得及时。男人长出一口气,靠着墙闭上眼睛,肩膀塌下来。几秒钟后他睁开眼,转向林薇。
“是你救了我爸?”
林薇刚想说“凑巧碰上的”,护士又推门出来喊家属签字。男人应了一声,进病房之前回头看了她一眼,从名片夹里抽出一张塞进她手里。
“我叫孙磊。不管什么事,打我电话。”
名片上印着某科技公司的logo,职务是技术总监,网络安全方向。
脑海里叮一声。
林薇低头看了一眼名片,又看了一眼病房的方向。孙磊正在床边弯下腰跟他父亲说话,老人的手抬起来摸了一下儿子的脸。她转过身往电梯口走,走了几步才想起来脚上还穿着那双沾了灰的丝袜,高跟鞋忘在路边了。
没关系。回车上的时候后备箱里还有双备用的。
车里还残留着早晨的凉意。她把名片夹进笔记本里,发动引擎,看了眼后视镜里的自己——头发乱了,妆也花了。算了。她往Z先生的工作室开。
【生命守护】任务完成。急救技能·中级熟练度涨了30%,两千块现金。特殊奖励:孙磊加入技术团队,追踪效率提升50%。
系统冷冰冰的播报音在脑子里响完,林薇笑了一下。不是因为那两千块钱。
Z先生的工作室在城郊一栋老商住楼的顶楼。没电梯。楼梯间里堆着快递纸箱和废弃的电脑机箱,墙上贴着办证广告和宽带小广告,好几层都重叠着,最早那层已经泛黄卷边。林薇爬到六楼,有点喘,敲了敲防盗门。
门开了条缝。一张年轻的脸露出来,头发乱得像鸟窝,黑框眼镜后面两只眼睛布满血丝,眼圈乌青,至少熬了三天。t恤上印着一行褪色的字:世界上有两种人,一种能修电脑,一种不能。
“Z先生?”
“进来。”
屋子里的场景让她愣了一秒。没有沙发,没有茶几,连个坐的像样地方都没有。三台台式机并排摆在靠墙的长桌上,屏幕全亮着,命令行界面,绿色字符在黑色背景上不停刷新。靠窗的桌上排着六台笔记本电脑,不同尺寸,不同年代,外壳上贴着各种贴纸。墙上挂着一块大白板,画满了拓扑图,Ip地址之间连着密密麻麻的箭头,有些节点被红笔圈起来画了问号。窗帘拉得死死的,唯一的光来自屏幕和头顶的日光灯。空气里一股泡面和功能饮料混合的味儿,甜腻腻的,底下还压着一层烟味。
Z从桌上摸到烟盒,叼了一根但没点,含含糊糊地说:“东西呢?”
林薇把打印出来的Ip地址段递过去。Z接过来扫了一眼,吹了声口哨。
“你从哪搞到的?”
“别问。”
“好,不问。”他把纸条搁在键盘旁边,嚼了两口口香糖,薄荷味的,味儿冲得林薇都能闻到。然后他手指就开始在键盘上敲了,噼里啪啦,快得看不清动作。屏幕上弹出命令行,光标闪了闪,字符一行一行往外跳。
他工作的方式很特别——不是正襟危坐地编程,而是半躺在椅子里,左脚踩着桌腿,右脚蹬着地,整个人像是陷在椅子里的一团衣服。嘴里的口香糖嚼得啪嗒啪嗒响,但手指从来没停过。
“你这个地址段,”他盯着屏幕说,“我上周就在追。但不是从这边入手的——我是从吴良的邮箱日志倒推的。”
他敲了几个键。屏幕上弹出一串Ip。
“他用了至少三层跳板,每一层都是不同国家的服务器。美国、德国、新加坡。从外面往里打,得一层一层剥,剥到最后一层还不一定是真的。但你给我的这个Ip——”他拿手指弹了一下那张纸条,“直接把最里面那层壳捅开了。”
他吹了个泡泡,啪一声破了,拿手指把泡泡渣从嘴角拨下来。
“对方是个老手。反追踪意识很强。每层跳板都做了日志擦除,最外面那层甚至伪造了假的访问记录,故意留下痕迹,想让追踪的人以为服务器在东南亚。一般的技术人员追到那儿就停了,以为自己找到了源头,实际上被耍了。”
他又敲了几个键。
“但也不是无迹可寻。凡是人做的东西都有指纹。吴良的指纹就是他太自信了。他以为三层跳板加一层假日志就够了,但他忘了擦中间那层的SSh登录时间戳。”
屏幕上弹出一行时间戳。
“你看这里。”Z把屏幕转过来一点给林薇看,“这些文件的创建时间,比他在网上爆料的日期早了整整七十二小时。他不是当天拿到当天爆的——是提前三天就开始准备了。他把文档的时间戳删了,但SSh登录记录他删不掉,那是服务器端的日志,他只有操作权限,没有删除权限。”
林薇盯着那行时间戳看了好几秒。
“这个能当证据吗?”
“可以。”Z把口香糖吐进纸巾里,又剥了一颗新的扔进嘴里。“但光有这个不够。时间戳能证明文件是提前准备的,不能证明就是吴良伪造的。律师会说,文件可能是别人提前准备的,吴良只是恰好拿到了。要锁死他,还得找到他本机上的痕迹。”
他顿了顿。
“他的电脑在孙队长抓人的时候扣押了吧?硬盘还没深挖。如果硬盘里有伪造文件的草稿,或者没来得及加密的原始文档,再加上服务器时间戳,再加上孙乾的口供——三条线交叉,就能咬死。”
林薇站起来,给王警官发了条消息。发完她看了一眼墙上那些密密麻麻的拓扑图,忽然想起包里那张名片。
她把孙磊的号码翻出来,递给Z。
“我给你加个人手。今天下午就能到位。”
“谁?”
“网络安全公司的技术总监。他欠我一条命。”
Z接过名片看了看,吹了个更大的泡泡。泡泡破了糊在鼻尖上,他满不在乎地揭下来。
“行。来的人别碰我的键盘就行。”
晚上。
林薇回到家,刚把包放下,手机就响了。Z打来的。背景音里键盘还在噼里啪啦响,还有谁在翻箱倒柜,一声闷响,大概是踢翻了什么东西。
“找到了。”Z的声音有点激动,语速比白天快了一倍。“我追踪到一个可疑的登录Ip——不是跳板,是真实Ip。吴良在某个时间点偷懒了,从自己的备用机直接登了一次服务器。时间很短,不到两分钟就被踢了,他可能意识到不对劲赶紧断了。但Ip记录留在了日志里。”
电话那头咚一声,什么东西打翻了。林薇听见Z骂了句脏话,然后是纸巾擦桌子的声音。
“饮料洒了。”Z说,“算了不管——定位在邻省某市的城中村,基站信号覆盖范围不超过三栋楼。他应该还在那边。这种地方鱼龙混杂,租房不用身份证,是最好的藏身处。”
林薇挂了电话,立即拨给王警官。她把定位信息逐字逐句报了一遍,包括经纬度、基站编号、信号覆盖半径。
“Z先生说了,信号范围不超过三栋楼。”
王警官沉默了几秒。背景里有人在喊“把那个监控录像调到主屏”,还有椅子拖动的声音。
“知道了。我马上联系当地警方。你让Z先生继续守着那个节点——如果吴良再登录,第一时间通知我。哪怕只有一秒钟,也要抓住。”
林薇把Z发来的坐标和日志截图转发给于龙,附了一行字:服务器时间戳证明文件提前三天伪造,吴良真实Ip已锁定,王警官在联系当地警方。
几秒钟后于龙回了两个字:辛苦。
她靠在椅背上,摘下眼镜,拿衣角慢慢擦。镜片上有一小片没擦干净的指纹,她对着台灯的光找了半天才擦掉。窗帘缝里漏进来的天光已经完全灭了,只剩笔记本电脑屏幕还亮着,幽蓝的光映在她脸上。
窗外起了风。远处工地的塔吊上,红灯一闪一闪的。
林薇把眼镜戴回去,看着屏幕上那些跳动的数据和拓扑图。这个夜晚还没有结束。但转机已经来了。她能感觉到——就像早上那个老人的脉搏,从微弱散乱,慢慢跳回有节奏的搏动。
有些时候,事情就是这样。在看似一切都不可能逆转的时候,忽然有一个细节松动了。然后另一个细节跟着松动。然后链条开始往另一个方向转。
她把烟灰缸推到一边,重新拿起手机,给Z发了条消息:今晚我陪你们守着。