苏青那条“完事了”还亮在屏幕上。
我拇指悬在键盘上方,刚准备回一个“好”字。笔记本电脑的扬声器突然“滴”了一声。短促的,像刀尖在玻璃上划了一下。
监控系统推送了紧急警报。
我把手机翻扣在桌面,转头看屏幕。蓝白色的光映在脸上,系统日志界面自动跳转到最新一条异常访问记录。一个IP地址在下午三点零七分、三点四十一分和四点二十三分,分别三次访问了与“程掌柜”第一套身份相关的中间商交易数据库。
三次访问的间隔是三十四分钟和四十二分钟。停留的时间足够调取数十条交易记录,然后退出、等待、再次进入。像一个人在翻抽屉,翻完一层,合上,停顿一下,再翻下一层。
我盯着那个IP段看了几秒。来自程明远集团内部常用的动态分配地址范围。经过了三层代理跳转,但底层协议的握手特征——请求包默认的时间戳格式,用的是去年那种“YYYYMMDDHHMMSS”的排列——和程明远去年远程访问某家第三方物流系统时留下的痕迹一模一样。他改掉了IP,没改掉习惯。
指甲掐进掌心,一个呼吸的长度。我松开手,掌心留下四道半月形的浅痕。苏青的消息还在屏幕上亮着。我划开手机回了那个“好”,然后放回桌面。右手食指伸出去,碰到那杯凉透的茶。端起来喝了一口,茶汤的苦涩在舌根化开,顺着喉咙滑下去。胃里被凉意拉紧了一下。像有一只手从里面攥了一下,又松开。
我切到另一个窗口,开始反向追踪那三条访问记录。对方的代理链路经过三个国家的跳转节点,但第一个和第二个节点的响应时间差暴露了真实物理位置——信号从跳转节点出来到到达目标数据库之间的延迟精度,不符合跨洲转发的规律。大约八分钟后,截到了其中一条访问的完整请求路径。第三层代理的原始入口地址落在程明远集团总部大楼的固定IP段内。
截了一张图。窗口最小化。打开加密通讯软件,找到陆景铭的头像,把截图发了过去。
消息栏里,文字和截图之间没有空格:“程明远在翻陈凯的旧账。”
陆景铭的回复来得比预想快。先是一段压缩过的分析报告,然后是文字:“他通过一个第三方数据服务商拿到了只读权限。那个库的漏洞我上周发现的,还没来得及报修。他在查你三年前那些放风记录的交易时间戳。”
我看着他发来的那段分析报告,拇指在屏幕边缘停了一拍。报告里附了程明远查询的关键词列表——“程掌柜”、“放风”、“首次联系”、“陈凯”。这些词条排在一起,拼凑出的轮廓是:有人用“程掌柜”这个身份,在市场底部蓄意放风制造恐慌。他在逐一匹配时间戳和匿名账号注册记录,用来佐证操纵痕迹。
“他想用你做局收割的证据去举报你。”陆景铭的下一条消息紧跟其后,“不是自首,是举报。鱼死网破。”
我看着最后那四个字。屏幕的光映在瞳孔里,“鱼死网破”停留的时间比正常阅读稍长。我放下手机,起身走到厨房。茶壶里剩下的凉茶倒进杯子,又喝了一口。茶已经连凉意都快没了,温水入口几乎没有触感,只有喉间那一丝苦涩在提醒我液体确实存在。
我端着杯子走回桌前。坐下,指尖敲了几个字,屏幕上的反追踪日志还在刷新。程明远的访问记录后面又跟了两条新记录,时间戳跨度比之前更短——十七分钟,十二分钟。间隔在收窄。他在加速。
我打开另一个加密文件夹。文件夹图标是普通的灰色系统默认样式。密码输入后,页面刷新,里面只有一份文件,文件名是一串日期格式的数字。
那是“历史操作日志”。三年前我开始做第一笔灰色交易时同步生成的。每次以“程掌柜”身份发出放风信息、联系中间商、完成匿名资金周转,我都会在操作完成后的同一分钟内,用另一个端口主动查询同一组数据。那些查询动作在系统里留下的是“合规审计人员对异常数据的例行访问”记录。时间戳紧跟在操作动作之后,前后相差不超过六十秒。最紧的一次是二十七秒。
这意味着如果有人想用“程掌柜”的放风记录指控我操作市场,我可以同时出示那些访问记录——证明我当时是在“风控审计”中发现数据异常,在进行合规性核查,而非主动制造异常。
我把文件打开,扫了一遍开头几行。时间戳、访问端点、操作类型、注释栏。每一行对应着一个我没有删改过的原始操作时间点。三年来我保留了每一笔。一行一行,像一排等距的刻度,从三年前的深秋排到去年的晚秋。
手机在桌面上震了一下。陆景铭的新消息:“他在用的那个数据库,底层访问协议的漏洞,我昨天刚拿到一套自动生成虚假访问记录的脚本。可以在他的查询结果里随机插入偏离数据,让他的证据拼凑不完整。”
我看着那行字。指尖在手机边缘敲了两下,然后打字:“别动那个。”
“为什么?”
“让他查。他查到的每一页,都有我的‘反查时间戳’。”
发送完这条,我把手机放回桌面,端起那杯茶又喝了一口。杯底碰到桌面的声音很轻。茶杯内侧已经空了,只剩一层深褐色的茶渍沿着内壁慢慢滑下来,干涸成一条细线。我盯着那条线看了几秒,它停住了,不再往下走了。
重新看向电脑屏幕。把“历史操作日志”的页面从顶端往下翻了一遍,停在第三年的记录末尾。那一条的时间戳是去年秋天,某次中间商交易后四十七秒,以审计端口访问了同一组数据。操作类型栏里记录的是“风控合规核查”,注释栏是空白的。
四十七次反查。四十七个时间戳。四十七条“风控合规核查”的操作注释。三年来,我做了四十七次这样的动作——每次做完事,转身在自己身后留下一道脚印。脚印一模一样,间距相等,方向一致,像有人提前在雪地里踩好了一条路,等着别人沿着它走过来。
手掌覆在膝盖上。掌心温热,隔着裤料压住膝盖骨,能感受到骨头的形状和温度。书房里的空气因为电脑散热器转动而微微流动,气流擦过耳廓,带着一点热,一点塑料受热后散发的气味。
手机又震了。这次是苏青。她的消息很短:“回家路上,你那边什么情况?”
我打字:“程明远在翻旧账,想举报我。没事。”
她的回复隔了大概十秒才出现:“你那份‘反查’日志还在吗?”
“在。”
“那就没事。”
三个字。我没有再回复。把手机放下,指尖在桌面边缘滑了一下,指甲盖磕到木质桌面的棱角,发出一声极轻的“嗒”。然后起身去洗了把脸。
洗手间的灯光是暖色的,和水龙头里流出来的温水差不多温度。我低头冲了两下,抬头看镜子。镜面上的水雾正在慢慢消退,露出底下那张脸。眼睛里没有惊讶或紧张,只是一种平静的确认感——像是看到了一个早就知道会出现的对手终于敲了门。
水珠从下颌滴下来,落进洗手池,声音被水流声盖住了。我关掉水龙头,用毛巾擦干脸。毛巾的棉纤维蹭过皮肤,干燥,微涩。回到桌前坐下时,手背上的水还没有全干,皮肤上有一层薄薄的凉意。
屏幕上,程明远的访问记录又更新了一条。这次他查的是陈凯三年前第一次收到“匿名放风”消息时的网络回执信息。我看着那条新的访问时间戳——下午四点五十八分,距离第一条记录过去了将近两个小时。这两个小时里,他翻了三层抽屉,停了两次,又翻了一次。
关掉监控窗口。打开那个加密文件夹,把“历史操作日志”另存了一份副本,重命名为“底牌”。然后把它放进桌面最外层一个不引人注意的归档文件夹里。文件名改成一个普通日期格式,夹在其他几十个同样格式的日期文件夹中间,像一滴水落进水里。
靠在椅背上。把右手从键盘上移开,手指自然垂落在椅子扶手上。指腹的厚茧擦过扶手的塑料表面,发出一种微涩的摩擦声,沙沙的,像干燥的纸页被翻动。我低头看了一眼右手食指的指腹——那道火柴烫伤的浅痕还在,边缘的皮肤微微发硬,摸上去比周围的皮肤高了一点点。
手机屏幕亮了一次,是陆景铭的回复,只有四个字:“他会上钩。”
我看着那四个字,没有回复。把手机翻过去,屏幕朝下扣在桌面。玻璃后盖撞在木质桌面上,“咔”的一声,然后安静了。然后我拿起手机,又翻过来,重新看了一遍那四个字。拇指在屏幕上方停了一瞬,然后锁屏。
合上笔记本。合页咬合的“咔嗒”一声在安静的书房里格外清晰,像一道锁落下来的声音。然后一切都安静了。
我坐在椅子上没有动。窗外有鸟叫,短促的单音节,隔几秒重复一次。书房的门半开着,客厅方向的晨光从门缝里漏进来,在地板上投下一道梯形光斑。光斑的边缘正在慢慢扩大,每一秒都比上一秒宽一点。
低头看了一眼自己的右手。那道烫伤的浅痕在晨光下泛着微白色,比周围的肤色浅了半个色号。我用左手拇指按了一下,硬的,像是皮肤底下长了一小片极薄的硬壳。指腹按下去的时候,那一片微微发白,松开后颜色慢慢恢复。
窗外那只鸟又叫了一声,然后停了。
晨光正在从窗帘缝隙里慢慢变宽。门缝里那道梯形光斑已经扩大到书桌脚边了,光线的边缘碰到了桌子腿的木纹,把那些深浅不一的纹路照得比平时更清晰。
我坐在那里。手搁在扶手上,掌心向上。指纹里还嵌着昨天凌晨灰烬留下的暗灰色细末,在晨光下显出一种极淡的灰白色,像旧照片里褪色的部分。
手指没有动。
窗外的天光又亮了一层。