黑暗像粘稠的液体包裹着房间。
路容背靠着墙壁坐在地板上,双臂环抱着膝盖,指尖深深陷入手臂的皮肤。她能感觉到自己的心跳——沉重、快速,像被困在胸腔里的野兽在撞击牢笼。呼吸变得短促,每一次吸气都带着冰冷的刺痛,仿佛空气里混着细碎的玻璃碴。
远处那辆黑色轿车的尾气还在吐出白烟。
她盯着窗帘的缝隙,盯着那缕透过来的昏黄路灯的光。光在颤抖——不,是她的视线在颤抖。整个房间都在轻微晃动,墙壁在收缩,天花板在压低。她闭上眼睛,但黑暗更浓,浓得能听见血液在耳膜里奔流的声音,像潮水,像警报。
应激障碍。
这个词像一根冰冷的针,刺进她的意识。三年前,从警局走出来的那个下午,她第一次体验到这种失控——站在人来人往的街头,突然无法呼吸,无法移动,世界变成模糊的色块和尖锐的噪音。医生告诉她,这是创伤后应激反应,需要时间,需要治疗。
她没有时间。
路容咬住下唇,牙齿陷进柔软的皮肤,疼痛像一道微弱的电流,暂时驱散了眩晕。她睁开眼睛,强迫自己看向书桌。笔记本电脑合着,黑色的外壳在黑暗中只是一个模糊的轮廓。
但里面藏着东西。
监控软件。键盘记录。屏幕截图。摄像头。麦克风。
每一个词都像一把锤子,敲打着她紧绷的神经。李剑的人来过这里——撬开门锁,在电脑里植入监控程序,然后离开。他们现在可能正坐在某个房间里,看着她的一举一动,听着她的每一次呼吸,记录着她的每一次键盘敲击。
她必须清除它。
路容扶着墙壁站起来,双腿发软,膝盖像灌了铅。她走到书桌前,打开台灯。暖黄色的光瞬间照亮桌面的一小片区域,电脑、水杯、摊开的书,还有她早上离开时随手放在旁边的笔。光与暗的边界清晰得像刀切,她的影子被拉长,投在身后的墙壁上,扭曲变形。
她坐下,打开电脑。
屏幕亮起,输入密码的界面出现。她的手指悬在键盘上方,停顿了三秒钟。如果软件已经开始记录,那么现在输入的每一个字符都会被捕获。但她没有选择——电脑必须打开,软件必须处理。
她输入密码。
系统启动,桌面显示。路容没有连接网络,直接打开任务管理器,找到那个伪装成系统进程的svchostx.exe。右键点击,选择“结束任务”——程序没有反应。再次尝试,弹出一个错误提示:“拒绝访问。该进程受系统保护。”
她打开命令行,输入强制终止指令。
屏幕闪烁,命令行窗口突然关闭。电脑风扇的转速明显加快,发出低沉的嗡鸣,像一只被惊扰的蜂巢。路容盯着屏幕,看到桌面背景图开始出现细微的像素扭曲——一条条细小的彩色波纹从屏幕边缘向中心扩散。
这是警报。
如果强行移除,软件可能会触发某种自毁或报警机制,向远程服务器发送异常信号。李剑会立刻知道她发现了监控,接下来的行动会变得更加疯狂。
路容关掉命令行,靠在椅背上。
台灯的光照在她的侧脸,皮肤苍白得近乎透明,眼下的阴影深得像淤青。她能闻到电脑散热口吹出的热风,带着电子元件和塑料的微焦气味。房间里很安静,只有风扇的嗡鸣和她自己压抑的呼吸声。
她需要帮助。
专业的技术帮助。
路容拉开书桌最底层的抽屉,从一堆杂物的最深处摸出一个黑色的塑料盒。盒子很小,只有半个手掌大,表面没有任何标识。她打开盒子,里面是一台老旧的按键手机——屏幕很小,键盘是物理按键,外壳磨损严重。
这是一次性加密电话。
三年前,当她决定开始这场复仇时,沈薇通过特殊渠道弄来的。手机只能拨打预设的几个号码,每次通话时间不超过三分钟,通话结束后会自动清除所有记录。她只用过一次,是半年前联系老吴确认星耀内部网络结构时。
现在,是第二次。
路容按下开机键。屏幕亮起,显示着简陋的蓝色背景和白色数字时钟。她输入解锁密码,通讯录里只有三个号码,分别标注为“吴”、“沈”、“秦”。她的手指悬在“吴”的按键上,停顿了五秒钟。
联系老吴意味着暴露自己当前的危机状态,意味着将这位一直暗中帮助她的老员工拖入更深的危险。但如果不联系,她无法独自处理这个复杂的监控软件。
她按下拨号键。
听筒里传来漫长的等待音,一声,两声,三声……路容盯着手机屏幕上的时间显示,心跳随着每一秒的流逝而加快。第四声,第五声——
“喂?”
老吴的声音从听筒里传来,低沉,沙哑,带着明显的疲惫,背景音里有隐约的键盘敲击声。
“吴师傅,是我。”路容压低声音,语速很快,“紧急情况。我的电脑被植入了监控软件,伪装成系统进程,强行移除会触发警报。我需要技术支持。”
电话那头沉默了。
路容能听到老吴的呼吸声,还有背景里键盘敲击的停顿。时间一秒一秒过去,手机屏幕上的通话计时跳到00:30。
“描述软件特征。”老吴的声音变得严肃。
“进程名svchostx.exe,路径在临时文件夹,创建时间今天下午三点十七分。功能包括键盘记录、屏幕截图、摄像头和麦克风监听、文件访问监控。我尝试强制终止,桌面出现像素扭曲,风扇转速异常。”
“像素扭曲……”老吴喃喃道,“那是视觉水印警报。你断开网络了吗?”
“断开了。”
“好。现在听我说,不要记录,记在脑子里。”老吴的语速加快,“我会给你一个临时的安全通信信道。打开电脑的记事本,输入以下字符……”
路容一边听,一边在断网的电脑上打开记事本。老吴报出一长串看似随机的字母、数字和符号组合,她快速输入。字符在屏幕上排列成三行,像某种加密的咒语。
“输入完了吗?”
“完了。”
“现在,关闭记事本,不要保存。重新连接网络,但不要打开任何浏览器或通信软件。我会在五分钟后通过这个信道给你发送一组指令。收到后立即执行,不要犹豫,不要提问。明白吗?”
“明白。”
“通话结束后,销毁这部手机。用锤子砸碎,电池分开处理。下次联系,用备用方案。”
“吴师傅,谢谢——”
电话挂断了。
忙音在听筒里响起,短促而尖锐。路容盯着手机屏幕,通话时长定格在01:47。她按下关机键,屏幕暗下去。然后她站起身,走到厨房,从工具箱里拿出一个小锤子。
锤头砸在手机外壳上,塑料碎裂的声音在安静的厨房里格外清晰。一下,两下,三下——屏幕变成蛛网状的裂纹,键盘按键崩飞,电路板裸露出来。她掰开后盖,取出电池,将手机残骸和电池分别装进两个塑料袋,塞进垃圾桶最底层。
做完这一切,她回到书桌前。
电脑屏幕还亮着,记事本窗口已经关闭。她重新连接网络,右下角的网络图标从红色的叉变成蓝色的连接状态。她盯着屏幕,盯着系统时间。
五分钟。
秒针一格一格跳动,每一声滴答都像敲在心脏上。路容的双手放在膝盖上,手指紧紧攥着裤子的布料,指节发白。她能感觉到汗水从额角渗出,沿着太阳穴滑下,痒得像蚂蚁在爬。房间里很闷,空气不流通,混合着电脑散热的气味和她自己身上淡淡的汗味。
四分三十秒。
四分四十五秒。
四分五十八秒——
电脑突然发出“叮”的一声轻响。
不是系统提示音,而是某种更清脆、更短暂的声音,像金属片轻轻碰撞。屏幕右下角弹出一个极小的黑色窗口,只有指甲盖大小,里面滚动着一行行白色的代码。
指令来了。
路容俯身靠近屏幕,眼睛快速扫过那些代码。第一行是确认信道安全的验证串,第二行是操作步骤概述,第三行开始是具体的命令行指令。代码的格式非常规整,注释清晰,显然是老吴精心准备的。
她打开命令行窗口,开始输入。
第一条指令:创建一个完全隔离的虚拟机环境,镜像文件来自系统隐藏分区。
键盘敲击声在安静的房间里响起,清脆,有节奏。路容的手指在按键上移动,指尖能感觉到塑料键帽微凉的触感和按下时的轻微阻力。屏幕上的黑色窗口里,白色文字一行行滚动,显示着虚拟机的创建进度。
10%...25%...50%...
电脑风扇又开始加速,但这次是均匀的嗡鸣,不像之前那样焦躁。屏幕上的像素扭曲消失了,桌面恢复稳定。路容盯着进度条,呼吸逐渐平稳。
75%...90%...100%。
虚拟机创建完成。
第二条指令:将监控软件进程及其所有关联文件、注册表项、内存数据,完整迁移到虚拟机环境中。
这是一项精细操作。路容按照指令,先定位软件的所有组件——主程序文件在临时文件夹,但还有三个隐藏的动态链接库分布在系统目录,两个注册表键值,以及一个常驻内存的监控线程。她一个一个标记,然后启动迁移工具。
工具界面是深蓝色的背景,白色的进度条缓慢向右移动。迁移过程中,电脑屏幕偶尔会闪烁一下,像电压不稳时的灯光抖动。每次闪烁,路容的心跳都会漏掉半拍,但她强迫自己继续盯着屏幕,手指放在键盘上,准备随时应对异常。
迁移完成。
第三条指令:在虚拟机中模拟正常的用户操作行为,生成虚假的键盘记录、屏幕截图和音频数据,让监控软件继续“工作”,同时记录软件回传数据的目标地址。
路容打开一个脚本文件,里面是老吴预先写好的行为模拟程序。程序启动后,虚拟机的屏幕上开始自动出现操作——打开文档,输入文字,浏览网页,甚至播放一段低音量的背景音乐。所有这些行为都会被监控软件捕获,打包成数据包,准备发送。
而真正的监控,已经开始了。
在虚拟机内部,老吴嵌入了一个反向追踪模块。当监控软件尝试连接远程服务器上传数据时,模块会记录下服务器的IP地址、端口号、连接时间,以及数据包的特征码。
路容看着屏幕。
虚拟机的窗口里,模拟程序正在“浏览”一个新闻网站,页面滚动,鼠标移动。而在窗口的角落,一个不起眼的日志文件正在实时更新,里面记录着监控软件的所有网络活动。
时间过去二十分钟。
突然,日志文件跳出一行新的记录:
[23:47:12] 尝试连接远程服务器:IP 58.213.47.129,端口 8443,协议 HTTPS。
[23:47:13] 连接成功,开始上传数据包。
[23:47:15] 数据包上传完成,大小 2.3MB。
[23:47:16] 服务器返回确认信号。
路容盯着那个IP地址。
她打开另一个工具,输入IP进行反向解析。结果很快显示:该IP属于深港市本地的一个数据中心,租用方是“星耀科技集团(深港)有限公司”,备注信息显示该IP段分配给“内部管理网络,部门级设备”。
部门级设备。
路容截屏保存,然后断开网络连接。
她需要把这个结果告诉老吴。
按照备用方案,她打开一个加密的邮件草稿箱,输入预设的收件人地址(一个看似普通的商业咨询邮箱),在正文里粘贴IP地址和解析结果,然后点击保存草稿。这是她和老吴约定的单向通信方式——她保存草稿,老吴会通过其他手段访问这个邮箱的草稿箱获取信息。
做完这一切,她关掉电脑。
屏幕暗下去的瞬间,房间里只剩下台灯的光。路容靠在椅背上,闭上眼睛。疲惫像潮水一样涌上来,从脚底开始蔓延,经过小腿、膝盖、大腿,一直淹到胸口。她的肌肉酸痛,肩膀僵硬,后颈像压着一块石头。
但更难受的是喉咙。
那种熟悉的紧缩感又来了——像有一只看不见的手掐住她的脖子,不紧,但足够让她每一次呼吸都变得费力。她张开嘴,想深呼吸,但空气进入肺部时带着刺痛,像吸进了冰碴。
应激障碍要发作了。
路容睁开眼睛,盯着天花板。台灯的光在天花板上投出一个模糊的光圈,边缘晕开,像水中的倒影。她能听到自己的心跳,能感觉到血液在太阳穴的血管里搏动,能闻到房间里越来越浓的自己的汗味——微咸,带着恐惧的酸涩。
她站起来,想走到窗边。
但双腿一软,整个人跌坐回椅子上。椅子轮子向后滑动,撞到书桌,发出沉闷的撞击声。她抓住桌沿,手指用力到关节发白,试图稳住身体,但颤抖已经从指尖开始蔓延。
先是手指,然后是手掌,接着是整个手臂。
颤抖像电流,从四肢向躯干传导。她的肩膀开始抖动,下巴不受控制地打颤,牙齿碰撞发出细微的咯咯声。她咬紧牙关,想阻止,但肌肉已经不听使唤。呼吸变得混乱,短促的吸气,漫长的憋气,再短促地呼出。
黑暗从视野边缘开始侵蚀。
台灯的光圈在缩小,周围的一切变得模糊,像隔着一层毛玻璃。声音也在远去——窗外偶尔经过的车辆声、远处楼里隐约的电视声、甚至她自己呼吸的声音,都变得遥远而不真实。
只有心跳还在。
砰。砰。砰。
沉重,缓慢,像敲击一面破鼓。
路容闭上眼睛,整个人蜷缩在椅子上。她抱住自己的膝盖,把脸埋进臂弯里。布料摩擦皮肤的感觉变得异常清晰,粗糙的纹理,微凉的触感。她能闻到衣服上残留的洗衣液味道,淡淡的薰衣草香,但现在混进了汗水的咸涩。
时间失去了意义。
可能过去了一分钟,也可能过去了十分钟。颤抖逐渐平息,但那种虚脱感更强烈了,像整个人被抽空了骨头,只剩下一摊软肉。她慢慢抬起头,睁开眼睛。
台灯还亮着。
光还是那样暖黄,那样稳定。
路容盯着那盏灯,盯着灯罩边缘因为高温而微微变形的塑料。她的视线逐渐聚焦,意识一点点回归。她深吸一口气,这次空气顺利进入肺部,虽然还是带着凉意,但不再刺痛。
她活过来了。
又一次。
路容慢慢坐直身体,手指松开桌沿。手掌心全是汗,在台灯光下泛着微光。她用袖子擦了擦额头,布料浸湿了一片。
手机突然震动。
不是来电,是短信。屏幕在黑暗的桌面上亮起,冷白色的光刺眼。路容盯着那道光,盯着屏幕上弹出的通知预览。她没有立刻去拿,而是等了三秒钟,等心跳完全平稳,等呼吸完全正常。
然后她伸出手,拿起手机。
屏幕解锁,短信界面打开。
发件人号码:138****5721。
路容盯着那串数字。前三位是星耀集团内部工作号的标准号段,后面几位……她闭上眼睛,记忆像翻书一样快速回溯。周哲的工作号码,三年前她存过,后来他离职时注销了。最后四位是5721,她记得,因为周哲说过那是他生日——5月21日。
号码已经注销了。
但短信发过来了。
内容只有一句话,十一个字:
“坚持住。有人在看着你,不止是敌人。”
没有署名,没有表情符号,没有标点错误。句子简短,干净,像一把刀,精准地刺进她最脆弱的地方。
路容盯着屏幕,盯着那行字。
冷白色的光映在她的瞳孔里,像两簇小小的火焰。她能感觉到手机外壳的冰凉触感,能闻到屏幕上残留的指纹油污的微酸气味,能听到自己突然变得平稳而深长的呼吸。
有人在看着你。
不止是敌人。
她不知道这条短信是怎么发出来的——是通过某种技术手段模拟了已注销的号码?还是周哲根本没有真正注销这个号码,只是对外宣称注销了?或者,这根本就是李剑设下的另一个陷阱,用周哲的号码来试探她的反应?
都有可能。
但此刻,路容选择相信第一种可能。
她关掉手机屏幕,光熄灭,房间重新陷入台灯暖黄的光晕里。她把手机放在桌上,站起身,走到窗边。掀开窗帘一角,楼下那辆黑色轿车还在,尾气已经不再吐出白烟,但车灯还亮着,两道昏黄的光柱刺破夜色。
她松开窗帘,布料落回原位。
然后她转身,走回书桌前,坐下,打开电脑。屏幕亮起,她输入密码,进入系统。虚拟机的窗口还开着,里面的模拟程序还在运行,监控软件还在“工作”,反向追踪模块还在记录。
路容打开一个新的文档。
她开始打字。
标题:《关于星耀集团副总裁李剑涉嫌商业贿赂、数据非法交易及构陷前员工的完整证据链说明》。
她一个字一个字地敲,键盘声在安静的房间里响起,清脆,坚定,像某种宣誓。
窗外的夜色浓得像墨。
但台灯的光,一直亮着。