## 第二章:云枢十六楼
早高峰的地铁车厢是一个压扁的罐头,浑浊的暖流里掺着隔夜汗味、早餐豆浆和短视频外放的背景音。闻人屿缩在门边的角落,肩膀贴着冰凉的金属扶手,鼻腔里全是别人呼出的二氧化碳。他手里提着一只褪色帆布包,包里塞着昨晚重写的运维日志,用铅笔写的,字迹工整得像印刷体,以防万一被谁瞟见也不至于立刻读懂。
这趟线他坐了三天。原身的肌肉记忆比导航准:出租屋左转三百米,四号线坐七站换乘,再坐三站出站,步行八分钟。全程不需要开口,不需要对视,不需要跟任何人解释自己为什么脖子上有一道疤、为什么说话时喉咙里像堵了一截铁管。原身早把这条路走成了本能,走在路上的人甚至不会注意到他。
出站口的风灌进领口,闻人屿缩了一下脖子。十月初,气温还没彻底降透,但北面来的风已经带了干冷的前兆,从衣摆下摆钻进去,沿着脊椎往上爬。他抬头看了一眼面前那栋玻璃幕墙高层建筑,阳光被反射成刺目的光斑,顶层几扇窗户像被镀了层滚烫的金箔。子公司挂的牌叫"云枢科技",名义上做企业级网络解决方案,但闻人屿知道,这栋楼里真正走的数据流比那四个字复杂得多。
过闸机,刷卡,等电梯。周围的人穿着差不多款式的深色外套,脖子上挂着工牌,神情介于刚睡醒和已经麻木之间。原身的工牌是白色的,姓名栏"闻人屿",职位"运维助理",照片上的眼神空得像一潭没活水进来的死水。闻人屿低头看了一眼自己的手指,指甲剪得很短,指尖有一层薄茧,是常年敲键盘磨出来的。原身的,也是他的。
电梯里挤了十几个人,没人说话。楼层数字挨个亮起来,到十六楼的时候他走出去,沿着走廊往最里面的大办公室走。走廊两侧的磨砂玻璃隔断后面有人影晃动,电话声隔着一层玻璃变得模糊,像从水底传上来的。他的工位在角落,靠窗,左边是一面贴了绿植贴纸的玻璃隔断,右边空着。今天那张空桌子上坐着一个人。
顾言舟。
闻人屿的脚步没顿。他的目光在那张脸上扫了不到一秒——干净的下颌线,偏长的鬓角,鼻梁上架一副窄框眼镜——然后从容地走到自己工位前,放下帆布包,拉开椅子,按开机键。整套动作流畅自然,像一个再普通不过的周三早晨。没有人注意到他放包的时候手指多用了半秒的力,没有人注意到他把屏幕亮度调暗了一格,以便余光能更清楚地捕捉隔壁显示器的反光。
顾言舟抬头看了他一眼,笑了。
"早啊。"声音温和,带着刚睡醒的那种鼻音,尾音有点黏,"你工位在我旁边?我上周出差,今天才回来。我叫顾言舟,技术部的。"
闻人屿侧过身。他早准备好了,从外套内袋摸出手机,打开备忘录,打字,递过去。屏幕上是一行小字:"闻人屿。我不能说话,打字交流。"
顾言舟接过手机看了两秒。眉梢极轻地一挑,随即落回原位,像一扇门开了条缝又合上。快得几乎捕捉不到。他把手机递回来,声音比刚才放低了一点:"知道了。有什么需要帮忙的随时敲我,我工位在这,不用客气。"
闻人屿点头,又打了一行:"谢谢。"然后转过身面对自己的显示器。屏幕刚亮,系统还在加载桌面,他的余光扫过顾言舟的桌面——一台配置不低的笔记本外接了两块显示器,左边那块开着代码编辑器,光标停在注释行末尾。那个注释符的写法,两个斜杠后跟一个空格,再跟一段小写字母开头的英文短语,和他昨晚在日志里追到的那条异常请求头里的编码习惯一致。分毫不差。
他收回视线。
桌面加载完毕,他打开运维组的内部工单系统。七条待处理任务:服务器常规巡检、日志归档、权限复核、备用节点连通性测试。都是机械活,重复、安全、不需要动脑。他点开第一条,开始干活。
隔壁键盘声响起来,不疾不徐,像有人用同一根手指在弹一首拍子规整的练习曲。顾言舟在写代码,敲击的节奏不快不慢,偶尔停一下,然后继续。闻人屿听着那个间歇的频率——平均每敲二十一行停三秒,停顿的三秒里两秒在滚动鼠标,一秒在看手机。规律得像脚本。人不会这么精确。除非他刻意训练过自己,或者他已经把某种行为模式刻进了肌肉记忆。
闻人屿没抬头。
上午的办公室逐渐热闹起来。电话铃、打印机嗡鸣、同事隔着工位喊话的短促对话、保温杯盖子拧开又拧回去的咔嗒声。他坐在角落里,和这些声音隔着一层薄薄的屏障。没有人主动来找他说话,一个哑巴实习生坐在角落太正常了。正常到让人忽略。这正好。
十点四十分,顾言舟站起来,端着杯子去饮水机接热水。回来的时候他在闻人屿桌边停了一步。
"你还没加内部通讯群。"他低头扫了一眼闻人屿的显示器,"行政发了新人群二维码,你扫了没?"
闻人屿摇头,掏出手机,屏幕已经切到了备忘录界面。他打了一行:"没看到邮件,可能漏了。"
"那我拉你。"顾言舟拿出手机晃了晃,"企微号多少?"
闻人屿把二维码亮给他看。顾言舟扫了,几秒后手机震了一下,弹出一条好友申请,备注名"技术部-顾言舟"。他点了通过。
紧接着一连串消息提示音。他被拉进一个叫"云枢科技·新人交流群"的群,四十几个人,此刻有人在发一张猫举刀的表情包,底下跟了一排"哈哈哈"。闻人屿把群聊提醒调成静音,退出了群聊界面,没有留在里面扮演一个"已读不回"的角色。顾言舟应该注意到了,但他没说什么。
顾言舟没走。他站在工位旁边,一边喝热水一边随口补了一句:"对了,下午三点技术部周例会,运维组也参加。你去不去?"
闻人屿打字:"去。需要我做什么?"
"不用准备,走个流程。leader讲这周重点任务,你听着就行。"顾言舟说完这句,顿了一顿,杯口的热气在他下巴附近氤成一团白雾,"你是闻人正阳推荐进来的吧?"
问题的语气依然随意,但那个停顿的长度让闻人屿心里标了一个刻度。顾言舟知道闻人正阳。他在试探。问题是,他为什么要在入职第三周才来试探?原书上顾言舟是在第一次入侵完成之后才开始关注原身的。现在顾言舟还没动手,他却提前开了口。差了两周。闻人屿不知道这意味着什么。
闻人屿打字:"嗯。你认识闻人叔?"
"不算认识,听说过。"顾言舟笑了一下,"之前行业交流会上见过一面,他做信息安全咨询的嘛,圈子小。"
闻人屿点头。他的表情平稳,目光没有偏移,因为原身对养父的感情很复杂但表面功夫早就练出来了,听到那个名字不会有异常反应。他只是把手机收回了口袋里,动作比平时慢了半拍,显得像在犹豫要不要继续这个话题。犹豫本身也是一种表演。顾言舟应该能接收到:这个实习生不太愿意聊闻人正阳,但也没否认什么。
顾言舟没再追问,拍了拍杯壁走回自己的工位。他坐下来的时候键盘声重新响起,节奏和刚才一模一样,像有人按了暂停键之后又按了播放。
闻人屿低头看着自己的屏幕。第一条工单处理完了,正在做第二条。他的手指在键盘上慢慢移动,刻意保留那种新手的犹豫感——偶尔按错一个键,停顿,删除,重打。原身在办公室维持了六周的"笨拙实习生"人设,代码写不利索,系统操作要问两遍才能记住一条命令。闻人屿昨晚决定延续这个人设。前几周不能动,他需要观察,需要让所有人觉得自己没有威胁。
他打开了浏览器,假装在查技术文档,在搜索引擎里输入了一个常见错误信息,点了几个看起来正常的链接,滚动,翻页。实际上他在用余光盯着顾言舟的屏幕——从他的角度看不清楚具体内容,但能捕捉到颜色切换的频率。深色背景的终端窗口偶尔闪过,浅色的文档界面,浏览器标签页,邮件客户端。顾言舟切换窗口的速度很快,平均两分钟换一个界面,看起来像在多个任务之间跳跃。但闻人屿注意到一个规律:每二十五分钟他会停一次,双手离开键盘,靠到椅背上,目光落在走廊尽头那扇磨砂玻璃门的方向。
那扇门后面是会议室。会议室里有一台独立的终端机,连接着南宫集团总部的核心内网。
闻人屿收回目光。他在工单系统里提交了一条权限复核申请,备注栏写"例行审计,无异常"。然后继续假装查文档。
十一点四十分,隔壁有人招呼吃饭,几个人陆续起身朝门口走。顾言舟也站起来,经过闻人屿工位时停了一步:"一起去?楼下有食堂。"
闻人屿摇头,打字:"带饭了。"
顾言舟没勉强,点了下头就走了。脚步声混在人群里逐渐远去,办公室空了大半。闻人屿等门关严了,等走廊里的动静彻底消失,才从帆布包里摸出那半包受潮饼干,拧开保温杯抿了一口水。饼干含在嘴里慢慢抿化,有点黏牙,泡发的面粉在舌头上摊开,带着一股储存过久的油脂味。他一边嚼一边打开一个新的浏览器标签页。输入了一串看起来像随机字符的地址——暗网"废墟"论坛的一个备用入口。
页面加载,一串加密的帖子列表。他用"Silence"的密钥登录,看到最近三天"废墟"上两个他在意的帖子。一个匿名悬赏帖,悬赏对象不明,底下的讨论里有人提了一句"听说南宫的东西最近有人盯着"。另一个是一个老用户发的一条技术帖,内容关于某企业内网渗透痕迹的清理方式,回帖很少,但帖子里附了一段脚本片段。他翻到第二个帖子,目光在某一行变量命名上停住——那个清理脚本用的变量名规则,和他昨晚在日志里追踪到的跳板路径,用的是同一套缩写体系。他把那个片段认真看了两遍,记下了逻辑结构。帖子发帖时间恰好是顾言舟上周出差的那几天。IP跳板路径和他昨晚查到的异常流量有重叠。
他关掉页面,清了缓存。靠着椅背慢慢喝完保温杯里的水,窗外的云层开始变厚,阳光被遮断之后办公室里的光线暗了一截。他看着磨砂玻璃门后面那间空着的会议室,门上贴着一张蓝色标签:"核心网络机房·授权进入"。
下午两点五十分,办公室里的人陆续回来。顾言舟也回来了,手里端着杯新茶,坐下的时候侧头看了一眼闻人屿:"中午吃的什么?"
闻人屿打字:"饼干。"
"就吃那个?"顾言舟皱了皱眉。那个皱眉的幅度恰好到位,眉头聚拢的深度、眼角牵动的弧度,都踩在"得体关心"的坐标上。快了一瞬。像排练过的。
"楼下食堂挺便宜的,下次去试试。"
闻人屿点头,打了个"嗯"。
三点整,周例会在走廊尽头那间会议室开始。运维组五个人坐靠门位置,顾言舟在中间,闻人屿在最边上。leader四十出头,头发剪得极短,说话语速快,两页PPT翻完就进入了任务布置环节。闻人屿坐在角落,面前笔记本屏幕亮着,他在上面记了一些无关紧要的笔记——会议主题、deadline、几个名字——但注意力一直放在侧后方两米处那台终端机上。
嵌在墙壁嵌板里的那台机器,屏幕是暗的。它不参与普通业务,是运维组专门监控核心机房状态的"观察口"。理论上运维助理没有权限碰它,但闻人屿今天上午复核权限清单时留意到,原身的账号被分配了一个"机房监控终端·只读"的权限。闻人正阳安排进来的。对一个实习生来说偏高了。他不知道闻人正阳是怎么绕过行政审批流程加上的这个权限,但闻人正阳总有办法。
会议进行到中段。顾言舟发言了,语气依然温和,条理清晰,提出了一个关于"日志存储架构优化"的建议。他说了一串技术名词,leader听完点了点头说"你出个方案下周讨论"。闻人屿注意到,顾言舟说这段话的时候目光两次扫过那台终端机。每次扫过去,瞳孔多停留了半秒。
闻人屿在笔记边缘画了一个圈。
四点半,会议结束。人群往外涌的时候闻人屿慢了一步,落在最后一个。他站起来合上笔记本的一瞬间,那台终端机的屏幕突然闪了一下——待机状态亮了一瞬又暗下去。很短。但像针尖在视网膜上扎了一下。有人远程唤醒过它。
闻人屿没有回头。他把笔记本夹在腋下,跟着最后一个人走出会议室。回工位的路上他在脑中排了一条时间线:下午三点零七分到三点十一分之间,顾言舟在他的提案里加了一条"日志存储"的细项,那个时间窗口正好是终端机被唤醒的区间。提案里那条细项的逻辑结构,如果换个角度解读,完全可以作为一条数据回传通道的掩体。
顾言舟已经开始布了。提前了两周。
闻人屿坐回工位,打开内部通讯软件,点开顾言舟的头像,对话框是空的。他想了想,没发消息。现在还不是时候。他甚至不确定自己该站在哪一边。顾言舟是要偷南宫的东西,但闻人正阳让他来南宫也是偷东西。两颗棋子坐在隔壁工位,各自攥着刀,装作在削苹果。
下午五点半,有人开始收东西下班。顾言舟也关了电脑,拎起外套站起来,经过闻人屿工位时弯了一下腰:"明天见。有不懂的问我。"
闻人屿点头,在备忘录里打"明天见"三个字亮给他看。顾言舟笑了笑,转身走了。那个笑精准地停留在"友善同事"的样本区间里,嘴唇的弧度、眼角的纹路,无一偏差。
办公室在六点前彻底空了。闻人屿等到走廊安静下来,打开帆布包,把那块外置硬盘插到办公笔记本上。他调出下午会议期间偷偷记录的一组网络包分析数据——用手机录的音,回来转成了流量特征——快速过了一遍。确实有一条从外部跳板连接到机房终端的握手请求,时间戳在三点零八分,持续时间不到四分钟,请求特征和他昨晚日志里找到的编码习惯吻合。
他在硬盘里新建了一个文件夹,命名"cloud9",把今天所有证据存了进去。
做完这一切他拔掉硬盘,关掉电脑,拉上外套拉链。走廊里的声控灯在他经过时依次亮起,身后的灯光一段一段暗下去。电梯下行只有他一个人,数字匀速跳动,停在一楼。
走出大堂时天已经黑了。风比早上更冷,灌进领口他咳了一声,喉咙里的瘢痕扯了一下,铁锈味又泛上来。他站在台阶上停了两秒,看见马路对面一辆黑色轿车刚从辅路拐进来,车灯晃了一下又转走了。车牌没看清,但那个车型和前两周原身下班时几次在街角瞥见的车一样。有人在盯这栋楼。不一定在盯他。
他把视线收回来,走下台阶,朝地铁站走去。步子不快不慢,和任何一个加班到六点多的人没有区别。口袋里的手机震了一下,他掏出来看,一条新消息。发件人备注只有一个字:阳。
"进度如何"
闻人屿按灭屏幕,没有回复。
地铁进站时带起一阵裹着隧道湿气的风。他随着人流挤进去,抓着吊环站在门边。车厢里有个男人在打电话,声音很响,手机那头大概是他妻子,问他今晚回不回家吃饭。闻人屿侧过脸看着车门玻璃上自己的倒影,隧道壁上一闪而过的广告灯牌把那张脸切成明灭的碎片。他摸出耳机戴上,没有放音乐,只是需要听不见周围的声音。
地铁到站的时候他摘了一只耳机。出站到出租屋那段路走了七分钟,楼道里的声控灯有一盏坏了,他在黑暗中上了四层楼梯,摸出钥匙开门。出租屋里和他离开时一模一样,窗帘半拉,桌上那盒润喉糖在原处,糖盒盖子上落了一层薄灰。
他把帆布包放在椅背上,没有急着开电脑。靠在窗台边站了一会儿,看对面楼里零星的灯光,远处偶尔传来的车流声混着风声从窗缝里挤进来。
手机又震了一下。还是闻人正阳,这次多了一行字:"下周三之前给个准话。"
闻人屿盯着屏幕。下周三,顾言舟第一次动手之前两天。闻人正阳不知道顾言舟的存在,他以为闻人屿拖延是因为怯场或者犹豫。他不知道这盘棋上除了棋手和棋子之外,还有另一个玩家已经在落子。
闻人屿把手机扔到床上,没有回。
他坐下来重新打开那台办公笔记本。今天收集的数据已经加密存好,但他还需要做另一件事:把核心机房终端机的底层流量日志复制一份出来。不是为了找证据,是为了建一条基线。顾言舟动手的时候,他要能判断哪些改动是顾言舟留下的。他打开终端窗口,敲了一行连接指令。键盘声在寂静的房间里格外清晰,每一下像石子沉进水面。
连接成功。日志开始下拉,数据流一行一行向上滚动。他看得很慢,偶尔停在某个字段上翻看细节。这可能是最后一个"干净"版本。等顾言舟真正动手之后,这份日志就会被污染。虽然他的账号是"只读",但运维组的只读账号默认附带日志导出功能,这是系统架构师当年留的一条出口——闻人正阳知道这条出口,他也知道闻人正阳知道他。
窗外又起了风,窗帘被鼓起来一下又落回去。他侧头看了一眼,重新把目光放回屏幕。那盒润喉糖还在窗台上躺着,包装纸被风掀起一角,又安静地落回原位。
他看完最后一行日志,断开连接,清理访问痕迹。然后合上电脑,脱掉外套躺到床上,盯着天花板那根闪动的日光灯管。这根灯管从昨天就在闪,频率不均,有时候连着闪三下,有时候安静几分钟。像有人用摩斯电码在发送什么,但他没打算解码。他不想再读懂任何暗号了,至少今晚不想。
明天还要上班。隔壁工位那个人明天还会笑着说早上好,还会问他中午吃了没有,还会在键盘上敲出一行行无可挑剔的代码。而他也会继续扮演那个笨拙的实习生。他们各自攥着各自的刀,隔着一道绿植贴纸的玻璃隔断。
闻人屿翻了个身,把被子拉到下巴。喉咙里依然堵着那根铁管,但他已经学会了在它存在的情况下呼吸。他只是偶尔会想,原身用了多久才习惯。
天花板上的灯管又闪了一下。然后嗡鸣着稳住,没有再动。