技术部的灯在凌晨三点十七分还亮着。
陆晨曦坐在操作台前面,面前三台显示器同时开着。左边那台是深镜模型的操作日志监控界面,中间那台是云盘账号的实时登录记录,右边那台跑着一套她自己写的数据抓取脚本,屏幕上的字符以每秒两行的速度往下跳。她穿了一件黑色的连帽卫衣,帽子没有戴,堆在后颈的位置,卫衣的袖口卷到小臂中段,露出一截细瘦的腕骨,左手腕内侧那道被键盘边缘磨出的淡红色印痕在屏幕光的冷白里格外清晰。双马尾今天扎得很紧,两边的发圈缠了四圈,高低差不到半指宽,尾端翘着的那小撮头发被一枚黑色一字夹压住,夹子斜着卡在耳后的位置。
代码蹲在操作台角落的纸箱里,前爪搭在箱沿上,尾巴盘在爪子上,末端的黑毛尖安静地搭在尾巴尖上。它的瞳孔在屏幕光里缩成一条细线,虹膜里的琥珀色被冷光冲淡了大半,只剩下一圈极浅的绿。它盯着中间那台显示器的屏幕,像是在看那行云盘账号的登录记录。
陆晨曦的右手搭在鼠标上,指腹贴着滚轮表面,轻轻滚了一下。中间的屏幕刷新了。孙建明的第三个云盘账号在三点十五分登录,上传了一个新文件,文件名是“婚礼-片头-试渲染-03”。文件大小约四百七十兆,上传速度很快,用了不到两分钟。上传完成之后,孙建明没有立刻退出账号,页面停留在文件列表界面,鼠标光标在文件名上悬停了大约十五秒,然后点击了“重命名”。他把文件名从“试渲染-03”改成了“试渲染-04”。
陆晨曦的手指从鼠标滚轮上抬起来,在键盘上敲了一串快捷键。屏幕上的界面切换到另一个窗口,是三个云盘账号的文件列表对比。第一个账号里存着叶诗涵采访截图的换脸静态图,第二个账号里存着刘仙仙演唱会抓拍的换脸静态图,第三个账号里存着赵晓月红毯截图的换脸静态图和刚才上传的婚礼视频片头。她把三个账号的文件列表截图保存,然后打开数据抓取脚本的后台,把三个账号的Ip日志调出来。三个账号的登录Ip全部指向同一个地址——杭州城西,某个居民小区,七号楼,三单元。宽带运营商是华数,Ip段是117.136开头,和孙建明家里的宽带记录完全一致。
她把定位信息复制到加密文档里,然后拿起手机给苏小暖发了一条消息。消息内容很简短——“孙建明地址确认。杭州城西某小区七号楼三单元。他妻子的婚前房产,婚后入住,户籍未迁入。”发完之后她把手机放在操作台边缘,屏幕朝下。
代码从纸箱里跳出来,落在操作台上,爪子踩在键盘边缘,留下一串乱码。陆晨曦伸手把猫从键盘上拨开,指尖在猫的耳根后面挠了一下。代码的耳朵抖了抖,喉咙里发出一声极短的呼噜,然后跳下操作台,跑向门口。它用爪子扒拉了两下门板,门板发出“嚓、嚓”的声响。
陆晨曦站起来走到门口,把门拉开一条缝。代码从门缝里钻出去,尾巴在门框上蹭了一下,末端的黑毛尖扫过门板表面的白漆。走廊里的声控灯没有亮,猫的身影在黑暗里只剩下一个模糊的灰白色轮廓,往杂物间的方向去了。
她关上门,走回操作台前面坐下。中间的显示器上弹出一条新的通知——孙建明在影视后期公司的内部系统里上传了一段新文件,文件名是“婚礼-片头-最终版-待渲染”。文件状态标记为“渲染中”,预计完成时间还有大约四十分钟。她把通知截图保存,然后调出孙建明公司电脑的屏幕监控记录。记录显示,孙建明在凌晨两点五十分打开了一个婚礼视频工程文件,导入了一段叶诗涵采访截图的换脸素材,把素材拖动到时间线的片头位置,调整了持续时间和透明度,然后按下了渲染按钮。操作过程中他没有打开任何其他软件,没有登录任何社交媒体,没有发送任何邮件。
陆晨曦把屏幕监控记录和云盘上传记录的时间线叠在一起。孙建明先在自己家的电脑上把文件上传到云盘,然后在公司的电脑上从云盘下载文件,导入工程文件,开始渲染。整个流程用了大约一个小时。他把同一个文件在云盘上保留了三个备份,在公司电脑上保留了一个待渲染的副本。他在建立冗余。
她拿起手机给林瀚发消息。消息内容比发给苏小暖的那条长一些——“孙建明在公司系统里上传了婚礼视频片头,文件标记为‘待渲染’,预计完成时间还有四十分钟。渲染完成后他会把文件发给客户。我问你,报警还是等他渲染完。”
林瀚的回复在两分钟后过来。只有两行字——“等他渲染完。渲染完成的那一刻,他会把文件发给客户。客户收到文件之前,文件一直在他的电脑里。等文件离开他的电脑再报警,罪名就从‘制作’变成‘传播’。”
陆晨曦盯着那两行字看了几秒。然后她打字:“收到。我继续监控。”
发完之后,她把手机屏幕按灭,放在操作台边缘。然后她低下头,看见代码又蹲在纸箱里,前爪搭在箱沿上,嘴里叼着一只灰色的东西。老鼠。活的。老鼠的尾巴从猫嘴的一侧垂下来,微微卷曲,末端的毛在灯光下泛着湿润的光。老鼠的眼睛是黑的,圆溜溜的,被猫叼着也不挣扎,像是已经被叼习惯了。
陆晨曦伸手把老鼠从猫嘴里取下来。老鼠在她掌心里缩成一团,体温比她的手高一些,心跳透过皮毛传过来,快而密集,像是一台小型的发动机。她把老鼠放在操作台角落的地上,老鼠在地面上停了一秒,然后蹿进操作台后面的缝隙里,尾巴最后消失的时候在桌脚上蹭了一下。
她低头看着代码。代码蹲在纸箱里,尾巴盘在爪子上,末端的黑毛尖轻轻摆动,瞳孔放大了一点点,像是有些不满。陆晨曦从桌上的零食袋里抽出一片冻干鸡肉,放在纸箱边缘。代码嗅了一下,叼起来,跳下纸箱,叼着冻干往门口走,尾巴在空气中画了一个半圆。
她坐回操作台前面,把中间的显示器切回孙建明的文件列表界面。婚礼视频的渲染进度条走了大约三分之一,灰绿色的进度条在白色背景上缓慢向右移动。她打开数据抓取脚本的后台,写了一段新的追踪逻辑——如果孙建明在渲染完成后立刻登录任何社交平台或邮件客户端,脚本会自动截图并保存传输记录。她敲下回车键,脚本开始运行,屏幕上多出一行绿色的状态提示。
然后她靠在椅背上,把眼镜摘下来,揉了揉鼻梁。镜框在鼻梁上留下的两个浅浅凹痕在灯光下看得很清楚,凹痕的皮肤颜色比周围略浅。她把眼镜重新戴上,手指在镜框边缘按了一下。操作台上的三台显示器继续亮着,左边的日志监控界面每隔几秒滚动一行新记录,中间的渲染进度条以肉眼几乎看不出的速度向右移动,右边的数据抓取脚本在后台安静地运行。代码从门口跑回来,跳上操作台,蹲在显示器旁边,尾巴从台面边缘垂下去,末端的黑毛尖轻轻扫过键盘的空格键。
技术部安静了很久。空调的暖风从头顶的出风口吹下来,把陆晨曦额前那绺碎发吹得轻轻晃动。她把卫衣的帽子从后颈拉起来戴上,帽兜的边缘蹭着下颌线,露出一截脖颈,皮肤在屏幕光的冷白里泛着近乎透明的白。她靠在椅背上,眼睛盯着中间的进度条,手指在键盘边缘无意识地敲着,节奏很慢,每敲一下,指腹在键帽表面留下一小片被体温捂热的触感。
四十分钟过去了。渲染进度条走到百分之百,文件状态从“渲染中”跳成“待发送”。陆晨曦坐直身体,手指搭在键盘上。屏幕上,孙建明在公司的电脑上打开了邮件客户端,新建了一封邮件,收件人栏填着婚庆公司的邮箱地址。他把渲染好的视频文件拖进邮件附件,然后在正文栏里写了一行字——“片头已完成,请查收。”鼠标光标移动到发送按钮上方,停住了。光标在发送按钮上悬停了大约十秒,然后移开,点了一下预览按钮。视频在预览窗口里播放。片头里,新娘的脸被换成了叶诗涵的采访截图,背景是婚礼现场的鲜花拱门和白色纱幔。新娘的身体穿着白色婚纱,脸是叶诗涵的脸,笑容是叶诗涵在发布会上说“艺术不需要解释”时的笑容。
陆晨曦按下截图快捷键。屏幕截图保存到加密文件夹里。然后她看到孙建明关闭了预览窗口,把鼠标光标重新移动到发送按钮上。这一次没有犹豫,点击了发送。邮件发送成功的提示框弹出来,在屏幕上停留了大约三秒,然后自动消失。孙建明退出邮件客户端,关闭电脑,屏幕变黑。
陆晨曦拿起手机,给林瀚发消息——“文件已发送。收件人是婚庆公司。截图和传输记录已保存。可以报警了。”
林瀚的回复在四分钟后过来——“报警。把证据链打包发给网信办和杭州警方。同时通知苏小暖,让她联系陈雅。”
陆晨曦回复了一个字——“好。”
她把截图和传输记录打包成一个加密压缩文件,通过加密通道发送给网信办和杭州警方的联络人。发送完成后,她把手机放在操作台上,屏幕朝下。然后她靠在椅背上,把眼镜摘下来放在桌面上,闭上眼。代码从显示器旁边跳上她的膝盖,蜷成一团,尾巴搭在她的小臂上,末端的黑毛尖轻轻扫过她腕骨内侧那道淡红色印痕。
她闭着眼,手指搭在猫的背上,指腹在猫的脊背线条上轻轻滑动,从后颈到尾根。空调的暖风从头顶吹下来,把她卫衣帽兜的边缘吹得微微晃动。技术部的灯光在屏幕暗下去之后只剩下一盏台灯,光圈落在操作台中央,把加密压缩文件的传输完成提示框照得格外清晰。
过了一会儿,她睁开眼,把眼镜重新戴上。电脑屏幕上,孙建明的公司电脑屏幕监控记录停留在邮件发送成功的那一刻。她看了那行记录一会儿,然后打开一个新的文档,开始写今天的监控日志。第一行是日期和时间,第二行是孙建明的操作摘要,第三行是证据链保存路径。写到第四行的时候,她停了一下,然后打了一行字——“代码今天抓了一只活老鼠。没有放在键盘上。放在我手心里了。”
她继续往下写。台灯的光圈里,键盘上的字母被照得清晰可辨,手指在键帽上移动的声音很轻,像是在敲一段没有旋律的代码。
福利回放:陆晨曦(技术部凌晨三点)
她坐在操作台前面的时候,黑色连帽卫衣的帽子堆在后颈的位置,帽兜的边缘蹭着下颌线,露出一截脖颈,皮肤在屏幕光的冷白里泛着近乎透明的白,能看到淡青色的血管走向。卫衣的袖口卷到小臂中段,露出一截细瘦的腕骨,左手腕内侧那道被键盘边缘磨出的淡红色印痕在灯光下格外清晰,印痕的边缘有细微的锯齿状,是常年搁在键盘边缘压出来的。双马尾今天扎得很紧,两边的发圈缠了四圈,高低差不到半指宽,尾端翘着的那小撮头发被一枚黑色一字夹压住,夹子斜着卡在耳后的位置,夹齿咬住一绺碎发,碎发的末端在耳垂后方形成一个极小的弧度。
她摘眼镜揉鼻梁的时候,镜框在鼻梁上留下的两个浅浅凹痕在灯光下看得很清楚,凹痕的皮肤颜色比周围略浅,是常年戴眼镜压出来的。没有了镜片的遮挡,她的眼睛显得更大了一些,瞳仁在屏幕光的冷白里泛着深褐色的反光,虹膜边缘那一圈极浅的琥珀色在暗光里格外明显。眼窝下面有一圈极淡的青色,是连续熬夜留下的痕迹,但眼球上的血丝很少,像是身体已经习惯了这种作息。她把眼镜重新戴上的时候,手指在镜框边缘按了一下,指腹在镜框的金属表面上留下一小片被体温捂热的触感。
她把猫从键盘上拨开的时候,手臂内侧的肌肉微微绷紧,卫衣的袖口从手腕上滑下来,堆在小臂中段的位置,露出一整截前臂。前臂的线条细而直,皮肤薄而透光,肘关节内侧有一小块颜色略深的茧,是常年托着笔记本电脑看代码磨出来的。她弯腰把老鼠放在地上的时候,卫衣的下摆从工装裤的腰线上滑开,露出一小截后腰的皮肤,被裤腰和卫衣下摆夹在中间,形成一道窄长的三角形空隙,皮肤在屏幕光的冷白里泛着干净的白,能隐约看到脊柱两侧的肌肉线条在弯腰的动作下微微绷紧。
代码跳上她膝盖的时候,她靠在椅背上的姿势让卫衣的前襟贴住身体,从肩到腰的轮廓被布料温和地勾勒出来,肩头的弧度饱满而流畅,腰线的收束被卫衣的直筒剪裁遮住了大半,但从侧面能看到腰腹的轮廓在布料下隐约起伏。猫蜷在她膝盖上的时候,她的手指搭在猫的脊背线条上,指腹从后颈滑到尾根,指节不突出,指甲修剪得很短,甲床是淡淡的粉色。卫衣帽兜的边缘在她低头看猫的时候蹭着下颌线,露出一截颈侧的皮肤,被台灯的光照得近乎透明,能看到皮肤下面淡青色的血管走向。她闭上眼的时候,睫毛在颧骨上投下一小片扇形的阴影,鼻梁上那两个浅浅的凹痕在台灯光里泛着柔和的暗影,嘴唇微微抿着,唇纹在灯光下清晰而安静。
福利回放:代码(技术部的猫)
它蹲在纸箱里的时候,灰白色的毛在屏幕光的冷白里泛着一层极淡的银,体型不大,蹲着的时候脊背弓出一道柔和的弧线,从后颈到尾根,弧度流畅而饱满。尾巴盘在爪子上,末端的毛微微卷曲,尖端有一小撮黑毛,和耳朵尖的黑毛呼应。瞳孔在屏幕光里缩成一条细线,虹膜的颜色是琥珀色的,边缘有一圈极淡的绿。
它从纸箱里跳出来落在操作台上的时候,前腿先伸了一个懒腰,脊背往下压,臀部往上抬,尾巴翘起来在空中画了一个圈。毛从肩胛到腰窝的位置有一道浅浅的分界线,是常年蜷缩睡觉留下的痕迹。它蹲在显示器旁边的时候,尾巴从台面边缘垂下去,末端的黑毛尖轻轻扫过键盘的空格键,键帽在猫尾的触碰下微微下沉又弹起。它嘴里叼着老鼠的时候,老鼠的尾巴从猫嘴的一侧垂下来,微微卷曲,末端的毛在灯光下泛着湿润的光。老鼠的眼睛是黑的,圆溜溜的,被猫叼着也不挣扎,像是已经被叼习惯了。猫的耳朵竖着,耳尖的黑毛被空调出风口的暖风吹得轻轻晃动,瞳孔在叼住老鼠的瞬间缩得更细,虹膜里的琥珀色被压缩成一条极窄的圆环。
它跳上陆晨曦膝盖的时候,前爪先落在她的工装裤膝盖处,爪子在裤腿的加固补丁上蹭了一下,然后整只猫蜷成一团,尾巴搭在她的小臂上,末端的黑毛尖轻轻扫过她腕骨内侧那道淡红色印痕。它闭着眼的时候,耳朵还会偶尔转一下,耳尖的黑毛跟着耳廓的转动轻轻晃动,像是某种独立于身体之外的小型雷达,在持续扫描着技术部里每一丝微小的声响。