《重岳》 第1章 重岳 蓉城工业大学毕业典礼安排在学术报告厅。上午十点,近千名学生把阶梯式座椅填得满满当当,**台上方的横幅被空调风吹得微微鼓动。陆维桢坐在第二排中间位置,衬衫袖口洗得发白但熨得平整。今天之后他就不再是学生了,这四年他几乎把所有的课余时间都泡在实验室和图书馆里,拿过两次国家奖学金,发过一篇材料科学核心期刊的二作。他以为这些积累能换来一些体面。 苏媛上台的时候掌声比之前的任何一位发言代表都热烈。她穿了白色套装,马尾扎得高而挺括,站在演讲台前的姿态从容自如。她讲的是“青年学子的责任与担当“,语调圆润流畅。讲到第三分钟的时候,台下不知从哪个角落传来一个男生起哄的声音,不高不低但足够让周围人听见:“苏媛,听说有人给你写了三十七封情书?什么人有这么大毅力啊?“ 笑声像是被点燃的纸捻,从那个角落向整个报告厅迅速蔓延。苏媛顿了一下,伸手调整了话筒架的高度。她的目光精准地扫过了陆维桢所在的位置,然后她在麦克风里说了一句话,声音不大但扩音系统把每一个字都送得清清楚楚:“我建议某些同学把写情书的精力用在提升自己上,不要整天做不切实际的梦。脚踏实地不好吗?“ 报告厅里的笑声膨胀成一片。有人吹口哨,有人朝第二排的方向扭过身来指指点点。陆维桢感觉到旁边座位的空气被无数道目光穿透了,那些视线像细针一样扎在他侧脸上。他握紧拳头,指甲嵌进掌心,从座位上缓缓站起来。他只想离开这间屋子,越快越好。 站起来的时候他右侧过道旁边坐着一个戴棒球帽的男生,那人伸出脚绊了他一下。陆维桢失去平衡,膝盖磕在座椅金属支架上,整个人扑倒在了过道的地面上。他的手机从裤袋里滑出来,屏幕朝上亮着——第三十八封邮件草稿的页面刚好暴露在过道的灯光下,收件人是苏媛的校园邮箱,标题写着“有些话想当面说清楚,但你可能不愿见我“。 离他最近的一个女生弯腰捡起了那只手机,举起来看了一眼屏幕,大声念出了邮件标题。笑声比刚才更刺耳,带着一种集体释放的恶意的尖锐。陆维桢趴在地上,额角磕出的血顺着眉骨往下淌,混着汗液模糊了视线。他能听见快门声——有人在用手机拍他,不止一台。 他挣扎着想爬起来,但膝盖撞出的钝痛和胃里翻涌的灼热感同时袭来。视野边缘开始发黑,地面瓷砖的纹路扭曲成漩涡状,笑声和快门声从四面八方涌进来像涨潮的海水。他最后看见的是**台上苏媛的背影,白色套装在聚光灯下刺目得像一块冰。 然后一切都沉下去了。 黑暗里响起一个声音。这次跟上次模糊的感觉不同——它清晰、冷静、带着极轻微的金属质感的共鸣:“检测到S级执念场叠加致命羞辱事件……天工系统绑定中……神经耦合保护层开启完成。宿主的情绪峰值暂时被压制在安全阈值以下,现在可以呼吸了。“ 陆维桢猛地吸了一口气。校医院的天花板是白的,灯管带着微微的频闪,吊瓶里的液体沿着输液管一滴滴往下走。他的额头被包了一块纱布,膝盖上的擦伤也涂了药。护士在门口探了一下头说“醒了?你昏了快两天,低血糖加急性应激反应,年轻人悠着点“,然后走了。 他等护士的脚步声完全消失在走廊尽头之后才抬起右手。视野里悬着一面半透明的深蓝色光屏,边缘流淌着细密的流光纹路。那个声音又在意识里响起来了,比刚才多了一点点说不清道不明的活泛:“天工系统已激活。当前权限:民用科技解锁。可用积分:一百。新手任务:七十二小时内完成一件具备市场价值的制成品。任务成功奖励:五百积分,开启军用科技权限。“ 陆维桢盯着那面光屏,它的边缘在微微跳动,像心脏搏动的节奏。他嘴唇动了动,嗓子干得发紧:“你是谁。“ “一段储存了高等文明全部科技火种的程序。通俗地说,一个知识库。但我建议你别跟任何人提起这段对话,否则你会被送进精神科。“那个声音顿了顿,“刚才那是幽默模块的尝试。成功了吗?“ “没有。“ “记录:第一次尝试失败。继续工作。“ 陆维桢把针头拔了。血珠从手背针眼渗出来,他没管。光屏上展开了一张淡蓝色的工艺图纸,标注着“三维交联石墨烯骨架+锂金属负极体系——民用级高密度储能单元“。原子层沉积参数、电解液配方比例、化成工艺窗口、充放电截止电压区间,大量数据像河流决堤一样涌入他的脑海,整个过程只持续了不到三秒。他发现自己完全理解了那些参数,就像自己已经在实验室里反复验证过上百次一样。 他把输液管从吊瓶架上解开扔进垃圾桶,从柜子里翻出外套穿上。推门出去之前,光屏又弹了一行字:“你额头的纱布很丑,建议贴小一点的创可贴。不,这条不是幽默模块,是个诚恳的美学建议。幽默模块暂时关闭了。“ 陆维桢扯掉了额头上的纱布,在路过洗手间时洗掉了干涸的血渍,换了一块小创可贴。走出校医院大门的时候,阳光猛地照在他脸上,他眯了一下眼。口袋里的手机还在,屏幕碎了但能亮,壁纸还是系统默认的蓝色背景。他翻了一下未读消息,二十三通未接来电来自室友和辅导员,两条消息来自苏媛——他没点开,直接划掉了。只是余光扫到第一条的预览:“听说你晕倒了,这事跟我没关系吧?“ 他把手机塞回口袋,朝东门那条街的老赵维修铺走去。光屏在他视野右侧浮着,新手任务的倒计时在右下角一跳一跳,底部还有一行更小的字:“顺便提醒一句,那个叫苏媛的女性。她在台上说你'做不切实际的梦'的时候,她父亲是远新能源的第三大股东。你手里的这张电池图纸,如果能量产,远新能源的核心产品线会在三年内被淘汰百分之七十。这就是所谓的戏剧性,不是吗?“ 陆维桢走着走着忽然停了一步。他侧过头,对着空气压低声音:“你知道远新能源?“ “我绑定了你的全部记忆和所有公开数据库。这件事如果你早告诉我你就不会写三十八封邮件了。“系统的声音依然是那种冷静的金属质感,“但你可能早就知道了,只是选择性忽略。不分析,纯观察。幽默模块依然关闭。“ 老赵维修铺的门面在梧桐树的荫影里。陆维桢推门进去的时候,老赵正拿酒精棉擦一台旧笔记本的屏幕,看见他的额头就放下了手里的活:“小陆你怎么了这是?额头怎么回事?“他说着目光从他额头的创可贴滑到他眼底那种沉下去的光泽,嘴巴张了一下又合上了。 “赵叔,“陆维桢把背包放在柜台上,“你那台真空溅射机还闲着吗?“ “闲着。你要干啥?“ “做一组电池样品。“陆维桢拉开背包拉链,从里面抽出一张空白的打印纸,在柜台上用笔飞快地画了一个极片叠层结构的草图递给老赵,“材料清单我回头给你,电费算我的。成了利润你分四成。“ 老赵接过那张纸看了半天,翻过来倒过去看了两遍,上面的分子结构式和工艺参数对他来说像天书,但他认识陆维桢这个人。这小伙子三年来在他这里修过十几次电脑和手机,每次都把机器擦干净了才还给他。他看了看陆维桢额头上的创可贴,又看了看那些在他眼里只认得“碳““锂“几个字的结构式,最后拍了一下柜台面:“整。“ 凌晨两点十七分,维修铺后间真空泵低鸣着运转,观察窗里幽蓝色的辉光均匀地覆盖在基底表面。陆维桢坐在操作台前的圆凳上盯着沉积参数,光屏在他的视野里实时显示着每一层薄膜的原子排列状态。系统的声音忽然响了一下:“第一层沉积完成率百分之百,晶格匹配度百分之九十九点七。顺便说一句,你现在的表情比你写第三十八封邮件时好看。“ 陆维桢没有回应。他盯着观察窗里那片正在生长的银灰色薄膜,窗玻璃上倒映出他自己的脸,额角的创可贴边缘卷了一点点起来,但目光很亮。窗外梧桐树的轮廓被凌晨的路灯勾出一条模糊的金边,远处有一辆夜班公交车轰鸣着驶过街口。 他低下头,光屏底部弹出一行细如发丝的灰色文字:“新手任务预计在明天下午四点前完成。提前准备一下后续步骤:这张电池图纸如果公开,你会在七十二小时内被至少三股力量注意到。其中之一是国内的人。其中之一是境外的。“ 陆维桢把圆凳往前挪了半寸,离观察窗更近了一点。幽蓝色的光映在他的瞳仁里,像夜里远处海面上的微火。 第2章 开刃 天亮之前最后一批样品出炉。陆维桢从真空腔内取出四片完整的软包电池,用万用表测了开路电压,每片之间的差异小到可以忽略。他把样品挨个贴上标签,编号从一到四,用无尘布反复擦拭了极耳触点,才装进硬质塑料样品盒里。 老赵趴在旁边的一张旧办公桌上睡了过去,头枕着交叠的小臂,呼吸均匀厚重,鬓角的白发在日光灯的冷白光下显得格外扎眼。他的手机屏幕亮着,显示正在播放一段京剧折子戏,音量被调到最低一格,只听见若有若无的锣鼓点子在空气中浮动着。 陆维桢没有叫醒他。他把样品盒放进背包,留了一张字条压在样品盒原先占据的桌面位置,上面写了自己的手机号新卡和一句“谢谢赵叔“。推门出去时天已经全亮了,东方的楼宇缝隙间透出橘红色的一段晨光。 他回到学校宿舍收拾了最后几件东西:笔记本电脑、两本专业书、换洗衣物、和一张放在抽屉最底部的校园一卡通。室友不在,桌上留着半袋饼干和一罐开了没喝完的汽水。他把床铺整理好,把钥匙留在桌上,背着包出了门。系统光屏在他视野右侧安静地浮着,上面跳出了一个倒计时:“新手任务剩余时间:六小时四十分。建议前往蓉城新能源产业峰会会场。你那张展板已经打印好了。“ 陆维桢从背包侧袋摸出那卷事先通过在线打印服务定制的A0尺寸技术展板。他昨天晚上趁沉积间隙登录网上下单了加急打印,收货地址选了一家离会展中心最近的便利店。他去取的时候,收银员小姑娘把卷成筒状的展板递过来时说了一句“哇这个好重“,他接过来掂了掂,确实厚实,用的是最好的防水哑光纸。 蓉城新国际会展中心大门外挂着“全国新能源产业峰会“的红底白字横幅,入口处排着几条队伍,扛着长枪短炮的媒体记者和穿西装挂胸牌的企业代表分列两侧通道。陆维桢没有胸牌,他站在入口旁边的消防通道门等了大概十分钟,等一个穿着橙色环卫马甲的老大爷推着清洁车从里面出来的时候,他侧身从门缝里闪了进去。 峰会已经进行到第二天上午的分论坛环节了。主会场在直播院士报告,但新能源电池分论坛的展板区相对安静,只有七八个穿白大褂或休闲夹克的技术人员在几块自由投稿的展板前驻留。陆维桢找到一块空置的展板位置,把装订绳在金属横杆上绕了两圈系牢,从卷筒里抽出那张A0展板展开铺平挂好。 他往后退了两步打量自己的展板。标题用的是粗黑体:“三维交联石墨烯骨架复合锂金属负极——能量密度突破四百五十瓦时每公斤的实用化路径“。底下一整片密密麻麻的工艺参数、材料配比、化成窗口和良率测算表格。右上角贴了一张他用手机拍的样品照片,四片银灰色的软包电池并排摆在白纸上,旁边放了一把直尺做参照物。整块展板规整到不像一个本科生能拿出来的东西,倒像是某个做了十几年的老实验室的成果简报。 旁边有一块自由投稿展板的主人是个穿条纹衬衫的年轻博士生,贴的是“高比能锂硫电池界面改性方案“,正在跟两个路过的人讲解自己做的界面修饰层。他余光瞥到陆维桢挂好展板之后主动递了一张名片过来,很友善地说:“你也是投稿的?哪个组的?“ 陆维桢接过来看了一眼名片上的名字和学校,摇了摇头:“没组,个人。“ 那博士生愣了一下,然后伸头去看陆维桢的展板。他扫了一眼标题,目光移向下面的参数表格,然后整个人顿住了。他凑近了大概三十公分,鼻尖几乎要贴到哑光纸表面,来回看了两三遍,下巴的线条绷紧了。 “你这组能量密度数据……实测值?“他转过身来看着陆维桢,语气里的友善被一种严肃取代了,“四百六十三瓦时每公斤?循环三千两百次?你这组化成工艺的温度窗口我没见过,哪个期刊发的?“ “还没发。“陆维桢说,“样品在这里,你可以拿去测。第三组数据是最好的一组,首效百分之九十三点二。“ 那博士生还没来得及接话,旁边已经聚过来五六个人。其中一个戴金丝眼镜的中年人从人群中挤到前排,俯身仔细看了展板上的化成工艺参数表格,然后抬起头对着陆维桢问了一句:“你这个原子层沉积的流程里,脉冲时间给的是零点八秒,一般来说零点五秒就足够覆盖了。多出来的零点三秒有什么考虑?“ “基底边缘效应。“陆维桢看着他回答说,“零点五秒在平面区域够用,但锂金属负极的实际表面有微米级凹凸结构,零点八秒可以把凹坑底部也覆盖完整。扫过截面电镜了,覆盖率提升百分之十七,对循环寿命有直接影响。“ 中年人推了一下眼镜,没有说话,掏出手机开始拍展板的每一部分。周围聚的人越来越多,有人垫着脚从后面伸手机拍,有人掏出笔记本在记录参数。那个年轻博士生已经退到了人群外围,手里捏着那张被遗忘的名片,看着陆维桢的眼神变得很复杂。 就在这时从人群外面传来了一个声音,嗓门粗,带着金属质的穿透力:“四百六十瓦时每公斤?这组数据如果是真的,我当场把这半瓶水喝了。“说话的人穿一件深蓝色polo衫,胸牌上印着某知名新能源企业的研发总监字样,旁边跟着三个助理模样的人。他挤到前排站定,双手抱臂看着展板,嘴角挂着一抹明晃晃的嘲讽。 陆维桢看了他一眼,从背包里取出编号为三号的样品电池,又从侧袋掏出一只便携式充放电测试仪——老赵店铺里的备用件,借出来之前打了招呼。他把电池接上测试仪的夹具,把屏幕转向围观的人群,按下启动键。屏幕上跳出了实时充放电曲线,电压和容量数据开始平稳上升。 “实测数据目前跑了七分钟。“陆维桢把测试仪举高了一点让更多的人看见屏幕,“第一批完整的循环数据大概要四十分钟出来。但你们可以先看首圈的充电容量——目前已经跑到设计值的百分之九十八了。“ 穿polo衫的总监凑近了看测试仪屏幕,嘴角的嘲讽开始收拢。他盯着爬升的数据曲线看了接近一分钟,从下巴的线条逐渐紧绷成了紧闭的唇线。他旁边的一个助理低下头用手机快速敲了一行字发了出去。 四十分钟后,首批循环数据完成。测试仪屏幕上的数字定格在一个所有人都在等的位置:能量密度四百六十三点二瓦时每公斤,首效百分之九十三点一,容量保持率百分之九十九点七。陆维桢把测试仪从夹具上取下来,把编号三号样品重新装进样品盒里收好。现场一片安静,连那个年轻博士生的呼吸声都听得到。 穿polo衫的总监扭头对助理说了一句什么,转身走了。他走之前步子比来的时候快了半拍,手伸进兜里摸手机的动作不太自然。 展板前面重新安静下来之后,陆维桢感觉到人群的密度在悄悄变化——有人退出去打电话,有人站在原地继续拍,还有人从侧后方挤进来举着手机录像。他自己靠在旁边的消防栓箱上,背包带勒着肩膀的旧伤还有点酸。视野里的光屏弹出一行文字:“新手任务完成进度:数据验证通过。你的表情管理比昨晚好。幽默模块仍然关闭。“ 这时人群外围传来了一个声音,苍老而清晰,带着一点不疾不徐的沉稳:“麻烦让一下,我过来看看。“围观的人群自动分开了一条通道。一个头发花白的清瘦老者从通道里走到展板前面,穿一件深灰色西装,里面是白衬衫,领口没有打领带。他身后跟了四个年轻人,其中两人手里拎着黑色的设备箱。 老者从西装内袋掏出一副老花镜戴上,俯身凑到展板前一行一行地读。读得很慢,有些地方他停下来用手指点着表格里的数字轻声念了一遍。他读到第三遍的时候手指在能量密度的数字上停住了,然后他直起身,摘下老花镜,回头扫了一圈周围的人:“这块展板谁贴的?“ 陆维桢从消防栓箱旁边站起来走了过去:“我贴的。“ 老者打量了他几秒,目光从他额角的创可贴移到洗得发白的衬衫领口,又移到他的眼睛。他点了点头:“你东西带着?“ “带了。“陆维桢拍了拍背包,“编号一和二的两片样品在包里,编号三刚才跑了四十分钟数据,温度稍微有点高。编号四备用。“ “找个地方,重新跑一遍。“老者转身对身后一个拎设备箱的年轻人抬了抬下巴,“去三楼小会议室,把台架搭起来。我要看满循环。“他回头看向陆维桢,朝展板方向扬了一下头,“你带上板子,一起过来。“ 陆维桢收起展板卷好放进背包,跟上老者的步伐穿过展板区走向电梯。走到电梯口的时候老者侧过头问他:“你叫什么?“ “陆维桢。陆地的陆,维系的维,桢干的桢。“ “维桢。“老者重复了一遍这两个字,嘴角弯了弯,“《诗经》里的词。你知道什么意思?“ “王国克生,维周之桢。国家栋梁的意思。“ 老者按下了电梯三层的按钮,电梯门合拢前他看着陆维桢的眼睛说了一句话:“那就看看你是不是这块材料。“ 陆维桢靠在电梯内壁上,背包里的样品盒贴着后背传来微弱的温度——三号样品跑了四十分钟测试还没完全冷下来。他的视野里光屏底部多了一行细密的灰色文字:“张启明,龙科院材料研究所所长,国重实验室主任,中科院院士。他出现在这里意味着你接下来的七十二小时会彻底不一样。顺便提醒,那瓶水他最后也没喝。“ 电梯门在三楼敞开的时候,走廊尽头已经有人把便携式测试台架摆好了。陆维桢走过去从背包里取出样品盒时,光屏又弹了一行极小的字:“远新能源的股价在今天上午十一点十四分开始小幅下跌,目前跌幅百分之一点二。你觉得这跟某个人的展板有关系吗?“ 陆维桢没有回答。他把样品接上测试仪的夹具,转头看向张启明。老人坐在旁边的折叠椅上,摘了花镜捏在手里,正看着他。日光灯的光落在老人花白的头顶和陆维桢额角微微卷起的创可贴上,窗外会展中心巨大的屋顶钢架在天幕下投出鳞次栉比的影子。 光屏角落里还藏着一行没主动弹出来的字,细得像蛛丝:“检测到一条来自境外学术数据库的访问记录。有人从比利时鲁汶的IP地址下载了蓉城新能源峰会的议程表。下载时间是二十六分钟前。“ 第3章 入局 测试台架在十一点四十三分完成了第一组满循环。张启明一直坐在折叠椅上没离开过,偶尔站起来走到台架旁边看实时数据曲线,更多的时候只是安静地捏着那副老花镜。他身后的两个年轻人轮换着记录数据,另一个负责检查夹具接触电阻和温度传感器的读数,每一步操作都被标上了精确的时间戳。 当循环容量保持率落在设计值百分之九十九点七时,张启明终于从椅子上站了起来。他没有说话,先是走到台架侧面蹲下检查了一遍所有接线端子的紧固程度,然后从西装口袋里掏出一支钢笔,在一张白纸背面写了几行数据,对照测试仪屏幕又核验了一遍。他直起身时看着陆维桢问了一个问题:“你用什么设备做的样品?“ “东门外面一家维修铺的真空溅射机。“陆维桢说,“型号是旧款的SPI-200,加热模块有老化,我改了温控算法补偿。镀膜腔体密封圈漏气率偏高,所以在沉积参数里把基底温度往上抬了八度做补偿。“ 张启明听完之后闭了一下眼睛。他睁开眼的时候眼角纹路明显比刚才深了一点,但语气没有波动:“那个维修铺的机器,额定真空度是多少?“ “出厂标称十的负五次方帕,实测漏气之后只能到十的负四次方帕。“ “在漏气率高一整个量级的设备上,做出了对标全球顶级实验室的薄膜均匀性。“张启明把钢笔帽拧回去,放回西装内袋,“你那个温控补偿方案是怎么算的?“ “菲克第二定律做扩散修正,把漏入的残余气体分压作为边界条件代入,然后反推了沉积速率和温度之间的耦合关系。“陆维桢从背包里摸出昨晚在维修铺后间用记账本背面做的几页推导草稿递了过去。 张启明接过草稿翻了一遍。纸是横条信笺,字写得密而工整,公式旁偶尔有被他用红笔圈过的地方——那是陆维桢自己反复检查时留下的标记。张启明翻到最后一页看完,把草稿纸折好放进了自己西装的内袋里,然后对旁边一个年轻助理说:“把特招表格给我。“ 助理从文件袋里抽出一张带红头的表格递过来。张启明接过来在旁边的会议桌上铺开,从口袋里掏出钢笔拧开,在推荐人一栏签了自己的名字,然后把表格转过来推向陆维桢:“特招进龙科院材料研究所,编制挂在基础理论部,实际工作跟着我的专项组走。你现在填基础信息,剩下的事情我来处理。“ 陆维桢接过表格低头看了一遍。表格上的单位名称是龙国科学院材料科学研究所,地址栏后面跟着一串加密的内部编号,推荐人签名栏里的字迹遒劲有力。“天工“系统的光屏在他视野里微微闪了一下,弹出一行小字:“注意:如果你现在签这张表,你的个人档案会在二十四小时内进入国家保密人员目录。届时所有出入境、通讯、社交网络行为都会被纳入监控保护范围。签字之前确认你准备好了。“ 陆维桢没有停顿。他从张启明手里接过钢笔,在姓名栏里写下了自己的名字。“维“字写到最后几笔时钢笔的出墨稍微有点涩,他用力压了一下笔尖让墨迹完整地走完最后一折。填完基础信息后他把表格推回去,合上笔帽还给张启明。 张启明把表格收进文件袋,又看了一眼陆维桢额角微微卷边的创可贴:“你额头的伤口换过药?“ “校医院处理过。“ “回去之后找医务室重新消毒,创可贴不要贴超过半天。“张启明站起身把折叠椅折好靠墙放好,拿起文件袋朝门口走去。走到门口时他侧过身,目光在陆维桢身上停了一下,“下午三点龙科院北区三号楼有人接你。带上你这四片样品,一张都别少。“ 张启明走了之后小会议室里只剩陆维桢和那个负责操作台架的年轻助理。助理开始收测试设备,陆维桢帮他把夹具卸下来放回设备箱里。两个人谁也没多说话,收完东西之后助理拉开门朝他点了下头:“三点北区三号楼门口,有人等你。“ 会议室安静下来以后陆维桢才重新坐下来,后背靠住椅背,感觉到腰椎的位置微微发酸。他掏出手机看了一眼,碎屏上的时间正好过了十二点。未读消息的图标又跳了新数字,是室友发的一条:“我靠你上学校论坛了,有人把你昨天在报告厅的照片发了帖子,评论都过两百了。你没事吧?“ 陆维桢没有点进去看。他把手机翻了个面屏幕朝下扣在桌面上,光屏在他的视野右侧安静地浮着,底部弹出了一行信息:“比利时鲁汶那一条下载记录的IP被二次追踪了。下载时间二十六分钟前这个信息没错,但那个IP通过多层代理跳转了至少四个国家。真正的源地址在比鲁汶往东大约三十公里的一个非大学园区。“ 陆维桢看着那行字,手指无意识地在桌沿敲了两下:“能定位到具体建筑吗?“ “暂时不行。但那个非大学园区的电信服务商名称和某家精密加工企业的集团采购记录有交集。该企业的业务范围包括特种磁性材料器件,工厂分布在东欧和东南亚两地。“光屏上的字停顿了一下,然后追加了一条,“我不建议你现在深挖这条线。你首要处理的是下午三点的接头。“ 陆维桢起身收起桌上剩余的测试线缆和夹具,把背包重新拉好。他走出小会议室经过走廊时透过一扇落地窗看到了外面的街景——会展中心北广场上停着几辆深色SUV,有穿风衣的人站在车门旁边抽烟,姿态松散但视线始终在扫视广场上进出的人群。烟头的火光在正午的阳光下几乎看不见,但那人吐出的烟气飘向的方向跟他面朝的方向之间隔着一个微妙的夹角,说明他站的位置其实一直在保持一个随时可以侧身掩护的观察角度。 陆维桢收回视线从另一侧出口离开了会展中心。他沿着人行道走了大约十分钟找到一家面馆,进去点了一碗素面。吃面的过程中他打开了手机上的地图软件搜索“龙科院北区三号楼“,地图上只显示了一个模糊的区域轮廓,没有具体的建筑细节。 系统的光屏在他吃面时又跳了一下:“龙科院北区三号楼属于材料研究所二期的实验楼群,地表三层地下五层。地下三层的空调系统进风管道改造记录显示三年前进行过一次静音化处理,通常这种降噪工程只在大型精密仪器实验室才会做。你可能下去之后会听到一种比较低的嗡嗡声。“ “什么嗡嗡声?“陆维桢低头吃面,嘴唇间挤出半句话。 “大型电磁屏蔽室内部配套的主动消声系统。顺便说一句,面该拌了,不然会坨。“ 陆维桢夹了一筷子面送进嘴里,确实开始坨了。他加快速度吃完面结了账,走出面馆时正午的太阳当头照着,街面上的沥青被晒得微微发软。他沿着导航方向走了大约二十分钟,街边的建筑从商铺和住宅逐渐变成了高耸的围墙和铁栅栏。围墙上每隔一百米嵌着一块铭牌,白底红字写着“龙国科学院蓉城园区“。 北区三号楼是一栋六层的灰白色建筑,表面没有任何标识,连楼号牌都没有。楼前的门禁系统配了指纹和虹膜双重识别,旁边站着一个穿黑色夹克的中年人,寸头,脖颈侧面一道旧疤从耳后斜进领口。他的站姿看着随意,但重心落在前脚掌上,说话之前已经完成了对陆维桢这个人的整体扫描。 “陆维桢?“中年人伸出手,手掌宽大,指腹茧层厚实,“周承岳。张院士让我在这等你。跟我走。“ 陆维桢跟他握了手。周承岳转身刷开楼门时侧头看了他一眼,目光从他额角的创可贴扫到肩膀上背包带的勒痕,然后收回视线推开了门:“地下三层比较冷,你进去之前把外套拉上。那四片样品在包里带着吧?“ “带着。“ “好。“周承岳走在前面刷卡按了电梯的负三层键,电梯门合上之前他随口说了一句,“另外,你那个展板的数据今天中午已经被国际材料学会的预印本平台收录了。有人帮你投的稿,没署名。“他顿了顿,看着电梯面板上跳动的楼层数字,“你在会展中心给那帮人看数据的时候,至少有十七个不同单位的参会代表拍了照片。其中一张发到了一个境外学术讨论组里,刚才已经被转发到比利时那边了。“ 陆维桢靠在电梯内壁上,背包里的四片样品隔着布料贴着他的后背。“天工“系统的光屏在电梯门合拢的瞬间无声地弹出了一行字,字色比平时深了几分:“比利时那个转发动作的链路特征和你之前收到的峰会日程下载来源一致。它们之间有一条线,比我想的更短。“ 电梯停了。门打开的一瞬间冷空气和极低的通风声扑面而来,陆维桢外套的拉链被他无声地拉到了最高处。他跨出电梯门之前余光扫到了走廊尽头那具安静的金属骨架的影子,在灯下暗沉地立着。天工系统的光屏底部多了一句话,收尾处微微泛着一丝比深蓝更暗的色调:“幽默模块重新激活尝试中。你在面馆吃得有点狼狈,但比昨天在报告厅摔那一跤体面。“ 他脚步没停。 第4章 承重 陆维桢跨出电梯门时冷空气裹着淡淡的臭氧味扑在脸上。走廊大约十五米长,尽头是一扇双开钢制防火门,门缝渗出的白光把地面切成一道笔直的光带。周承岳走在前面刷了门禁卡,防火门的电磁锁发出一声干净的解锁咔嗒,门朝两侧滑开。 白光涌出来的时候陆维桢眯了一下眼,然后他看见了那具骨架。 大厅比走廊的温度还要低两三度,穹顶的灯矩阵将整个空间照得白亮如昼,四周墙壁上嵌着整面整面的铅灰色金属板——电磁屏蔽网在光线下泛着极淡的冷金属光泽。大厅中央的转台铁架上矗立着一具灰黑色的金属骨架,高度大约到成年男性的胸口偏上位置,髋关节和膝关节处堆叠着粗壮的液压缸体,不锈钢管路像裸露的血管一样从腰部一直延伸到脚掌,表面反射着灯光,管壁上有几处漆面剥落露出的锈色斑痕。骨架的脚底固定在四只承重传感器平台上,传感器连线沿着铁架支柱向下汇入地面的接线槽。 陆维桢站在距离骨架大约三米的位置停下。他没有说话,只是仰头从脚踝开始缓缓往上扫视了一遍整具骨架的构型。液压缸的密封件外圈渗着轻微的油渍,管路固定卡箍有几颗螺丝的十字槽被拧花了,膝关节处的驱动阀组外壳表面留着一排绝缘胶带缠绕过的痕迹。这些细节在他视线经过时被“天工“系统的视觉分析模块逐条标注了出来,光屏上浮现出对应的磨损评估和故障概率数字。 “这是重岳零号。“周承岳走到骨架侧面,伸手在髋关节外壳上叩了两下,金属声沉闷短促,“三年前由七零三所牵头设计,总投入两点七个亿。设计指标单兵负重一百二十公斤、越野时速二十公里、连续工作八小时。但液压伺服系统响应延迟从第一批样机出来就卡在零点二四秒左右,始终压不进设计目标的零点二秒以内。去年冬天寒区测试,一个战士做快速转向时右膝响应滞后,整个人侧摔在冰面上,髌骨骨折。“他顿了一下,“测试之后这具骨架就封存在这里了。“ 陆维桢向前走了两步,在骨架的右膝关节前面蹲下来。他用指腹摸了摸液压缸活塞杆与缸体接缝处的密封圈,手指上沾了一层薄薄的黑色油泥。他放在鼻端闻了一下——铁磁性磨屑混着液压油氧化的酸味。“天工“系统的光屏自动展开了一幅三维剖面图,把液压缸内部的磨损区域用高亮色块标注了出来,旁边跟着一行建议文字:“活塞杆密封圈已超过服役寿命,缸体内壁磨痕深度十二微米,建议整体更换驱动方案。“ 他站起来的时候周承岳正看着他。“怎么样?“周承岳的声音很平,但陆维桢注意到他背在身后的右手食指在无声地轻叩。 “液压系统全拆。“陆维桢转过身来面对他,“关节里的所有齿轮箱、传动轴、伺服阀全部移除。换成磁流变液驱动,力矩由流体剪切应力直接提供,中间不经过任何机械转换环节。响应延迟可以从现在的零点二四秒压到十毫秒以下,同时骨架总重能减掉至少三十公斤。“ 周承岳右手食指的轻叩停了。他看着陆维桢大约三秒钟,没有说话。大厅里的通风管道送风声在两人之间填满了那段短暂的沉默。然后周承岳从夹克侧袋里掏出一部加密手机,拨了一个短号,接通后只说了两句话:“来地下三层,带上你的测试箱。对,就是现在。“ 他挂断电话,把手机收回夹克侧袋。陆维桢注意到他拇指在手机边框上多摩挲了半秒——这是他在处理“需要再确认的事情“时的习惯动作,但问出来的话非常直接:“磁流变液的军用配方你熟?“ “基础液用改性硅油,磁性颗粒选羰基铁粉包覆二氧化硅壳层,粒径分布三百到五百纳米。“陆维桢走到操作台前抽了一支马克笔,在桌面上那张满是液压系统参数图纸的空白处画了一个简单的驱动结构简图,“激励线圈走闭合磁路,用纳米晶磁芯做磁路闭环降低漏磁,外壳用石墨烯复合材料做电磁屏蔽。感知这块不用侵入式电极,用电容式肌电贴片做表面信号采集。精度够,且不需要开颅手术。“ 周承岳走过来低头看了一眼那张简图。结构画得很草,但关键部件的布局关系和尺寸标注都清楚,连激励线圈的匝数和线径都在旁边用括号注了推荐值。他看了一会儿,把那张草稿纸拿起来对着灯光看了一遍背面,确定没有遗漏的信息之后折好放进了自己的夹克内袋。 “你等着。“他说完转身走向大厅东侧的一个小隔间,推门进去了。 陆维桢独自站在大厅中央。他重新走到重岳零号骨架前面,绕着它走了一圈,视线沿着液压管路的走向一一比对系统中给出的磁流变液改造方案。光是重新布线这一项就能省出至少八公斤的重量,更不用提彻底移除齿轮箱之后关节体积会缩小的部分。他可以预见到改装完成后骨架轮廓的变化——会更收敛、更流畅,重力分布沿髋膝踝的轴线自然下沉。 “天工“系统的光屏在他视野里亮了一下:“外部进度更新。国际材料学会预印本平台已在北京时间下午两点零七分正式收录了你的展板数据,投稿人署名为'张启明等'。目前预印本下载量已超过四百次,IP来源分布在十七个国家和地区。其中一组来自比利时列日的访问轨迹在下载完成之后继续访问了平台服务器的日志接口,这是非正常行为。“ 陆维桢的脚步在骨架的左脚跟前停了一下。光屏上的字继续:“比利时列日那个行为已经被平台端安全机制拦截了,日志接口返回的是空白数据。但对方的访问时间点在预印本上线后第三分钟。非常快,说明有人在提前等待这个链接出现。“ 隔间的门打开了。周承岳走出来,身后跟着一个穿白大褂的年轻女人。她手里拎着一只军绿色的硬质测试箱,另一只手的手机屏幕亮着,上面是一组正在实时刷新的频谱曲线。她的白大褂下面是一件深灰色长袖T恤,袖口卷到了小臂中段,露出的前臂线条瘦而紧实。她走进大厅之后目光从周承岳身上掠过,直接落在了陆维桢身上,然后扫了一眼他身后的骨架。 “顾晏。“她把测试箱搁在操作台上,伸过手来,指腹有零星几处焊锡烫过的白痕,“电磁兼容组。周组长说你要做磁流变液关节的激励线圈?“ 陆维桢跟她握了手,掌心干燥,力道适中:“线圈走闭合磁路,纳米晶磁芯做磁路闭环。但交变工况下的温升会使磁导率漂移,我准备用三绕组结构做温度补偿。主绕组跑工况,补偿绕组接热敏电阻分压网络做闭环调节,第三绕组空置做感应电压监测。温升每增加一度,补偿绕组电流下调零点零三毫安,把磁通密度维持在设计值的正负百分之一以内。“他说完之后看着她,“你觉得可行?“ 顾晏没有立刻回答。她转身弯腰打开测试箱,从里面取出一块备用的纳米晶磁芯样品放在操作台上,然后从白大褂口袋里抽出一张折过的A4纸展开平铺在磁芯旁边——上面是她手写的温漂基线测试数据,每一行都标注了实验条件和误差区间。她把纸往陆维桢的方向推了推:“这是我前天在屏蔽室里跑的一组原始数据。你先看看对得上你的补偿逻辑不。对得上我就开始绕线圈,对不上你把我纸拿来重新画。“ 陆维桢接过那张纸低头扫了一遍。数据记录得非常细致,从零下四十度到零上八十五度每隔五度取一个测量点,每点的磁导率变化都做了三次重复取平均值,误差棒标注清楚。他脑子里“天工“系统的验证模块正在自动交叉比对,所有数字逐一匹配之后弹出一行结果:“数据质量合格。温漂趋势符合理论预期。“ 他把纸折好递还给顾晏:“对得上。你的数据采集方法很规范,重复性误差控制在百分之一点二以内,可以直接用。还有,“他指了指她纸上末段一行被涂改过的数字,“你测到八十五度那组数据第一次写的时候偏高了三个百分点,然后你重测了。那组涂改现在看是对的,你重测之后的数值更贴近实际。“ 顾晏接过纸的动作停了半秒。她低头看了自己涂改过的那行数字一眼,视线回到陆维桢脸上时微微动了一下——幅度很小,但陆维桢注意到了。 “你眼神不错。“她把纸收进白大褂口袋,转身把测试箱扣好,拖过来一把椅子在操作台前坐下,开始翻箱子里面的漆包线轴和绕线骨架,“周组长说你要拆骨架是今天之内?“ “今晚开始拆右腿。“陆维桢说。 “那我先绕一组线圈样件出来。“顾晏把第一卷漆包线的端头拉出来缠在绕线机的固定柱上,头也没回,“你那份补偿逻辑里的温度系数公式写一下给我。“ 陆维桢走到操作台侧面重新拿起马克笔,在白板空白处写了三行公式。笔尖在白板上划出干脆的声响,周承岳站在门口看了他们两个一眼,没有打扰,转身朝电梯方向走去。他走了几步之后侧过头补了一句话:“国际材料学会那边的预印本已经正式收录了。张院士让我转告你:从现在开始,你在公开网络上的任何痕迹都会被定期筛查。“ 陆维桢写完最后一行公式放下马克笔,转头看着周承岳的背影走进电梯。电梯门合拢之前他听到周承岳的手机在响,接起来之后只说了“嗯“一声就挂了。 白板上的公式墨迹还没干透,顾晏的绕线机已经开始嗡嗡转动了。她背对着他坐在操作台前,后背的线条在白大褂下面专注地前倾。大厅里那具重岳零号的液压骨架在灯光下投出一道宽阔的暗影,覆盖了转台周围半圈地面。陆维桢站在白板和骨架之间的空地上,光屏的右下角安静地浮着一行浅灰色的小字:“比利时列日的那个访问者现已定位到一座注册在工业园区的数据中心。该数据中心所在园区与某精密加工企业同属一个集团。该企业的东南亚工厂于十四小时前提交过一份特种磁性材料的出口许可申请,目的地是蓉城保税区。“ 陆维桢把视线从光屏上移开,落在顾晏绕线机轴心那根漆包线匀速转动的弧线上。她能听到绕线机的嗡鸣声,但听不到他脑子里那些字。 他朝骨架的方向走了一步。右膝关节液压缸外壳上那排绝缘胶带缠过的印记,在他视线下被系统标记出了残留的指纹。 第5章 暗涌 陆维桢蹲在骨架右膝关节前面,从外套口袋里掏出一支细头记号笔,在绝缘胶带缠过的位置旁边画了一条浅浅的标记线。他没有直接触碰那些胶带,因为“天工“系统在他视野里标注出了残留指纹的位置分布——三枚,分别在大拇指和食指的接触区域,排列角度跟拆卸或检查液压阀组时的持握姿势完全吻合。 “这些指纹的位置,“陆维桢的声音压低到几乎只有他自己听得见,“是在检修的时候留下的还是安装的时候留下的?“ 光屏上弹出一行字:“指纹叠加层分析显示,最上面一层的油脂氧化程度比下层轻约三十个百分点。说明最近一次接触发生在封存之后。封存前安装人员留下的指纹已经被氧化层覆盖了,而这组新指纹覆盖在氧化层上面。“ 最近有人在这具骨架被封存之后打开过它的膝关节外壳。 陆维桢直起身,没有立刻把这个发现说出来。他转身走向操作台,顾晏已经把第一组线圈样件的骨架绕好了,正在用万用表逐匝测试通断。她没有抬头,但话是朝他说的:“漆包线用了零点四毫米线径,匝数按你画的简图标的那个数绕的,电感量等会儿上电桥扫。“ “你测完告诉我数据。“陆维桢站在操作台侧面,用马克笔在一张空白纸上写了几行字。他写的内容很简洁:重岳零号右膝关节最近被打开过,指纹覆盖了封存后的氧化层。他把纸折好放在操作台角落不起眼的位置,用一只工具盒压住一角。 顾晏的绕线机动了一下,她抬起头看了一眼陆维桢放纸的动作,又看了一眼纸的位置,什么也没说,低下头继续测线圈。 大厅的通风系统在下午三点左右有一次自动切换,送风声短暂地变了一下频率又恢复正常。陆维桢利用这个噪音窗口低声说了一句:“你桌上有组数据我刚放过去,看完了收好。“ 顾晏的万用表探头没有停顿。她继续测完了最后一组通断数据才放下工具,把被测线圈放在测试台上,伸手去拿旁边的校准电阻箱时“顺带“把那张纸从工具盒底下抽了出来。她低头扫了不到两秒就把纸叠成细条塞进了白大褂侧面的口袋里,动作快到不盯着看根本察觉不到。 她放下电阻箱时开口说话的声音恢复正常音量:“线圈电感量刚才粗扫了一遍,跟你的设计值差了大概百分之四。绕线张力没控制均匀造成匝间间距波动,我重绕一组。“ 陆维桢点了点头:“我出去打个电话。“他走向大厅东侧的小隔间——就是之前周承岳进去找顾晏的那个。隔间里有一张简易办公桌、一把椅子、一台内线座机,墙上挂着白板和最新的消防疏散图。他掩上门但没有关严,留了一条约莫两指宽的缝隙。 他掏出自己的碎屏手机,打开了地图软件定位蓉城保税区的位置。屏幕上的蓝色坐标点落在城南一片网格状仓储区的边缘,距离他现在的位置大约二十公里。他盯着那个点看了几十秒,光屏自动弹出了相关的货运记录检索结果,时间覆盖了最近七十二小时,筛出了四批标注为“精密仪器组件“的进口货物,发货方均为同一家位于比利时列日周边的工业公司,收货方是蓉城保税区一家今年刚注册的贸易商,注册资金刚到门槛。 他把手机收起来。隔间门外传来脚步声,有人从大厅方向走过来,步子稳而均匀。脚步声在隔间门外大约两步处停住了,然后传来一个陌生的男性声音:“请问陆维桢在吗?我是张院士办公室的,过来送一份特招材料的补充附件。“ 陆维桢拉开隔间门。门外站着一个穿白衬衫的年轻男人,戴一副金属细框眼镜,手里拿着一个牛皮纸信封。他的站姿端正,衬衫扣到最上面一颗,脸上挂着礼貌的微笑。 “我就是。“陆维桢接过信封,但没有立刻拆,“张院士让你送来的?“ “对,下午刚签好章。“年轻男人微笑着点了下头,“您确认签收就行,我回去复命。“ 陆维桢低头看了一眼信封封口处,火漆印完整,表面压着龙科院的院徽纹样。他当着那个人的面拆开封口,从里面抽出一份盖了章的入职确认函和一张全新的门禁卡。确认函上的所有信息都跟他之前填的特招表格一致,公章清楚,签章栏里张启明的字迹也跟之前亲眼见过的一致。 “没问题。“陆维桢把确认函折好放回信封,抬头对年轻男人说,“谢谢。“ 那人走了之后陆维桢拿着新门禁卡回到大厅。他把卡片放在操作台上时,顾晏正在绕第二组线圈,她没有抬头,只是低声说了一句:“刚才有人从消防通道那边进来了一趟。“ “谁?“ “一个穿白衬衫戴眼镜的。“顾晏把绕线机停了,转过身来看向陆维桢,“他进大厅之后先看了你一眼,然后视线往重岳骨架的方向扫了一圈。走出去的时候他路过操作台旁边,停了一拍——大概在看你放工具盒的那个位置。我那时候正在拧电阻箱的旋钮,低头没看他,但我听见他脚步顿了一下。“ 陆维桢把手里的新门禁卡翻了个面。卡背面印着权限等级“地下三层-四层“,卡号末尾四位是数字和字母的组合。他用手机拍了一张照片存好,然后把卡放进了外套内袋。 “天工“系统光屏在他视野里亮了一行字:“提醒:该人员面部特征与龙科院综合办公区门禁系统的考勤记录照片一致。名字叫宋喆,职位是行政办公室的档案管理专员。他的考勤打卡记录在过去一周内显示他至少有三次在下班后仍然留在大楼内,最后一次留到晚上十点四十分。“ 陆维桢没有把这个信息说出来。他走到重岳骨架旁边,假装检查液压缸管路的固定卡箍,余光确认大厅里的监控摄像头角度之后把右手伸进了右膝关节外壳和液压缸之间的缝隙。那枚被他用记号笔标记过的绝缘胶带旁边,他用指甲轻轻地刮了一下胶带边缘的残留指纹区域。胶带表面上附着了一层极其细微的粉末状物质——跟他在暗潮信号源的设备上见过的同一种防静电涂层残留。 他直起身,把指尖的粉末在裤腿上擦掉。顾晏已经把第二组线圈绕完了,正在用电桥测电感量。她看了一眼数值,把线圈从测试台上取下来举到灯光下面端详匝间间距,然后说了一句:“这组应该能压到百分之一以内。你要不要来看一下?“ 陆维桢走过去。顾晏把线圈递到他手上时,她的手指在递出的过程中短暂地碰了一下他掌侧的位置——一个几乎察觉不到的触觉信号。然后她收回手,从口袋里摸出那张被他叠成细条的纸,重新展开来平放在操作台面上,用一本参考书压住边角。 纸面上原本只有一行字,但在这行字下面多了一行新的笔迹,顾晏写的,字迹紧凑锐利:“我也注意到那个穿白衬衫的。他过道的时候右手一直插在裤袋里,裤袋外侧鼓起一块硬物的轮廓,形状像卡式录写器。“ 陆维桢看着那行字,用左手把线圈放回测试台上,右手同时做了一个自然的搁置动作盖住了那张纸的边缘,把纸重新卷起来收进了自己口袋里。他嘴上说的是:“这组线圈匝间均匀度确实好很多,晚上装上试试。“ 顾晏点了下头,把电桥关掉收回测试箱里。大厅通风系统又到了自动切换的时间窗口,送风声短暂变了一瞬。在风声覆盖的那一刹那,陆维桢低声说了一句:“宋喆。行政档案管理。过去一周三天加班到十点后。“ 顾晏合上测试箱的扣锁,站起身来。她白大褂侧面的口袋微微鼓起一个笔型的轮廓,是那支她用来写补充信息的笔。“重岳骨架换磁流变液驱动的方案如果批下来,第一批正式图纸什么时候出?“她问。 “密封件材料供应商确定之后就能出。“ “密封件材料供应商——“顾晏重复了半句,尾音微微上扬,然后在操作台旁边抓起自己的保温杯喝了一口水,“你说的那家比利时公司?他们做弹性体吗?“ “不做。“陆维桢说,“做特种磁性材料。“ 风道系统的切换结束了,送风声恢复到正常的低频节奏。大厅里重新安静下来。重岳零号骨架在灯光下投出的阴影比刚才长了,因为下午的阳光正从唯一那扇磨砂天窗的斜上方打下来,把骨架的影子拉向东侧的地面,刚好延伸到操作台脚边。 顾晏放下保温杯,视线落在骨架影子的边缘。“那家做磁性材料的,“她开口时声音很低,“如果它们的产品线里同时有钽酸锂压电元件,那就不是巧合了。“ 陆维桢看向她。顾晏没有回头看他,只是弯腰从测试箱里翻出了一张旧的产品目录页——她之前拿来对照某批进口滤波器的资料,上面印着一家比利时企业的商标和产品线分类。在钽酸锂压电元件那一栏的下面有一行小字标注着应用领域:“微型传感与射频信号耦合。“ 她把目录页放在操作台上,用指尖点了点那行字。然后她收回手,把目录页重新夹回测试箱的文件夹里,扣好箱盖。 陆维桢把第二组线圈拿起来再次端详了一遍匝间的间距。他很确定自己摸到了什么——骨架右膝上的绝缘胶带是宋喆贴的,钽酸锂微珠的一部分材料供应链跟比利时那家暗潮关联企业重合,而宋喆今天下午来送确认函的时候右手裤袋里揣着一台卡式录写器。 陆维桢把线圈放在操作台上,拿起那张新门禁卡翻到背面,看了一遍卡号末尾的数字字母组合。“天工“系统的光屏在他视野角落默默弹出了一条尚未主动提醒的灰色文字:“宋喆的名下注册过一张蓉城保税区的进出区临时通行证,有效期覆盖了最近十五天。“ 他把门禁卡收进内袋。窗外的天光已经从正午的刺白变成了下午偏西的暖金色,从磨砂天窗透进来的光斑在天花板上缓慢移动着。顾晏的保温杯盖拧紧时发出一声轻微的金属碰响。 陆维桢转过脸看向重岳零号骨架的右膝关节。绝缘胶带旁边的记号笔线条还在,他伸手用拇指按了一下胶带边缘——指尖传来的黏性告诉他,这东西贴上去的时间不会超过三天。 第6章 缝隙 陆维桢把右膝外壳重新合拢,塑料卡扣压紧时发出一声轻响。他没有把绝缘胶带撕掉——留着它,等它自己掉,或者等贴它的人发现它还在原地。他起身走到操作台侧面洗了手,水龙头里流出的水凉得刺骨,指腹上那层薄薄的油脂残渍被冲进了不锈钢水槽。 顾晏把测试箱的锁扣全部扣好了。她站起来时膝盖轻轻顶了一下桌沿,桌面上那只保温杯晃了晃,被她伸手扶住。整个动作自然到不像刻意,但陆维桢注意到她扶住杯子的同时把一枚压在杯底的小纸片翻了个面——纸片空白的那面朝上,什么字迹都没有。 “周组长什么时候回来?“陆维桢问。 “没说。“顾晏把保温杯拧开又拧紧,“但他走的时候说了一句'晚点过来看骨架拆改进度'。他的'晚点'通常意味着三个小时以上。“ 三点四十分。陆维桢算了一下,距离天黑还有不到三个小时。他看了一眼重岳零号骨架,又看了一眼操作台上顾晏绕好的第二组线圈。如果今晚要开始拆右腿,他需要确认一件事:宋喆在右膝外壳里放的东西,除了那截绝缘胶带之外有没有更多的东西藏在更深的位置。 他走到骨架旁边蹲下来,这次没有去碰液压缸,而是把手伸进膝关节后侧一块相对隐蔽的凹槽里。这里不承重,平时维修时也很少有人会摸到,属于“视觉和触觉的盲区“。他的食指沿着凹槽的弧面缓慢滑过,在拐弯处摸到了一个极小的凸起——比米粒还小,表面有一层微弱的粗糙度。 他收回手。指尖上沾了一粒几乎看不见的半透明物质,在灯光下微微折射。他辨认出了形状和质地:钽酸锂。跟他在消防通道暗盒里发现的那五粒一样,只不过这粒被嵌在了骨架的关节结构缝里,位置更隐蔽。它没有使用胶带固定,而是被卡进了一个自然形成的几何角落,从外观上甚至不会引起注意。 陆维桢用指甲把这粒微珠挑出来,装进一张随身带的纸巾里包好。他站起来时顾晏正在调试一台小型频率计,背对着他。他把那粒微珠包好放进背包最内侧的夹层里,重新把背包拉链拉好。 “天工“系统的光屏弹出了一行字:“位置追踪:这粒微珠的压电谐振频率与之前消防通道内检出的微珠序列完全一致。其信号发射协议存在一个小型化定制——发射窗口是触发式,仅当传感元件检测到振动加速度超过设定阈值时才会短暂激活发射脉冲。这意味着有人曾站在骨架旁边,用手或者工具在关节结构的特定部位施加了足够力度的敲击,激活了这粒微珠,然后读取了它反射回来的谐振信号。“ 陆维桢站在那里没有动。他脑子里把这条信息串联了起来:宋喆贴了绝缘胶带,留下了指纹。但在贴胶带的同时他还做了一件事——用一把小锤或者某种精密敲击工具在骨架关节的特定位置敲了一下。这粒压电微珠被激活后短暂发送了一个包含时间戳和振动特征的数据包,那个包被附近某个接收装置录了下来。宋喆带走的不是照片也不是图纸,而是一组“骨架在被敲击时的结构振动响应数据“。有了这组数据,就能反向推断骨架的材料构成、连接刚度和应力分布。 这是暗潮干的。别人干的。他们不需要偷走骨架,他们只需要让骨架在他们设计好的条件下自己“告诉“他们答案。 顾晏在操作台那边站了起来。她手里握着频率计探头走到了距离骨架大约两米远的位置,扫了一圈空气中的信号背景噪声,读数稳定在标准水平。她放下探头回头看了陆维桢一眼,目光在他右手的位置停了一瞬,然后若无其事地转开了。 “频率计读数是干净的。“她说,“空气中没有异常的窄带信号,至少在这一层没有。“ “干净就好。“陆维桢走过去,从操作台上拿起顾晏绕好的第二组线圈,端详了几秒匝间间距后放回去,“帮我盯着这一层,别让任何人靠近骨架。我去一趟四层,新门禁卡给的那个权限,想看看能用多少。“ 顾晏没有问为什么。她走到大厅入口附近的折叠椅上坐下,手里拿了一本技术期刊翻开了,但坐姿和视线角度恰好覆盖了通往骨架的两条路径。 陆维桢走进电梯按了四层。电梯门合上时他感觉到脚下的震动变化了一点点——越往下,那种极低频的机械搏动就越明显,像是龙科院地下深处有什么巨大的设备在恒定地运转。四层比三层更冷,走廊里的照明是暗白色的,灯管间距更大,有些地方隔几米才有一盏灯亮着。 他沿着走廊走了大约四十米。墙壁两侧的门多数是紧闭的金属门,没有窗户。走廊尽头是另一台电梯,旁边有一块小小的标牌,白底黑字写着“仓库-材料中转区“。标牌下方的位置有一道极窄的门缝,门缝边缘的油漆有一小块剥落,露出的金属表面反着哑光。 陆维桢停下脚步。光屏自动放大了他视线焦点处的区域:“门缝边缘的油漆剥落并非正常老化。剥落形状呈短直线,与螺丝刀或扁平撬具的刃口宽度吻合。有人在这扇门最近被开启过,使用的工具在门框上留下了压力痕迹。“ 他蹲下来观察那道剥落。剥落面边缘微微翻起,没有积灰,说明时间很近,可能在十二小时以内。他站起来用门禁卡刷了那扇门——门侧的读卡器亮了一下绿灯,电磁锁弹开。他推门进去。 里面是一间大约二十平米的材料仓储室。货架上整齐码着成卷的铜箔、成箱的钎焊片和几台套着防尘罩的小型设备。空气里有轻微的化学溶剂挥发气味。陆维桢快速扫视了一遍货架,目光在其中一排停住了——防尘罩边缘露出一截胶带,颜色和他在骨架右膝上看到的那种绝缘胶带完全一致。 他拉开防尘罩。下面是一台桌面型频率分析仪,型号很老,但面板上的显示屏还亮着待机界面。分析仪的输入口接着一条外置天线,天线被磁吸底座固定在货架金属骨架的背面,从窗户方向收进来的信号通过侧面一条极细的同轴线汇入仪器内部。这台设备在运转,但屏幕上没有显示任何实时波形,只显示着“待触发“三个字。 陆维桢没有触碰仪器。他拿出碎屏手机拍了两张照片,一张拍设备整体,一张拍天线底座固定的位置——磁吸底座底下压着一根从通风管道接出来的细线,线的表皮颜色和龙科院内部标准线缆不同。 他退出仓库,把门重新关好。电梯下行的过程中光屏弹出了一条分析结果:“仓库内频率分析仪处于被动监听模式。待触发状态意味着它在等待特定激活信号——可能是压电微珠发回的数据包,也可能是某种预设频段的短时脉冲。天线方向对应窗户外面,外面是龙科院北侧围墙和一条城市次干道。“ 陆维桢回到地下三层时顾晏依然坐在折叠椅上翻杂志。他走过她身边时脚步略微放慢了一下,用正常音量说了一句:“四层材料仓库有一台被改装过的频率分析仪,在等着收数据。“ 顾晏翻了一页杂志,目光停在纸面上,但她压低的回应几乎是贴着他的衣角递过来的:“要不要把它改成'收什么数据由我们决定'?“ “要。“陆维桢没有停步,径直走向操作台,“但得等周承岳回来之后再动手。频率分析仪旁边可能还有别的触发器。“ 他坐在操作台前,用马克笔在空白纸上画了一张极简的拓扑图:重岳骨架关节→压电微珠→空气传播的谐振信号→四层仓库频率分析仪→天线→墙外未知接收端。每一个节点之间的连接线旁,他写上了大致的距离和信号衰减估算值。 顾晏走过来站在他侧面看那张图。她没有坐下,站的姿态让她的视线正好从侧面覆盖整张纸面的内容。她看完了之后说了一句话,声音很淡:“最外面那个节点,天线对着的墙外侧是什么方向?“ “北侧围墙。外面是一条城市次干道,再往外是住宅区。“陆维桢在图上标出了大致方位,“如果有人停在次干道上用车载设备收信号,距离完全在常规接收范围以内。“ 顾晏把杂志合上放在桌面边角。“那台分析仪今天之内必须处理掉。“她说,“但不是破坏——是让它继续工作,只是把收数据的对象换成我们想让它收的东西。“ 陆维桢把那张图折好收进口袋。他站起身走到骨架旁边,重新蹲下来,把右膝外壳的卡扣轻轻拨开一条缝,把那截绝缘胶带翘起来的一角又按了回去。压平。恢复原状。然后站起来后退两步,让灯光正好从四十五度角打在骨架的侧面上,暗金色的纹路在光下安静地亮着。 光屏在他视野的右下角浮着一行新字,字色偏暗,比之前的常规提示颜色更深了一个色号:“宋喆的交通卡记录显示他今天下午四点半刷了一次龙科院北门的闸机,出去了。目的地尚无线索。“ 北门外就是那条次干道。 陆维桢站在骨架的影子里,视线穿过两米厚的混凝土层看向那个方向。他什么也看不见,但能感觉到。那根藏在通风管道里的细线往下走,穿过楼板,穿过泥土,通到某个他还没找到的地方。 顾晏在他身后说:“晚上拆右腿还拆吗?“ “拆。“陆维桢转过身,“而且要让该看见的人看见我们在拆。“ 第7章 剖骨 六点四十分,地下三层的照明从白亮切换成了偏暖的色温。周承岳还没回来,但消息先到了——加密通讯应用里弹出一条短讯:“北门外次干道监控调取完毕。今天下午四点半至五点,宋喆在路东侧停了大约二十分钟,站在一辆深灰色轿车旁边,车窗半开,他的手伸进去过至少两次。车在五点左右驶离,驶向东北方向。“ 陆维桢看完消息把手机收起来。顾晏已经从折叠椅上站起身,把技术期刊合上放回书架,走到骨架旁边蹲下来检查了一遍右膝外壳卡扣的状态。她的指尖在绝缘胶带边缘按了一下,确认它仍然平整地贴附在原位。 “工具在这边。“陆维桢从操作台下面拖出一只金属工具箱,箱盖掀开时里面整齐排列着扭矩扳手、梅花螺丝刀组、内六角套件和一排精密的卡簧钳。他把工具箱放在骨架右脚边的地面上,从里面抽出第一把螺丝刀。 顾晏拿着手持式照明灯蹲到了骨架另一侧。灯光从她手里打出去,把右膝关节外壳的装配缝照得纤毫毕现。“外壳由四颗沉头螺丝固定。“她报出位置,“分别在上盖两端和侧面两个定位孔位。螺丝规格一致。“ 陆维桢的螺丝刀对准第一颗沉头螺丝的十字槽,施加扭矩。螺丝开始转动——非常顺畅,没有锈蚀卡滞,说明近期确实被拆卸过。他拧出第一颗放在旁边一块干净的绒布上,然后是第二颗、第三颗、第四颗。四颗螺丝全部卸下后,他用一把塑料撬片沿外壳接缝滑动一周,轻轻将外壳与内部骨架结构分离。 外壳被摘下来的瞬间,灯光直接打在了液压缸和关节连接结构上。陆维桢的目光沿着照明光束扫过去,首先看到的是一层薄薄的灰白色油脂——这是常规维护留下的。但紧挨着液压缸体侧壁的位置,有一小段黑色的胶带没有被完全压平,翘起的边缘大概有一毫米高。这是宋喆贴的那截。 他伸手过去把绝缘胶带整条撕下来。胶带下面的金属表面上有一个大约指甲盖大小的区域颜色跟周围不同——更暗沉,像被某种弱酸性溶剂处理过。陆维桢凑近了看,光屏自动放大了那个区域的微观表面纹理,随后弹出一行字:“该区域曾附着过粘性材料,胶带撕除时带走了部分表面氧化层。残留物成分中含微量聚二甲基硅氧烷——常见于钽酸锂压电微珠出厂封装时的保护涂层。“ 这截绝缘胶带不是用来做标记的。它是用来掩盖那个“曾被微珠贴附“的位置的——宋喆把微珠嵌在关节结构缝里之后,又贴了一截胶带在这个位置,如果有人拆开外壳检查,第一眼看到的会是胶带而不是微珠。他在制造一个“先被看到的东西“,让真正的东西藏在更深处。 陆维桢把那截胶带放进样品袋里封好,然后转向膝关节后侧那个自然形成的几何角落——他之前用手摸到微珠的位置。他再次伸手进去,这一次直接摸到了那个空隙,但指尖的触感告诉他,原先嵌在那里的微珠已经不见了。只剩下一小圈非常轻微的压痕,形状刚好吻合那粒微珠的轮廓。 有人在他离开期间把它取走了。 “天工“系统的光屏跳出一条时间戳比对:“你在下午三点五十分将微珠取出并放入背包夹层。目标微珠从关节结构中消失的时间窗口在下午四点零三分至四点二十分之间。这个窗口恰好与宋喆在北门外次干道上停驻的时间重叠,他通过远程手段确认了微珠被移除,随后以某种方式取走了结构中的备份。“ 陆维桢直起身。他把从背包夹层里取出的那粒微珠重新拿出来,对比了一下关节结构里的压痕——轮廓、尺寸、完全吻合。他手中的这粒才是从膝盖里取出来的原件,而宋喆远程激活并回收的,是另一粒备份微珠。 “他装了两粒。“陆维桢说,“一粒在明面,一粒在暗处。明面那粒被发现了就会被拿走,但拿走之后他就知道有人碰过这里了。暗处那粒在你知道明面那粒存在的同时,已经完成了数据收走。“ 顾晏把照明灯的位置调整了一下,让光束从另一个角度打在关节结构的表面上。在背光的角度下,液压缸体侧面有一道极浅的划痕,形状规整,几乎看不出深度。“这个划痕是工具留下的。“她说,“微型真空吸笔的尖端,用来拾取和放置微珠。操作非常精细,不太可能带着普通手套完成。“ 骨架的右腿暴露在灯光下,液压系统的密封圈边缘渗着油迹,管路卡箍上的螺丝十字槽里积着干涸的灰尘。但关节的深处——那些普通检测不会覆盖到的结构缝隙里——曾经被人用精密工具反复操作过。 陆维桢把拆卸下来的外壳放在绒布上,开始记录他所看到的所有异常位置的坐标和照片。顾晏在旁边用便携式标记机给每一个可疑位置打标签,从“M1“编号到“M7“,分类为“物理标记“和“微量残留“和“工具痕迹“。两个人的配合不需要对话,她在标记时他已经在测量下一处,他测量完时她已经把标签贴好。 七点二十分,所有可见异常点被记录完毕。陆维桢把外壳重新合上,四颗沉头螺丝按原扭矩拧了回去。他站起来时膝盖微酸,但没有停,直接走回操作台前把刚才记录的所有数据输入笔记本,同步备份到加密存储设备上。 顾晏走过来站在桌边,手里端着她的保温杯。她喝了一口水之后说了一句话:“那台四层的分析仪,你打算怎么改?“ 陆维桢把笔记本电脑转了个方向,让屏幕对着顾晏:“不破坏原设备,也不拆天线。在它的同轴输入线和天线底座之间串一个主动信号耦合器。耦合器会分析所有经过的接收信号,如果是暗潮协议格式的数据包,让它正常通过。如果是任何非暗潮的格式——包括我们将来想往外面送的东西——耦合器会用暗潮的协议封装格式重新打包再发出去。“他在屏幕上画了一个简单的框图,“从外面看,天线收到的数据包和发出去的数据包在协议层完全一致。但收的内容实际上被我们截留了一份,发的内容由我们决定。“ 顾晏盯着那张框图看了大概十秒。她放下保温杯,从白大褂口袋里摸出之前绕第二组线圈时用的那卷漆包线,抽出一段在指尖上绕了一圈又松开,像在测试一种材料的手感。“耦合器的电源从分析仪主机取电,还是另外接?“ “从分析仪主机取。“陆维桢说,“它的电源板上预留了一组未使用的5伏焊盘,不仔细看以为是生产测试留下的。我们正好用那个。“ “明天天亮之前搞定。“顾晏把漆包线卷放回口袋里,“那台分析仪的工作状态指示灯如果一直亮着,可能会被注意到。我可以把它改成只在接收到信号时才亮,待机时不亮。这样能降低被检查的可能性。“ 陆维桢点了下头。他把笔记本电脑合上,转头看了一眼骨架的方向。右膝外壳已经恢复了原样,四颗螺丝的十字槽朝向被他调整到了拧紧时的自然角度,如果不知道原先的方向几乎看不出被动过。那截被他拆下的绝缘胶带已经封存在样品袋里了,但原位他贴了一截从工具箱里找到的同色胶带替代——长度、宽度、贴合方式都模拟了原状。 周承岳的消息在七点五十分再次弹出,这次是一个文件附件,加密压缩包。陆维桢解压后里面是一段从北门次干道路口监控里截取的视频片段——大约二十秒,画面上宋喆站在一辆深灰色轿车旁边,右手伸进半开的车窗操作什么。画质不算太高,但车窗降下的缝隙里露出的仪表台面上有一块屏幕亮着,屏幕上显示的是一张蓉城地图,一个红点标注在龙科院北区三号楼的位置。 陆维桢放大了截图里屏幕上的地图细节。红点正下方有一条极细的虚线延伸出去,穿过城市网格,终止于蓉城东郊。那个位置他在前面查过的信息里见过——那家注册在外资名下的精密加工企业,生产特种磁性材料器件的工厂所在地。 他把视频截图保存好。顾晏走到他身后看了一眼屏幕上的地图,她的视线在东郊那个点上停了两拍,然后退了半步重新拉开了距离。 “东郊那家工厂现在还是宋喆自己去接头,还是已经换人了?“她问。 陆维桢把手机屏幕熄灭,放下。“等周承岳回复。但不管是哪种,他们今天下午的行动表明他们已经知道右膝被检查过了。“他站起身,目光落在骨架的轮廓上,“所以接下来的拆改动向,他们要看的不是我们拆了什么,而是我们拆完之后是否还发现了别的。“ “那我们今晚就拆。“顾晏转身走向操作台重新打开测试箱,“把右腿液压缸全部卸掉,换磁流变液驱动方案的预装件上去。让他们看到我们在拆,也在装。让他们以为自己看到的画面就是完整的画面。“ 陆维桢重新拿起工具箱里的扭矩扳手,走到骨架右侧蹲下。顾晏的照明灯光再次打过来的时候,他拧下了第一颗液压缸固定螺栓。扭矩扳手的限位声在空旷的大厅里干净地响了一下,通风系统自动切换时送风声短暂地覆盖了那声响,又退去。 光屏在他视野角落亮着一行灰色小字:“东郊工厂的法人代表今日下午六点零二分有一条入境的航班记录。入境人姓名不在公开旅客名单内。“那行字顿了一下又追加了半句:“但机票预订时使用的联系手机号归属蓉城本地。“ 陆维桢拧下了第二颗螺栓。螺栓从螺纹孔里退出来时在灯光下折射出一线冷光,他把它放进绒布上的排列格里,和上一颗并排。液压缸开始从骨架上微微松脱,油管接口处一滴暗红色的液压油悬垂了几秒才滴落在地面上,发出几乎听不见的轻响。 顾晏蹲在另一侧,手里拿着托盘接住松动后可能脱落的管路接头。灯光照着她侧脸的轮廓,安静而专注。大厅里只有扭矩扳手咬合螺栓的节奏声和液压油滴落在地面的细小声音交替重复着。 第8章 合芯 液压油滴落在地面的声音在空旷的大厅里异常清晰。陆维桢拧下第三颗固定螺栓时扭矩扳手的限位声响了一声,他感觉到掌心的震动频率比之前拧下的两颗略高——这颗螺栓的内部应力更大,可能是装配时扭矩被加得偏高或者长期受力导致的轻微变形。他把螺栓放在绒布上排列好,低头看了一眼螺纹段,上面有一小片磨损的金属碎屑嵌在牙底里。 “这颗螺栓受过横向剪切力。“陆维桢把螺栓举起来对着灯光,“螺纹牙底有塑性变形,说明骨架曾经在承受了超过设计方向的载荷之后这个位置发生了微米级的相对滑移。不是测试工况——测试工况的载荷方向是预先知道的。这是真实使用中才会出现的情况。“ 顾晏从骨架另一侧探头过来看了一眼螺栓。“重岳零号封存之前只做了实验室测试,没有下过实战场地,“她说,“但这颗螺栓的经历表明它下过。可能是在封存前的某个非正式环节里被人带出去过。“ 陆维桢把那颗变形螺栓单独放进一只小样品袋里,标记了日期和位置信息。他继续拧下剩余的固定件,最后两处管接头用开口扳手松开时渗出的油液量明显少于前几处——说明这个关节曾经被排空过液压油又重新加注,加注量不够标准。排空再重新加注,是维修中才有的操作。结合绝缘胶带和微珠布置的时间线,排空油液的操作窗口大概率发生在宋喆接触骨架的同一批次行动里。 七颗螺栓、五处管接头全部松脱后,陆维桢和顾晏一左一右托住了液压缸总成的两端。缸体比预想的轻,内部油液残量不多,但整体重心偏移明显偏向外侧——右侧外壳的防护罩曾经被拆下又装回,装配间隙比左侧大了约半毫米。他们把液压缸总成从骨架右腿上整体卸下来,平稳地搁在地面一块吸油垫上。 液压缸卸下之后,右膝关节只剩下一组空置的固定支架和裸露的旋转轴端。灯光打在轴端表面上,能看到一圈细密的磨痕沿着轴周的半个圆周分布,角度大约九十度。这是往复运动偏载留下的,范围集中在轴端的特定方向,说明载荷施加的方向集中在某一个象限内。 “天工“系统的光屏弹出分析结果:“轴端偏载磨痕的方向指向骨架右前侧,对应佩戴者快速转向时的受力方向。磨痕深度约四微米,累计往复次数估算在八千到一万次之间。这个数量级远超出实验室测试的常规循环次数。“ 陆维桢蹲在轴端前面用手指轻轻感受了一下磨痕的深度。指腹压下去时能感觉到一个极其微弱的台阶。这个骨架的封存状态是假的——它至少被人在非测试环境下使用过相当长的时间,然后重新涂油、标记,放回了原位。 “先装预装件。“陆维桢站起来,转身走到操作台侧面,把放在那里的一组磁流变液关节预装总成端起来。这组预装件是他根据系统提供的图纸在昨天夜里用龙科院材料加工间的设备加工出来的,外壳是石墨烯复合材料,内部含磁流变液腔室和激励线圈安装槽,重量只有液压缸总成的三分之一左右。 顾晏放下托盘走过来帮忙扶住预装件的对准位置。陆维桢把预装件的固定孔位对准骨架支架上的安装面,拧入第一颗固定螺栓。扭矩扳手打了合适的力矩值,螺栓入位时发出干净利落的声音,没有震动余韵。他依次拧入剩下三颗,每颗都达到预设扭矩后停止。 预装件落位之后,右膝关节的整体轮廓发生了变化。磁流变液关节的体积比液压缸更紧凑,外壳的暗金色纹路沿着关节曲面的自然走向延伸,和骨架原有结构的风格之间没有突兀的割裂感。陆维桢站在一步之外端详了片刻,调整了一下预装件轴端与骨架旋转轴之间的配合间隙,把一枚调整垫片加了进去,间隙读数落到设计值的中位。 “天工“系统的光屏弹出一行新字:“预装件装配完成,几何偏差在公差范围以内。建议进行空载运动测试以验证接合面配合质量。“ 陆维桢走到控制台前启动了骨架的辅助供电系统。电流接入磁流变液关节的瞬间,他感觉到预装件内部传来一声细微的伺服启动音,很短促,然后整个关节进入待机状态,无声地悬停在他设定的初始角度上。他通过控制台发了一个缓慢屈伸指令,关节按照预设的速度曲线平滑地完成了全行程往复运动,没有卡滞、没有异响、没有泄漏。 顾晏站在骨架侧面全程盯着密封件外缘做视觉检查。关节运行了三组往复循环之后,她俯身用手指擦了一下密封件外壁的边缘,指尖干净。“没有渗漏。“她说,“密封件在运行压力下工作正常。“ 她把指尖伸到陆维桢面前让他看了一眼,然后收回手在实验服上擦干净。“接下来测动态响应延迟。“陆维桢重新坐回控制台前,把系统切换到了响应测试模式。他用软件信号发生器连续发出了多组不同频率的步态指令,记录关节从指令发出到实际动作完成的延迟时间。 数据显示在第一组指令之后快速输出到屏幕上。陆维桢看着那些数字逐行刷新,零点零零七秒、零点零零六秒、零点零零八秒。他在心里对比了一下液压系统的零点二四秒记录,差距超过一个数量级。他把数据截图存好,没有在公共屏幕上多停留,但顾晏已经看到了那一列数字。她站在骨架旁边低头操作手机,几秒钟后陆维桢的加密通讯应用里弹出一条她从三米之外发来的消息:“七毫秒。你那个磁流变液方案如果只是实验室数据,你猜周组长会什么反应。“ 陆维桢把手机屏幕朝下放回桌面。他没有回那条消息,但从顾晏站姿的微调幅度里能感觉到她在等他说点什么。他站起来走到骨架旁边,伸手在刚装的磁流变液关节外壳上轻轻叩了两下。回音短促而清亮。 大厅东侧隔间的内线座机忽然响了。顾晏走过去接起来,只听了大概十几秒就挂断了,转过身时表情依然平淡,但语速比平时略快了几分:“周组长刚才通过保卫科内部线路转接过来的消息。他说北门次干道监控录像里的那辆深灰色轿车已经查到了登记信息,车主登记在蓉城一家汽车租赁公司名下,租车人使用的是比利时护照。车型跟范德米尔在蓉城使用的交通工具相同。“ 陆维桢把手机重新翻过来解锁,快速打开了上一次保存的范德米尔资料页面。那本比利时护照的签发日期和编号在租赁公司提供的租车记录里被模糊处理了,但“天工“系统的光屏自行比对了两份文档的元数据,弹出了一个匹配度标记:两份记录中的护照签发机构编号完全一致。 同一本护照的持有人,在不同的场合使用了不同的名字拼写方式。范德米尔在学术论文里署名用的是B. Van der Meer,在租车记录里用的是另一个拼写变体,指向同一个国际银行账号。租车记录末尾还有一个备注字段:“本单押金由比利时境内某公司账户代为支付。该公司名称与东郊精密加工企业的境外母公司共享注册地址。“ 陆维桢把手机递给顾晏,让她看了那个备注字段。她没有说话,只是把手机推回来时食指在屏幕边缘极轻地点了两下,然后转身走回操作台前开始整理测试箱里的探头线缆。大厅里重新安静了片刻,通风系统的送风声再次进入自动切换的周期,风声短暂地变了一下频率又恢复正常。 在风声覆盖的那一刹那,陆维桢听到了一段不属于通风系统的极低声音——从墙壁内部传来,像某种金属结构在温度变化时产生的微小应力释放。声音很短促,只持续了不到半秒。他转头看向声音来源的方向,是大厅北侧墙壁的位置,再往北就是那条消防通道的位置。 天工系统的光屏在他视野角落亮了一行字,字体比以往任何一次提示都细,细得像针尖在玻璃上划出来的一样:“北侧墙体内部温度场数据出现瞬时异常。该异常与人工热源通过墙体传导的加热模式一致,持续时间约一点三秒。该位置在地面上方对应北侧围墙外的次干道地面。“ 陆维桢站在原地没有动。他的目光落在大厅北侧的墙壁上,那面墙看起来和周围的其他墙壁没有任何区别,灰色的防火涂料覆盖着混凝土表面,墙面平整干燥。但刚才那一点三秒的异常温度信号表明有人站在墙外的地面上,把某种发热设备紧贴着墙体表面打开了一下又关掉了。 他低头看了一眼自己手边的工具箱。工具箱最上层放着一台手持式红外热像仪,平时做电路板温升检测用的。他把热像仪拿起来握在手里,没有开机,只是安静地捏着它走回操作台前坐下。 顾晏正在缠绕最后一组线缆,她的动作没有停顿,但她的手在收线时不自然地放缓了半秒,视线掠过陆维桢手里的热像仪,然后重新回到了线缆上。 陆维桢把热像仪放在操作台靠里的位置,用一本参考书挡了一下,然后把笔记本电脑重新打开,在空白文档里打了一行字:“北墙外有人。带了热源设备。已知范德米尔在蓉城。已知东郊工厂与范德米尔共享注册地址。已知宋喆今天下午出北门后回不来了。综合判断:今晚之前应该要有人下楼来收一次四层仓库的数据。“ 他把文档保存后最小化,端起桌上的杯子喝了一口水。凉水滑过喉咙的时候他感觉到自己的心跳速率比平时快了大约五到七次,但他坐着没动,让呼吸慢慢恢复到正常节奏。 墙上那一点三秒的温度异常已经冷却了。热像仪的取景框里现在什么也看不到,墙面上只剩一道均匀的灰色,在红外波段没有留下任何清晰的轮廓。但陆维桢知道外面有个人曾经站在那个位置,手里拿着东西贴着混凝土。他对着墙看了足够久,直到确定再有变化他会在第一时间捕捉到,才把目光移回笔记本屏幕。 光屏底部浮着一行几乎不可见的极浅灰色小字,字句尾端微微发暗:“范德米尔今晚入住的酒店已经确认,在前台登记使用的是第三本护照。房间朝向龙科院方向。“ 第9章 对映 陆维桢把手放在热像仪外壳上,没有开机。他站起来走到北墙前大约两米处,假装活动了一下长时间蹲着造成的腰背酸僵,右手自然下垂,热像仪的镜头在他转身时短暂地扫过墙面。他没有看取景框,但光屏已经把墙体表面的温度场数据实时投射到了视野右下角——一个直径约二十厘米的圆形区域温度比周围高出了零点七度,轮廓清晰,位置大约在距离地面一米六的高度。 他走回操作台前坐下,把热像仪放回工具箱,用内线座机拨了一个短号。三声后接通,周承岳的声音从听筒里传出来,背景里有风噪,像在车辆行驶中。 “墙外面有人贴了设备在扫描。“陆维桢用正常音量说,语气平稳得像在汇报天气,“位置在北墙一米六高度,热特征比环境高零点七度。可能是主动热成像或者低频声学扫描,时间窗口刚过去。“ 电话那头风噪小了一些,周承岳的声音低了下来:“多久了?“ “第一次出现大概在二十五分钟前,持续了一点三秒。刚才第二次,持续了大约四秒。中间间隔接近二十五分钟,说明他的扫描装置有冷却周期。每次开机之后需要散热,所以下一次的大致时间窗口在二十五分钟后。“ “你那边有反制手段?“ “有。“陆维桢看了一眼操作台上的笔记本屏幕,“墙体内部有暖气管道沿着北墙根部铺设,管道表面温度稳定在五十度左右。如果我打开管道伴热带的额外加热档,墙体表面的温度分布会被打乱,他和墙体之间的热交换路径会失效。他再扫的时候看到的就是一道均匀的热模糊面,什么都辨不出来。“ “开。“周承岳只回了一个字。 陆维桢挂断电话。他找到暖气管道伴热带的控制开关——在大厅北侧配电箱内的一块小面板上,标注着“管道防冻伴热“。他把开关拨到了手动高功率档。几秒钟后,墙壁内部的金属管道开始升温,热量通过混凝土传导到墙面,表面温度缓慢爬升,零点二度、零点四度、零点七度。整个过程平滑均匀,热像仪如果看过去,只能看到整面墙变成一个温度均匀的发热面,再也没有局部凸出的扫描热特征可以识别。 他回到操作台前坐下。顾晏走过来时手里拿着一组预装的信号耦合器,指甲盖大小的电路板被封装在黑色热缩管里,两端引出极细的接口线缆。她把它放在桌面上,然后低声说了三个字:“北墙外有东西在动。“ 陆维桢看向北墙。墙体表面温度还在缓慢爬升,均匀泛着红外波段上的暖色。但在通风管道送风声的间隙里,他听到了一声非常微弱的震动——不是从墙面上传来的,而是从墙外经过土壤和混凝土结构传导进来的低频撞响,像有人在用橡胶锤轻轻敲击地表。 频率稳定。间隔均匀。每两次敲击之间恰好间隔约六秒。这是测距用的声波探测,通过测量声波在混凝土中的传播时间反推墙体的厚度和内部空腔结构。但对方敲击的节奏显示他正在沿着墙体表面水平移动,每次敲击后移动大约半米。 “天工“系统的光屏上跳动着一组实时推算数据:“声波回波时间呈规律性变化,震源正沿北墙外部水平移动,速度约每分钟八米。移动方向自东向西。“ 陆维桢站起来走到配电箱旁边,把伴热带的功率又提高了一档。墙壁表面温度继续爬升,开始接近管道表面的实际运行温度。墙体内外温差的变化会影响声波的传播速度,给对方的回波时间测量引入一个逐渐增大的系统误差。他每提高一档功率,光屏就更新一次折射率偏导估算值,显示回波时间误差正在以线性方式累积。 三分钟后,北墙外部的敲击声停止了。没有收尾,没有逐渐减弱,就是直接在两次敲击之间的那个六秒间隔里消失了。然后大约过了七八秒,墙体表面的热特征也开始缓慢消退——对方把贴在墙上的设备取走了。 陆维桢站在配电箱旁边没有动,又等了大约一分钟才把伴热带的功率逐步回调到常规档位。墙壁温度开始回落,但回落速度慢于加热速度,整个北墙表面仍然维持着相当均匀的热分布。他重新坐回操作台前时顾晏已经把那只信号耦合器连接到了笔记本的调试接口上,屏幕上跳动着初步自检通过的提示。 “耦合器自检通过了。四层的分析仪如果明天之前有人动过,这台耦合器会记录下它的最后工作状态。“顾晏把笔记本屏幕转向陆维桢让他看了一眼自检结果,然后断开连接把耦合器收进了白大褂内袋。 大厅的照明在九点整切换到了夜间模式,色温更暖,亮度降到日间的三分之二左右。暗红色的应急指示灯在墙壁高处亮起来,沿着天花板边缘围成一圈,像夜间机场跑道上的边界灯。重岳骨架右膝上的磁流变液关节在低照度下泛着幽幽的暗金色微光。 陆维桢走到骨架旁边蹲下来检查了一遍预装件的固定螺栓。所有螺栓的扭矩保持完好,密封件外壁干燥洁净,关节在待机状态下发出的伺服嗡声均匀稳定。他伸手轻轻转动了一下骨架旋转轴端,感觉到的阻尼平滑无卡顿。右腿的改装部分今晚可以在这里过夜了。 “四楼的分析仪现在去改还是等后半夜?“顾晏站在操作台旁边,手里拿着那只装了耦合器的白大褂内袋。 “现在。“陆维桢站起来拍了拍膝盖上的灰尘,“后半夜可能有别的事。“ 两人从大厅东侧的员工通道绕到电梯间,刷卡进了电梯。上行的过程中陆维桢注意到四层按钮周边的金属面板上有一道极细的划痕,方向垂直,长度大约三厘米,像是被某种尖锐工具沿着按钮边缘划过留下的。他用手机拍了那张划痕照片保存好。 四层的走廊灯光比三层暗。陆维桢走在前面,顾晏跟在他后面大约一步半的距离,两人的脚步声在空旷走廊里几乎没有回声。他们在材料仓库门口停下,陆维桢用门禁卡刷开电磁锁,推门进入。 仓库内部维持着他下午离开时的布局。防尘罩下面那台频率分析仪的待机指示灯仍然亮着绿色,屏幕上的“待触发“字样平稳地停驻在面板中央。陆维桢快速检查了一遍天线位置和同轴线的走线路径,没有发现被移动过的痕迹。他掀开分析仪主机的外壳侧板,露出内部的主板和电源模块。 电源板上的预留焊盘还在原处。陆维桢用万用表确认了电压输出稳定,然后把顾晏给的信号耦合器沿着同轴输入线路串接进去。耦合器的三条飞线被他用高温胶带固定在线槽里,走线路径和原机内部线缆的走向完全一致,从外观上几乎看不出加装了额外的模块。整个操作过程不到四分钟,期间两人谁也没说话,只有焊枪微弱的加热声和镊子触碰元件的轻响。 陆维桢把分析仪外壳重新装好,拧回四颗固定螺丝。屏幕上仍然是那个“待触发“字样,颜色亮度都没有变化。他把防尘罩重新盖上,位置与之前一致,检查了一遍天线底座的磁吸位置才直起身。 “成了。“他退出仓库,把门重新锁好。转身时他看到走廊对面一扇半开的窗户外面的夜色中有一道非常暗的光线快速横移过去,像车灯被建筑物遮挡后露出的残余散射。那个方向是蓉城东边,去往那家精密加工企业的方向。 两人回到地下三层时周承岳已经到了。他站在骨架旁边,手里捏着一部打开了的平板电脑,屏幕上显示着实时遥感地图。看见陆维桢和顾晏从电梯出来,他把平板翻过来朝向两人,画面上是一个被红色箭头标注的位置——蓉城东郊,那家工厂建筑群中央的一栋三层楼。红箭头旁边附着一段文字注释:“热成像显示该建筑地下有异常空腔。空腔上方顶板温度比相邻区域低四度。“ 陆维桢在走向操作台的路上经过了周承岳身边,扫了一眼平板上的热成像图像。建筑物轮廓清晰,中央那栋三层楼的底部轮廓线有一个不规整的缺口,对应地下空腔的边界。那个空腔的形状不太规则,但大致呈现矩形,长边方向朝向龙科院所在的西南方位。 “范德米尔今晚住在哪?“陆维桢问。 “蓉城中心区一家国际连锁酒店。“周承岳收起平板,目光从陆维桢身上移到骨架右膝新装的磁流变液关节上,停了一会儿,“酒店东侧窗户视野朝向西南,正好覆盖龙科院方向和东郊工厂方向之间的这条线。“ 陆维桢走到骨架前面,伸手轻轻碰了一下磁流变液关节的外壳。暗金色的纹路在夜间照明下比白天更清晰,那些极细的纹路顺着关节曲面延伸,灯一照就在金属表面深处微微发亮。他收回手时注意到指尖上沾了一粒几乎看不见的灰尘颗粒——来自关节外壳表面,但外壳两个小时前刚装配完成时是没有灰尘的。这个灰尘出现的时间窗口只可能是骨架和旁边物品之间的空气流动带来的。他摸了一下旁边的液压缸外壳表面,同样的灰尘颗粒也存在。两个位置的灰尘沉积量一致,说明它们来自于同一批次的空气微粒,很可能是在通风系统最近的自动切换周期里被搅动起来的。 但陆维桢的目光停留在左腿原装的液压缸外壳上时,他看到一件东西。左腿膝关节后侧——跟右膝相对应位置——也有一道几乎看不清的细痕。油漆表面被极其轻微的力度划过,但没有破皮,留下的痕迹更像某种清洁剂擦拭时的残留线条。他用手电筒贴着表面打出侧光,细痕清晰地显现在光束下:直线,两端干净利落,不是自然划伤。 有人在他之前已经碰过左腿了。那台右膝是诱饵,左腿才是真正被处理过的位置。 陆维桢直起身来,手电筒的开关被他无声地推回去。周承岳站在三步之外看着他的动作,没有说话。顾晏正在操作台前把耦合器的调试数据从笔记本上拷贝到加密存储里,键盘按键的声音匀称平稳。暗红色的应急指示灯把三个人在墙面上的影子拉成了三道朝向不同方向的斜线,在通风系统送风声的低频背景里安静地定格着。 第10章 双翼 手电筒的光在左腿膝关节后侧的细痕上一寸一寸移动。陆维桢把光束角度调到最低侧切,油漆表面的那条线变得更加清晰——它不是被工具划出来的,而是被某种柔性材料的边缘压过之后留下的位移痕迹。有人用一段表面覆盖了吸附性材料的薄片塞进了左膝外壳和骨架结构的装配缝里,薄片的边缘在油漆上留下了这道平行位移线,然后又被抽走了。 “右膝拆开过一次。左膝被插过东西。“陆维桢收起手电筒站起来,“插进去的厚度大概零点二到零点三毫米,材质比普通纸更韧,可能是柔性PCB基底或者高密度聚乙烯薄膜。“ 周承岳从三步外走到骨架左膝前蹲下来,用指腹沿着陆维桢指出的那条细痕轻触了一遍。他收回手时没有说话,但起身的姿态比蹲下去时快了些许,脖颈侧面那道旧疤在暗红色灯光下微微绷紧又松开。 “右膝的微珠和绝缘胶带是明饵。“陆维桢继续说,“他们希望我们把注意力全部集中在右膝上。左膝才是真正植入东西的地方。那层薄片插进去之后可能做了以下三种操作之一:读取骨架内部的电子标签、在结构表面沉积一层纳米级的导电材料形成寄生天线、或者把一组极薄的传感膜片粘贴在关键受力面上。“ 顾晏已经把笔记本电脑合上了。她走过来蹲在骨架左膝的另一侧,用手电筒从自己的角度重新检查了一遍那条细痕的走向和长度,然后用一把精密卡尺量了量细痕两端的位置偏移量。“走向是直线,从外壳装配缝的上端伸入,出来后没有折角。“她直起身,“如果是读取电子标签,探头通常是圆柱形而不是片状。如果是沉积材料,操作时间至少需要几秒钟,痕迹可能会更长或者更不规则。长度只有这么短,更接近第三项——贴膜片。把传感膜片贴在关键受力面上,时间短,接触面积小,只需要把膜片塞进去压一下就能固定。“ 陆维桢蹲下来重新确认了一遍左膝外壳的装配状态。四颗沉头螺丝的位置和右膝稍有不同——有一颗螺丝的十字槽底部存在极其微小的金属碎屑堆积,是之前被某种镀层工具拧动过之后残留下来的。这颗螺丝被松过又被拧紧,拧紧的扭矩比原厂值略低,导致外壳和支架之间的间隙比标准值大了大约两丝。 “拆。“他说。 顾晏已经递过了螺丝刀。四颗螺丝依次旋松,每一颗退出的声音都干净均匀,没有异常磨损。左膝外壳被完整取下之后露出内部的关节结构——和右膝基本一致,但液压缸体表面多了一层极薄的半透明膜片,面积大约相当于一枚硬币,颜色接近于浅琥珀色,在灯光下几乎不可见。如果不蹲下来用侧光照射,用裸眼根本分辨不出它与金属表面的区别。 “天工“系统的光屏发出了一行实时的成分分析结果,利用陆维桢视野里的光学信息进行材质的初步推断:“该膜片为三层结构:顶层为压电聚合物传感层,中层为柔性导电回路,底层为生物相容性粘贴层。厚度约一百五十微米。其工作模式为——当受力面发生变形时,压电层产生微弱电荷信号,通过导电回路向外传输。传输距离极短,推测接收端位于骨架本体内部。“ 膜片贴在左膝液压缸体的外壁上,位置正好对应载荷传递的主要路径。这个位置受力最集中、变形最明显、信号最强。而且膜片的粘贴方向朝内,朝向骨架结构内部,它的信号发射面指向的就是骨架内部的金属构件——如果骨架内腔里埋了一枚无源接收器,这片膜片发出来的电荷信号可以被接收器捕捉到,并以某种方式缓存或转发出去。 “骨架内部有接收器。“陆维桢把膜片完整地揭下来放进样品盒里封存,“如果接收器是内置在骨架出厂装配时就装进去的部件之一,那我们即使换了关节方案也清不干净。它可能藏在一根空心结构管里、或者藏在某个密封件后面、或者被预埋在骨架铸造时的内部型腔里。“ 周承岳站在两米之外,声音压得低而稳:“你的意思是这具骨架出厂时就已经被做过手脚了?“ “不是出厂时。“陆维桢直起身,“是封存之后被人打开过内部的密封结构装进去的。刚才我们拆右膝的时候,只卸了外壳和液压缸总成,没有动骨架本身的承力管件。但如果接收器藏在承力管件内部,就需要用专门的工具把管件端部的密封塞取出来才能安装。“ 顾晏已经找到了左膝承力管件端部的密封塞位置。那是一颗内六角沉头螺堵,表面涂了防拆胶,胶层颜色和骨架表面的喷涂色完全一致,不凑近了根本不会注意到这里有一层额外的材料覆盖。她用针尖在螺堵边缘轻轻刮了一下,防拆胶层沿着刮痕裂开一小道口子,露出底下的金属面。 “拆。“陆维桢说。 顾晏用内六角扳手卡住螺堵的沉槽施加扭矩。防拆胶在初始几秒内提供了一定的阻力,然后突然松动——螺堵被拧开了。她旋下螺堵之后把扳手放到一边,用手电筒照向管件内部空洞。光柱打进去,大约深入管腔五厘米左右,一枚圆柱形的微型电子器件被磁吸在管壁上。器件的直径只有三毫米,长度约一厘米,表面封着一层透明保护膜,膜下可见微型的电路排线和一只纽扣电池大小的银白色单元。 陆维桢用一把长柄镊子伸进去把那枚器件取出来。放在掌心端详时,它的重量很轻,底部有一个微型触点阵列,对应的接收频率范围正好可以匹配那层压电膜片发出的电荷信号。这枚器件和膜片是配套的——膜片感知变形→产生电荷信号→无线传输→器件接收并存储。存储的数据需要有人定期靠近骨架,用另一台读取设备从器件上把数据下载走。 他忽然想到了一个问题,目光落在器件底部的触点阵列上。如果读取设备需要物理接触来下载数据,那就意味着有人需要定期把骨架的某个部位打开,用读卡器一样的设备去触碰这枚器件的触点。而这个部位不能太显眼,每次被打开都要留出充分的时间窗口和合理的开盖理由。 “四层仓库的分析仪是接收空气中传输的信号。“陆维桢把器件放回样品盒里封好,“而左膝里这枚器件是物理存储型的,它记录的数据需要被现场读取才能带走。说明暗潮在这栋楼里至少有两套采集方案——一套无线远程收数据,一套在地面上有人来接触取数据。两套并行,互为备份。“ 周承岳的加密手机在此时震动了。他接起来听了约十秒,挂断之后转向陆维桢:“围墙外面找到了一个废弃的信号中继器,埋在绿化带下面,距离三号楼北墙大约六米。工兵排的拆卸组刚才清理出来,里面存储了近十二小时的扫描记录。其中一段记录的时序跟今晚墙体外部敲击的时间完全吻合。“ 陆维桢把样品盒放进背包最深层的夹层里,拉链合拢时他抬头看了一眼墙壁上的时钟。九点三十七分。距离上一次墙体敲击已经过去了大约三十分钟,而之前两次敲击的间隔大约是二十五分钟。如果第三次敲击按照同样的周期来算,应该在十分钟之内出现。 他转身走到配电箱前,把伴热带预热到了中等功率档位。墙体表面温度开始平稳上升。他回到操作台边,把手持式热像仪重新握在手里,这次开机了,取景框对准北墙一米六高度的位置。屏幕上显示出一个缓慢变化的温度读数,墙体表面的热量正在均匀扩散,形成一个没有局部凸起的热幕。 周承岳走到了他侧后方。顾晏站在骨架旁边,手持式频率计开机运行着,探头指向北墙方向。三个人在暗红色的低照度灯光下形成了三个相互掩蔽的观测角度。北墙方向一片安静,暖气管道内部的循环声低沉平稳。 陆维桢盯着热像仪屏幕等了大约八分钟。屏幕上墙体温度读数稳定攀升到了设定阈值,整个北墙表面呈现出一片均匀暖色,没有异常热点或冷点。然后在第九分钟左右,热像仪的边缘突然捕捉到一个极其微弱的红外反射——来自墙体外侧大约一点五米处,某个物体短暂地出现在热像仪的取景框角落,然后消失了。出现和消失之间的时间差不到一帧。 “天工“系统同步截取了那一帧画面进行增强处理。光屏上浮现出一组经过算法补偿的轮廓线条:一个蹲姿的人体轮廓,头部略微偏向左侧——正在用一台手持设备对准墙体表面。轮廓的肩膀线条宽度和之前从北门次干道监控里提取的范德米尔的身体比例数据基本吻合。 陆维桢把热像仪放下。他没有给任何人看那一帧画面,但周承岳从他的停顿中读出了信息,侧头看了他一眼。陆维桢用左手食指在操作台面上轻轻划了一个方向标记,指向北墙偏东二十度。周承岳的视线朝那个方向偏了一下又收回来,然后他伸手从夹克内袋里取出加密手机,在屏幕遮光模式下快速输入了一条短指令,发送出去。 发送完成之后他把手机收起来,朝陆维桢微微点了一下头。 北墙外部的绿化带深处,在路灯照射不到的阴影里,有几片草叶被低于体温的空气移动扰动了一下,然后恢复了静止。没有人走进灯光的范围内,但周承岳的加密手机在发送指令之后大约四十秒震动了一次,消息内容极其简短,只有两个字:“已在。“ 陆维桢把热像仪关掉放回工具箱。墙体表面的温度开始慢慢回落,暖气管道内部的热循环恢复到了常规工作模式。骨架左膝的承力管件端部螺堵已经被重新装回去,防拆胶没有补涂——空缺本身会成为周承岳后续行动的判断依据,也是陆维桢期待对方暴露时的一个参考坐标。 顾晏已经无声地收起了频率计。她回到操作台前,把笔记本电脑重新打开,在白天的技术文档里找到了一页被隐藏的空白行,在行里输入了一行新内容:“左腿管内元件已取出,保留螺堵防拆胶缺失状态。“ 她保存文件,合上笔记本。 陆维桢走到骨架左膝前蹲下来,把外壳重新合上。四颗螺丝依次入位,扭矩打到与拆卸前一致的值。复原之后的左腿外观看不出任何变化,油漆表面的那一道细痕还在原来的位置,不凑近了用手电筒打侧光根本看不见。 他站起来退后一步。暗红色的应急指示灯把左膝外壳的曲面勾勒成一条柔和的弧线。右膝是饵,左腿是网。现在饵被拆了,网被收了。但暗潮的人今晚还在北墙外蹲过,范德米尔住进了那家能看到龙科院和东郊工厂之间那条线的酒店房间,而那台四层仓库里的分析仪现在还处于“待触发“的伪装状态。 “接下来十二个小时,对方可能会采取两个动作之一。“陆维桢面对周承岳和顾晏的方向说,声音不高但每个字都清晰,“要么因为右膝和左腿的数据同时中断而判断这栋楼内的采集体系被发现了,立刻启动全局擦除。要么因为他们仍然接收到了那台分析仪发回的确认信号而认为我们还蒙在鼓里,继续维持现状。“ 周承岳的加密手机屏幕在夹克内袋里无声地亮了一下,他又拿起看了一眼。看完后他把手机屏幕转向陆维桢的方向,上面显示着一条刚从技术组传来的消息:“在东郊工厂地下空腔的通风管道内部采样到一个ID卡信号。频率码型和今天下午宋喆刷开北门时的门禁卡信号一致。“ 第11章 入夜 宋喆的门禁卡信号出现在东郊工厂地下通风管道里,这件事改变了很多事情的时间表。陆维桢站在原地看完那条消息,转身走到操作台前把背包里的笔记本电脑重新拿出来开机。开机过程中他对周承岳说了一句话:“宋喆今天下午从北门出去之后没有回龙科院,但他的人或者他身上的东西出现在了东郊。卡和人分开的可能性有多大?“ “分开。“周承岳几乎没有停顿,“他被带走的时候门禁卡还在身上。但今天下午四点四十分之后,北门门禁系统没有再刷到过那张卡的记录。如果他被抓或者被控制,卡会被搜走。搜走之后出现在地下通风管道里,说明那边有人拿到了卡并带进了工厂地下空间。宋喆本人不一定在那里。“ 陆维桢把笔记本屏幕转过来对着自己,快速打开了一幅蓉城东郊的卫星地图。那家工厂的建筑群在地图上呈现出一片灰白色的矩形顶棚,中央的三层楼在俯视角度下呈现出一种略微偏暗的屋顶材质——跟周围铁皮顶棚的反光率不同,更偏向吸光型表面。“天工“系统的光屏将热成像照片叠加在卫星图上,地下空腔的轮廓以半透明的红色线条勾勒出来,正好落在三层楼底部偏东的位置。 “如果通风管道里检测到门禁卡信号,说明有人下过那个地下空间。“陆维桢的手指在地图上的通风管道出口位置点了一下,“这个出口的位置在工厂围墙外围的配电房旁边,外面是一条小巷,巷子尽头通向一条乡镇公路。可以快速进出,而且不容易被厂区内部监控覆盖。“ 顾晏已经从操作台侧面的储物柜里取出了两台手持式频谱分析仪和一组便携信号天线。她把一台递给陆维桢,另一台挎在自己肩上,动作干脆到仿佛这件事在她脑子里已经演练过不止一遍。“通风管道内部如果有门禁卡信号,那管道本身的形状可以作为波导定向传输。从出口位置往外扫,只要能捕捉到微弱的信号残余,就能反向推演出信号强度最大区域——很可能就是宋喆进入地下时的路径。“ 周承岳看了一眼顾晏挎在肩上的频谱仪,然后转向陆维桢:“你们要不要去一趟现场。“ “要。“陆维桢把笔记本合上放进背包,拉链拉到一半时停了一下,把热像仪从工具箱里抽出来也塞了进去。 地下三层通往地面的员工通道更窄,仅容两人并行。他们沿着通道向上走了两层楼梯才到达地面出口,通道出口掩藏在一排修剪整齐的冬青后面,外面是龙科院北区的一片停车场。夜风迎面吹过来带着十一月底的湿冷,陆维桢把外套拉链拉到了最顶上。 周承岳开了一辆没有任何标识的黑色SUV过来,停在冬青丛边缘,车灯没开。三人上车后他沿着园区内部道路朝东门驶去,经过门禁时值班室的灯光透过窗玻璃照进来,陆维桢看到值班员的茶杯搁在窗台上还在冒热气,窗户拉开了一道缝透气。 车辆驶出龙科院之后上了城市快速路。周承岳的车速维持在限速以内,走的是中间车道,没有超车也没有变道。车速平稳到几乎感觉不到颠簸,引擎运转的噪音被底盘隔音层压得很薄。陆维桢坐在后排靠窗的位置,偏头通过车窗玻璃的反光观察后视镜里的车流——后面有两辆车一直在跟,保持的距离足够远但始终出现在下一组街灯的覆盖范围内。他看了大约三分钟后发现那两辆车在同一个路口分了道,各自转向不同方向。之后没有再看到重复出现的车灯。周承岳从后视镜里也看到了这一幕,他什么也没说,只是继续维持着匀速向城东推进。 二十多分钟后SUV拐入一条两侧种着梧桐树的乡镇公路。路灯光线变得稀疏,中间的间隔从城市道路的三十米逐渐拉长到近百米,有些段落没有路灯只有路边住户家里透出来的零散光线。导航地图上显示工厂建筑群就在前方大约一公里处,围墙的轮廓已经开始在林木线后面隐约浮出来。 周承岳把车停在距离工厂围墙大约两百米的一处废弃机械修理铺的院子里,引擎熄火后他没有立刻下车,而是先侧耳听了一分钟周围的声响。有狗的叫声,不远不近,大约在围墙内侧。有风声穿过梧桐树枯叶间隙的声音。更远处有一条乡镇公路上的柴油货车经过,发动机的轰鸣声由远及近再及远,前后持续了大约四十秒。 “这条通风管道的出口在工厂围墙外围,配电房旁边的巷子尽头。“陆维桢在手机上打开了提前截取的地图局部放大图,把屏幕侧过来给周承岳和顾晏看,“配电房外墙朝西有一扇检修门,门锁是标准的弹子锁,侧面有通风百叶窗。管道出口在配电房北侧地面,有一个铸铁井盖。井盖边缘的油漆颜色和周边地面不太一样,去年粉刷的时候漏掉了这一圈。在卫星图上能分辨出来。“ 周承岳看了一眼地图,推开车门。外面的空气比车里更冷,带着泥土和枯草混合的气味。三人沿着梧桐树的阴影边缘朝围墙方向移动,脚下踩着干裂的泥土地面和碎石子路,每一步都注意避开松散的土块和枯枝。陆维桢跟在周承岳后面大约三步,顾晏断后,她的频谱仪天线已经展开了一小节,顶端收着电波,屏幕显示着实时背景噪声。 配电房的轮廓在月色下显出来,是一间约四米见方的砖混小屋,屋檐下没有灯,配电房外侧的电线杆顶端有一盏路灯亮着发出昏黄的光,灯罩积了灰,照在地面上的光斑模糊而边缘不清。三人绕到配电房北侧,地面上果然有一块铸铁井盖,直径约六十厘米。井盖边缘的颜色确实比周边地面浅了一圈——去年粉刷时被遗漏的油漆痕迹,在路灯余光的照射下形成了一个隐约的环状分界线。 陆维桢蹲在井盖旁边用手电筒照了一圈边缘。井盖的铸铁表面覆盖着一层薄薄的泥土,但盖沿和井圈之间的缝隙里泥土分布不均——东侧的缝隙比西侧宽约半毫米,有被撬起过之后重新放回时没有完全对正造成的偏移。他用手套垫着指腹沿缝隙摸了一圈,触觉反馈告诉他这口井盖最近两天之内被打开过至少一次。 周承岳蹲在对面,手里捏着一把工具钳轻轻地卡入缝隙向上施加压力。井盖被抬起了一道窄缝,边缘和井圈之间发出轻微的铸铁摩擦声。他停住,侧耳听了听下方。没有异常的声音。然后他把井盖缓缓抬起到足够一人侧身进入的角度,用一块石头抵住边缘以防它回落。下面的通风管道内壁是水泥材质,直径约八十厘米,壁面上有一层浅灰色的积尘。积尘表面有几道不规则的拖拽痕迹延伸到黑暗深处,末端消失在管道的弧形拐角后面。 顾晏把频谱仪的天线指向管道入口方向,屏幕上的读数微微跳动了一下。她蹲下来把天线探入管口约三十厘米,读数的跳动幅度增大了。“里面确实有和门禁卡同频的信号残余,“她说,“微弱但持续,频率吻合。像是卡本身仍然在通电状态,有内置电池。位置大概在管道前方二十到二十五米处,拐角后面。“ 陆维桢准备侧身进入管道,周承岳按了一下他的肩膀。“你走我后面。“他说完先侧身滑入了管口,身体贴着管壁内侧的曲面缓慢向里挪动。陆维桢跟进去,然后是顾晏。三人在水泥管道里弯腰前进,手电筒的光束在前方的壁面上照出一个圆弧形的亮斑,管道内壁的积尘在手电光下呈现出细微的颗粒纹理。 管道前进了大约十几米后向左拐了一个接近直角的弯。拐过弯之后前方约五米处的管壁上有一个金属盖板,尺寸跟手掌差不多,表面覆盖着一层防尘棉垫。金属盖板边缘有一根极细的数据线延伸到管道侧壁的缝隙里消失不见。盖板本身微微鼓起的轮廓表明下面有物体被固定在内壁上。 陆维桢侧身挤过去,用手电照向金属盖板。盖板表面的防尘棉垫被揭开过,边缘还留着新指纹的油脂印记,指纹清晰完整。他用指甲轻轻撬开盖板的扣锁,里面嵌着一只约信用卡一半大小的黑色塑料盒子,盒体侧面引出了三根极细的线缆。盒子背面贴着一张贴纸,上面手写着一行编号:ECHO-7-ACC-04。 他认出了“ECHO-7“这个前缀。在他第一次被张启明特招后,系统曾截获过一份来自大洋彼岸的情报报告,编号就是ECHO-7。此刻他面前这个盒子的编号后缀中也有ECHO-7,中间字段ACC意味着“附属通信装置“。 “这是暗潮的前端信号收集器。“陆维桢压低声音说,“它的三根线缆分别通往管道侧壁的缝隙里——一根接电源,一根接天线延伸段,一根负责数据回传。如果把它拆下来,后面接的两根线缆如果没有新负载会立刻导致回传线路开路,触发远端的掉线警报。“ 顾晏从后面挤过来用手电照了照盒子的底部结构,低声说:“它在通过管道侧壁的原生线缆偷电。这根线原本属于管道内部的防结露伴热带的供电回路,被中间分接了一路。“ 陆维桢盯着盒子看了几秒。他能拆掉它,但拆的同时需要做一个负载模拟器接在原位上——让那两根线缆仍然感知到一个正常的电气连接状态,系统不会认为掉线了。做一个负载模拟器需要电阻、电容、一小块运算放大器和十五分钟的时间。 但他手里的材料只有顾晏挎包里那台频谱仪和几卷备用的细导线。 “做负载模拟器。“陆维桢侧头对顾晏说,“你包里应该有电阻和运放芯片。“ 顾晏从背包里摸出一个零件盒,里面各种阻值的贴片电阻用密封条分格装好。“你需要多少?“ “匹配线缆负载,不用完美匹配,只需要让远端检测不到开路就行。“陆维桢伸出手,“四十七千欧电阻,一微法电容,一块单运放,接成电压跟随器。“ 顾晏把零件递过来的动作精准到像在手术台上传递器械。陆维桢接过来蹲在管道里就着手电光开始焊接。他的手没有抖动,焊枪尖头在焊盘上停留的时间精确控制在让锡流动但不烧蚀基板的程度。四分钟后负载模拟器焊完,他用热缩管封装了接点。 “拆。“他说。 顾晏用镊子夹住盒子的数据线接头轻轻拔下。在接头脱离的同时陆维桢把负载模拟器的对应端接入了线缆回路。整个过程不到半秒。盒子的状态指示灯在短暂闪烁了一下之后重新恢复了常亮。他用手电照了一下指示灯,绿色平稳,没有告警。 盒子本身被完整地从管壁上取了下来。背面的ECHO-7-ACC-04贴纸在灯光下露出边角的一串激光蚀刻二维码。陆维桢没有当场扫描,直接把它放进了背包里封存好。金属盖板重新扣上,防尘棉垫按原样盖好,线缆的分布角度也恢复了原位。 三人沿着原路退出通风管道时,陆维桢感觉到管道外部的温度比进去时略高了一点——地面有人在靠近配电房的北侧,身体散发的热量通过地面传导进来,在封闭空间里产生了一点点可测的温差。他停下脚步,侧耳听了两秒。管道外的夜风声中夹杂了一个人的脚步声,轻重匀速,从配电房西侧绕向北侧,正在向井盖的位置靠近。 周承岳也停住了。他的右手无声地从腰间抽出一样东西,握在手里压在腿侧。管道外的脚步声在距离井盖大约三步的位置停住了。然后传来一个声音,嗓音偏低,带着轻微的沉浊感和一点非母语者特有的音节收尾方式,用中文说出了三个字:“陆维桢?“ 管道内没有回应。脚步声停在那里等了大约五秒没有移动,然后那个声音又说了一句话,语气像是在确认什么,又像是在抛出一个新的定式:“你是走了,还是在里面听着?“ 第12章 井上 管道内的空气在那一句话落地之后静止了。陆维桢蹲在黑暗里,手电已经关掉,只有管壁拐角处透进来微弱的天光反射。他感觉到自己左手边顾晏的呼吸在控制深度,右侧周承岳握在腿侧的工具在布料下面发出几乎听不见的静力压缩声。 外面的人没有走。脚步声从井盖边缘退了大约半步又站定了,像在等一个回答。夜风从井盖缝隙里漏进来,带着地面上的枯草气味和一种极淡的化学试剂余味——那种气味他在四层材料仓库里闻到过,溶剂挥发后的残留。 陆维桢用气声对周承岳说了一句,音量低到几乎只有他旁边的管壁能传导:“我能从他站的位置判断出他面朝的方向。如果他在等我们出去,他应该站在井盖正上方或者侧前方。他站的是侧后位——他不想让我们一出去就正面看到他,他想先观察我们的视线落点。“ 周承岳没有回应,但他握在腿侧的右手略微调整了握持角度。 陆维桢往前挪了一小步,贴近管道的拐角处。他把手机调到最暗的屏幕亮度,从拐角边缘探出一线来反射管道壁面上的光泽,通过手机屏幕的反光观察井盖缝隙里的外部光线分布。缝隙里透进来的光线有一块被遮挡了——那人的脚站在井盖北侧约半米的位置,一双深色靴子的鞋尖在路灯余光的边缘露出一小截轮廓。鞋底的纹路是较深的沟槽花纹,不是城市通勤鞋,更接近户外地形鞋或战术靴的底型。 “范德米尔。“陆维桢把手机收回来,低声说,“他穿了一双鞋底纹路非中式的靴子。站在井盖北侧,背朝配电房,面朝东侧围墙方向。他不想让我们在出来的第一时间看到他,但他也不打算走。他在等我们主动给出一个动静。“ 管道里的温度正在缓慢下降,通风管道的水泥壁吸收了夜间地表的凉意。陆维桢手里那只刚取下的ECHO-7盒子还贴在他的掌侧,盒子背面的激光蚀刻二维码在黑暗中像一道极浅的印记。他低头用手机的微光扫了一下那个二维码,光屏立刻在视野里展开了解码后的数据——一串嵌套的文本信息,被压缩成类似于坐标和编号的组合,末尾有一行未加密的备注字段:“ACC-04终端,用于南区通道路由节点数据的本地暂存。回传周期每二十四小时一次。下次回传窗口:十一月二十八日凌晨三点至五点。“ 陆维桢把解码后的信息记住了。他抬头看向井盖方向,夜风从缝隙里灌进来的速度比刚才慢了一点——有人站到了上风口的方向,身体阻挡了一部分空气流动。 他在管道内用手机的备忘录打了一行字,把屏幕转向周承岳:“他堵住井口是为了不让我们用原路返回,但不是为了抓我们。他如果带了足够的人手,没必要自己站在这上面等。“ 周承岳看完之后略微点了下头。他收回视线,在备忘录上打了一行回复,屏幕朝向陆维桢:“你的意思是他单独来的。“ “单独。而且他想要的东西不是我们的人,是他装在管道里的那台盒子。他只是确认盒子还在不在。“ 周承岳把手机收起来,腿侧握持的那把工具被无声地放低了。他侧过头用口型对陆维桢说了两个字:“给他。“ 陆维桢瞬间理解了。盒子本身已经不重要了——里面的数据已经被他扫走,硬件本身唯一的价值是如果被取走会导致远端触发掉线警报。但如果他们把盒子留在管道里原位,让范德米尔自己下来确认,他可以当着范德米尔的面暴露“东西还在“,同时制造一个空档让周承岳在地面上完成截停。 他退回到金属盖板前,把ECHO-7盒子重新卡进盖板下的固定位里,那三根线缆的插头按照原来的顺序接好。负载模拟器被他顺手拆了下来放进口袋。盒子上的指示灯重新亮起绿色,保持着原有的常亮状态。他转身退回管道拐角处,用手势示意顾晏后退。三人沿着通风管道向内退了大约七八米,留出了一个充分的缓冲距离。然后陆维桢在管道壁面上轻轻敲击了三下——两短一长,像是金属盖板被不慎碰响时发出的声音。 井盖上方传来了回应。一个轻微的脚步声挪动了一步,井盖边缘的铁质圈沿被什么东西轻轻勾了一下,发出一声金属叩响,然后井盖被从上方平移开了大约一掌宽的缝隙。冷空气灌进来的量比之前更大。一只手从缝隙里伸进来,戴着黑色薄手套,指间夹着一只微型手电筒。灯光在管道内壁扫了一个来回,落在金属盖板的方向,确认盖板完好、指示灯亮着,然后那只手缩了回去。 井盖重新合拢的声响在管道里回荡了很短的时间。然后脚步声向北侧移动了大约两米远的方向,停住了。 “他拿到了他想要的确认。“陆维桢用气声说,“但他在附近停下来了。“ 周承岳没有说话,他蹲在管道拐角后面,侧耳听了片刻外面的动静。风声和植被的窸窣声恢复了正常的夜晚节奏,但有一种额外的静默嵌在里面——像一个人刻意放轻呼吸之后留在空气里的空白。他无声地向前挪到井盖下方,抬起井盖一侧,从缝隙里观察外面。配电房的北侧地面上有一颗半截没入泥土的烟头,还在冒着微弱的余烟,滤嘴朝向东侧围墙方向。 他放下井盖,转身朝陆维桢比了一个手势:“他在围墙外附近。没走远,但也没必要继续留在这里等。我们可以出去了,但要走另一条路。“ 顾晏的频谱仪在此时用最低音量发出了一组序列信号提示。她低头看了一眼屏幕,侧过屏幕让陆维桢看到:频谱仪捕捉到了一段极窄带的跳频脉冲,频段跟之前暗潮的通信协议一致,但发射源位于地下,来自管道前方约五十米处,方向指向工厂建筑群方向。那个方向正好和工厂地下空腔的位置重合。而且这一段跳频脉冲的持续时间和间歇周期和之前ECHO-7盒子内部的数据备份节奏完全吻合——同一套系统在向另一个接收端发送数据时产生了同样的射频特征。 “地下空腔里还有另一台ECHO终端在运行。“陆维桢的目光从频谱仪屏幕抬起来,落在管道深处更暗的方向,“这台管道里的ACC-04只是路边的一个中继节点,核心主机在地下。范德米尔今晚来确认ACC-04还在线,是因为他真正要动的设备在下层。“ 周承岳把井盖重新卡回井圈上。他侧身沿管道向外挤了半米,贴着配电房的外墙根处找到了一个小型通风百叶窗,窗户的铁制格栅有六颗螺丝,其中三颗已经被卸掉过、槽口有轻微变形。他用工具钳依次旋下剩余的三颗,格栅被取下来,后面露出一道约半米高的通风格栅开口,穿过之后可以直接进入工厂外围的空置区域,绕开井盖附近范德米尔可能仍然驻留的位置。 他先把工具包递了出去,然后侧身钻过了通风格栅。陆维桢跟着钻出去,顾晏断后把格栅重新用三颗螺丝固定在原位。外面的空气比管道里冷,也潮湿,带着泥地和水管漏水混合的气味。三人沿着配电房东侧的围墙根快速向南移动,在穿过一段低矮灌木丛之后重新回到了那条乡镇公路上。 周承岳的SUV仍然停在机械修理铺的院子里。他上车后没有立刻启动引擎,而是先扫了一遍后视镜里和前方道路两侧的视野,确认没有灯光或车辆停留在附近,才拧动了钥匙。引擎启动的声音在深夜的乡镇公路上被压缩得很低。 车辆驶入快速路之后,陆维桢坐在后排把那只ECHO-7盒子的二维码信息完整地写进了手机备忘录里。写的最后一行是一组时间标记:“凌晨三点至五点,十一月二十八日。今天日期十一月二十七日——回传窗口就在今晚。也就是说范德米尔今晚出现在配电房附近,确认ACC-04仍然在线,然后他会在今天凌晨三点到五点之间启动地下主机那边对应的接收程序,接收ACC-04回传的数据。“ 周承岳从后视镜里看了他一眼。陆维桢继续输入:“如果我们能在今晚三点之前接入地下主机旁边的通道,在他开启接收窗口的同时切入协议层,我们可以把ACC-04回传的数据包替换成——“ 他停顿了一下。顾晏在旁边接上了后半句:“替换成我们想要他收到的东西。让他以为他收到了正确的数据,实际上那些数据由我们写。“ 车辆在夜色中平稳地沿快速路向西行驶。龙科院的建筑群轮廓在远方开始重新变得清晰,实验区的灯光在地平线上织出一片低密度的暖黄色星群。周承岳在后视镜里点了点头。他的方向盘在下一个路口略微向右偏了一个角度——不是回龙科院的方向,而是绕向了东郊工厂的南侧入口方向。 陆维桢在手机备忘录里新开了一行,写了几个字:“今天凌晨三点之前。还有时间。“写完他透过车窗看向东方的天际线,那片工厂建筑群的轮廓在月光的低照度下融进了夜色的背景里,看不清楚。但他知道它的位置。 第13章 楔入 SUV在绕过工厂南侧第三个弯道之后减速了。周承岳把车停在一条与工厂围墙平行的土路边缘,熄火时发动机的余温让前挡风玻璃蒙了一层薄雾。他没有下车,而是先把车窗降了一条缝隙侧耳听了约半分钟。外面的夜很静,只有远处偶尔传来几声犬吠,声音被围墙阻挡过后变得沉闷而遥远。 “南侧入口是货运通道,晚上没有值班岗亭。“周承岳从扶手箱里取出一张打印好的厂区平面图铺在方向盘上,“围墙上有一道铁栅栏门,门锁是普通挂锁。翻过去之后是物料堆场,堆场东面有一排铁皮库房。地下空腔的入口根据热成像判断位置在中央三层楼的底部,需要通过库房之间的通道穿过堆场才能接近。“ 陆维桢借着手机屏幕的光看了一遍平面图。物料堆场的地面标注为水泥硬化面,没有植被遮挡,从铁栅栏门到库房之间大约有六十米的开阔区域。如果厂区内有任何夜间巡视或者摄像头覆盖,这六十米就是最危险的暴露段。 “摄像头覆盖怎么处理?“他问。 周承岳从手套箱里取出一部手掌大小的设备递给陆维桢:“主动红外***,发射覆盖角度六十度,有效距离三十米。打开之后能让正前方的摄像头画面产生均匀的眩光伪像,看起来像夜间传感器自噪。持续打开时间超过十五秒会被系统识别为故障,所以只能每次开十秒就关。“ 陆维桢接过设备掂了掂重量。外壳是磨砂塑料,侧面有一枚按钮和一颗指示灯。他在脑子里快速计算了一下从铁栅栏门到库房之间的距离和步速:六十米,以正常快步走约需三十秒,中间需要开三次***,每次十秒,间隔十秒做自然冷却。路径上的摄像头如果成对交错布置,***只能覆盖单方向,需要用身体遮挡和步态配合来补足。 “我可以走。“他说。 周承岳看了他一眼,没有争论,只是把平面图收了起来。“我走前面开路,陆维桢走中间拿***,顾晏断后带频谱仪监视射频环境。“他推开车门,夜风带着泥土和金属氧化物的气息灌进来,“速度要快,落地要轻。“ 三人翻过铁栅栏门的动作几乎没发出声响。周承岳先翻过去蹲在围墙内侧的阴影里扫视了一遍堆场方向,然后朝后方打了一个手势。陆维桢翻过去的时候铁栅栏顶端的一根焊点略微松动的铁丝在他外套肩部刮了一下,他用手按住了那片布料防止刮出声响。顾晏最后落地时踩在水泥地面上的脚步声被他外套的下摆缓冲了。 堆场比平面图上看起来更大。地面上堆着成卷的金属板材和几只集装箱式的储物箱,水泥地面上有重载车辆行驶留下的轮胎痕迹和油渍斑点。陆维桢蹲在铁栅栏内侧的阴影里把***对准视线方向的第一只摄像头,按下按钮的同时快步向前移动。十秒后他松手,快步在堆放物之间蹲下,让身体和金属板材的轮廓重合。周承岳已经在第一个掩体后面就位,向他做了一个继续的手势。 第二次***开启时陆维桢穿过了一段开阔区域,落地时脚掌先触地再缓放跟,鞋底和水泥地面的接触几乎没有产生摩擦音。他蹲在一卷巨型钢带卷后面喘了半口气,旁边的顾晏已经无声地端着频谱仪扫了一遍周边频段,屏幕上的背景噪声曲线平滑,没有异常的突发信号。 第三次***开启后他穿过了最后一段暴露面,在库房之间的通道入口处和周承岳汇合。三人贴着通道外墙的阴影向中央三层楼方向移动,脚下是水泥地坪上铺着一层细碎的砂石,每一步都需要先把重心放稳再转移。 中央三层楼的轮廓在月光下显出来。建筑外形和卫星图上一致,墙体是浅灰色的涂料粉刷,没有窗户朝西。建筑底部沿着地基线有一圈水泥散水坡,散水坡与地面交汇处的防水层有一小块被切开的缺口,露出底下的混凝土边缘和一根直径约十厘米的PVC管道。管道从散水坡底部斜着伸入地下,穿墙处填充的密封胶层有一圈新鲜的重新封堵痕迹。 陆维桢蹲在管道口旁边用手电照了一下内部。管道是空的,内壁上挂着一层极薄的干涸冷凝水痕迹,管道壁的倾角向下延伸约两米后转入水平方向,灯光照不到更深的区域。管道的截面尺寸勉强可以让一个人匍匐通过,而且由于直径偏小,人在其中移动时会不可避免地摩擦管壁。 “地下通信线缆的穿墙管。“陆维桢压低声音说,“管道内部没有保温层,但凝水痕迹分布均匀说明管道内部的温度和外部土壤已经达到平衡,有人近期在管道里爬过,带走了部分凝水,留下的擦拭痕迹在灯光下反射角度不同。“他用手电照了一下管道内壁侧面的一个位置,“这里有一组新鲜的手指压印,排列间距和成年人手部宽度吻合。“ 周承岳蹲在管道口侧面的阴影里看了一眼手表。指针指向凌晨一点四十七分。距离三点钟的回传窗口还有一个多小时,但进入管道之后移动速度必然慢,需要在两点半之前到达地下空腔内部并且完成设备接入。 “我先。“周承岳把外套的前襟收紧,侧身钻入了管道口。他的肩膀宽度和管径之间几乎只有厘米级的间隙,每往前挪动一段都需要用双臂和膝盖交替发力推进。陆维桢跟在后面,管道的冷空气裹着一股淡淡的未完全干燥的水泥气味,管道内壁的粗糙表面在他屈肘推进时反复摩擦外套的前臂位置。 管道内部的水平段比预想的更长。三人在黑暗中爬行了大约六分钟之后,管道的走向开始轻微偏转,然后前方出现了光线——一道暗绿色的光从管道口的末端透进来。周承岳在管道尽头停下,从管口向外观察了片刻,然后用手势示意后方:出口位于一间约十平方米的设备间内部,天花板上的应急灯发出暗绿色光,房间内没有其他人员,有一排服务器机柜和一套桌面终端。 陆维桢从管口爬出来时身上的外套沾了一层灰白色的管道积尘。他站起来快速扫视了一遍这间设备间的布局:靠墙排着三台标准机柜,机柜门上锁,透过通风孔能看到内部的服务器硬盘指示灯在低频闪烁。房间中央的桌面上有一台开机状态的笔记本电脑,屏幕亮着,显示着一组监控画面的实时缩略图——其中一张画面正是地面那间配电房北侧的井盖视角。桌面旁边的墙上贴着一张便签纸,上面手写了一组IP地址和登录凭据。 “ACC-04的远端确认程序在这台笔记本上运行。“陆维桢凑近屏幕看了一眼监控画面的窗口标题,“它每隔十五分钟向ACC-04发送一次心跳信号。三点整的时候它会切换到数据传输模式,从ACC-04拉取数据。“他转身在笔记本键盘上敲了一行命令,调出了程序的后台进程列表,在一长串进程名里找到了对应的数据拉取服务。 顾晏已经打开了桌面终端侧面的一个接口面板,从挎包里取出信号耦合器和一组线缆。她用极快的速度把耦合器串接在终端和服务器之间的数据链路上,然后用频谱仪校验了一遍通道的误码率,屏幕上跳出一个绿色的“OK“状态。 “数据链路串接完成。“她说,“三点整的时候,数据从ACC-04回传到这台终端的过程中,耦合器会把原始数据包拦截、复制、然后转发送出。我们要写入的替换数据包会通过同一个耦合器插入传输流,终端收到的将是合成后的版本。“ 陆维桢坐在笔记本电脑前面开始构造要替换的数据内容。他在空白文本里快速写入了符合ECHO-7协议格式的模拟数据包——内容包括一组伪造的骨架应力读数、虚假的关节温度数据和没有实质意义的振动特征值。所有这些数据的数值曲线模拟得平滑合理,就像骨架真的经历了一整周的正常静置状态。他在伪造数据末尾添加了一个校验和字段,让整组数据在协议层面完全通过合法性验证。 “你在写什么数据?“顾晏站在他身后看着屏幕。 “让看到它的人相信这具骨架没有任何变化。“陆维桢敲下最后一行校验值,“右膝没拆过,左腿没打开过,管道里的盒子从没被人碰过。一切正常。他们在蓉城的采集系统仍然在正常工作。“ 周承岳已经无声地检查完了设备间的进出口。他回来时手里拿着一张从墙上摘下来的安保巡逻时间表,表上显示夜间的例行巡更时段为每两小时一次,下一次巡更时间在凌晨三点四十分。距离现在还有足够的时间窗口完成数据替换操作。 凌晨两点五十五分,陆维桢把构造好的替换数据包写入了耦合器的缓存中。顾晏最后做了一次链路通畅校验,所有数据通道的工作状态均为绿色。桌面上的笔记本电脑屏幕右下角跳出了一行系统日志:数据拉取服务将于三分钟后启动。他们三个人分布在设备间的三个不同位置,各自占住一个观察方向,呼吸压到最浅的水平,在暗绿色的应急灯光里等待着时钟走完最后的三分钟。管道入口方向传来一丝极其微弱的空气流动,搅动了设备间地面上积着的一层薄尘,但数据链路上仍然安静。 第14章 撤点 凌晨两点五十九分四十秒,笔记本电脑屏幕右下角的系统日志窗口开始逐行刷新预备信息。陆维桢的手指悬在键盘上方,没有触碰任何按键。耦合器已经在线,替换数据包已经写入缓存,现在只需要等传输服务自动启动时让数据走完预设的路径。 时间跳到了三点整。日志窗口里跳出一行文字:“数据传输服务启动,拉取目标:ACC-04终端存储区。文件大小:约4.2MB。“紧接着第二行日志出现:“连接成功。握手协议验证通过。开始传输。“ 陆维桢能感觉到桌面上的笔记本内部硬盘在轻微转动。耦合器上的状态指示灯从待机的暗绿色切换为传输中的淡蓝色,持续了大约十二秒左右,然后蓝灯恢复到暗绿色。日志窗口里出现了两行新的文字——第一行是“数据传输完成,校验和验证通过“,第二行是“本地存储已更新。等待下一次拉取任务。“ 他慢慢吐出一口之前一直屏着的气。顾晏从侧面走过来看了一眼屏幕上的校验和验证字段,用手机拍了张照片然后退回去。周承岳站在设备间入口方向,视线一直停留在走廊的暗处没有移开过。 “替换数据已经被当作原始数据存进这台终端的本地存储了。“陆维桢低声说,“ACC-04那边的原始数据还在,但下次有人从ACC-04直接提取硬件时会发现数据和终端里存的不一致。不过按照他们二十四小时回传一次的周期,下一次拉取在明天凌晨三点。在此之前我们有整整一天的时间窗口处理这个问题。“ 周承岳收回了目光,转身扫了一遍设备间的墙面。桌面上的便签纸仍然贴着那组IP地址和登录凭据,他用手机拍了一份留存。墙角的机柜里有一台设备的风扇转速比其他的略快,发出的风噪在安静的设备间里形成了一处可辨的声学特征。 “巡更三点四十到。“周承岳说,“现在撤,时间够。原路返回。“ 陆维桢把笔记本电脑的屏幕恢复到了他进入时的状态,没有留下任何操作痕迹。他把耦合器从链路中摘下来装进顾晏的挎包,桌面终端的接口面板重新盖好,螺丝拧回原位。墙角那只风扇转速略快的机柜也没有被动过。 三人依次钻回管道,顺序倒了过来——顾晏先进入,陆维桢跟在她后面,周承岳断后。管道内壁的冷空气再次包裹上来,带着凝水蒸发后的轻微土腥味。陆维桢在匍匐前进的过程中用外套前臂尽量覆盖管道壁面上的指纹和摩擦痕迹,但十指在粗糙水泥面上的少量接触痕迹是不可避免的。他回头看了一眼管道入口处,确认周承岳正在用一块干布擦除他爬入时留在管道口边缘的泥土和表皮碎屑。周承岳做完这些之后才倒退着进入管道,在他经过的位置同样用外套覆盖了自己留下的摩擦痕迹。 管道水平段的移动比进来时更快。三人已经熟悉了管道内壁的曲率和障碍位置,手肘和膝盖的发力点形成了肌肉记忆。大约四分钟后他们到达了管道起点的斜坡段,陆维桢从管道口探出头,确认配电房北侧没有被触动过的痕迹,然后侧身滑出来站在散水坡旁边的地面上。顾晏跟着出来蹲在井盖侧面把遮盖用的杂草重新铺了一下,周承岳最后出来时带出了管道口边缘的一片干土,他把土撒在附近的碎石地面上,让管道口周围的视觉连续性保持自然。 三人穿过堆场返回铁栅栏门的过程比进入时更快,周承岳在前方选择了一条利用堆放物阴影遮蔽的路径,避开了之前需要开启红外***的那几段暴露区域。翻过铁栅栏门回到土路上时凌晨的风比前半夜更冷了,陆维桢感觉到后背的外套布料被管道内的凝水浸湿了一片,贴在皮肤上冰凉潮湿。 SUV引擎重新启动的低响在夜风中显得格外清晰。周承岳没有等发动机预热到正常温度就缓慢驶离了土路,沿着乡镇公路向北行驶了大约两公里之后在一个路口转向了通往市区方向的快速路入口。车辆上了快速路之后他提速到了正常的夜间车流速度,偶尔从后视镜里扫一眼后面的路况。没有尾随的灯光。没有异常。 陆维桢坐在后排,把外套脱下来翻了一面搭在膝盖上晾着。他打开手机备忘录再次核对了一遍替换数据包的协议格式和校验和字段,所有数值都比对无误。他又翻出之前从ECHO-7盒子背面扫到的二维码解码信息,确认了一遍回传窗口的时间标记——十一月二十八日凌晨三点至五点。替换数据已经成功写入,下一次回传窗口在明天凌晨。 但这只是设备的回传周期。范德米尔本人的行动窗口不一定会等到明天凌晨。陆维桢靠在座椅里闭上眼睛快速过了一遍今天晚上所有的节点——井盖上的对话、管道里的盒子、设备间的终端、未完成的巡更。范德米尔出现在井盖上确认ACC-04的状态,说明他需要确认数据链条上每一个环节正常,然后才会在正式回传窗口开启时接收最终数据包。如果一切正常,他应该会在明天凌晨三点到五点之间出现在某个可以接收数据的地点。 “我们这次截断的只是ACC-04到地面终端这一段的传输。“陆维桢睁开眼睛,“范德米尔拿到替换数据之后如果觉得不放心,他还有可能从地下主机那边直接提取原始数据做交叉比对。“ 周承岳从后视镜里看了他一眼:“你的意思是替换数据只能挡一次。“ “如果他在明天凌晨接收完替换数据之后仍然觉得有问题,他有退路。地下主机里的原始数据如果没有被我们处理过,他随时可以找人下去做物理提取。“ 顾晏从副驾驶座侧过头来:“地下主机的位置我们已经大致判断了,中央三层楼底部的空腔。如果范德米尔明天凌晨来接收数据的同时也派了人去地下空腔做物理提取,那我们替换数据包这件事只能拖住远程链路那一端——不能阻止他拿到原始硬件。“ 陆维桢重新打开手机地图放大了东郊工厂的卫星图像。中央三层楼的地基轮廓在俯视角度下比较清晰,底部似乎有一圈比建筑主体范围更大的阴影区,面积大约相当于主体结构向外延伸了三到四米。这圈阴影区很可能是地下空腔外围的防水保温层铺设范围,这也意味着地下空腔的实际边界比热成像显示的面积更大。 “地下空腔的面积比我们原先估计的至少大了三分之一。“陆维桢把手机侧过去让顾晏和周承岳都能看到,“如果它的入口不止一个,那范德米尔要派人去物理提取的时候未必会走我们今晚走过的那条路。说不定还有第二条、第三条通道。“ 顾晏接过手机放大看了看那圈阴影边界的走向。她的食指点在阴影区南侧一个不太明显的转角处:“这个位置的阴影边缘有一个向内收缩的折角,不符合常规防水层的施工手法。防水层通常会保持平滑的外延轮廓,不会产生这种锐角折弯。这个地方可能本身就是一个不同的结构体——一个附属的设备间或者竖井通道。“ 周承岳在前方的一个服务区入口打了一下方向灯,缓慢减速拐进了服务区。他把车停在一排夜间关闭的商铺前面,熄了火,然后转过来看着后排。“先不走。现在掉头回去太早,回龙科院又太近。在这里等一等,天亮之前做个判断。“ 服务区的灯光稀疏而偏冷白,隔着车窗外层的凝霜看出去路灯的光晕被折射成了一个个模糊的同心圆。陆维桢看了一眼车上的时钟——凌晨三点四十二分。他想象着此刻东郊工厂设备间里的那台笔记本电脑,屏幕上大概还亮着监控画面的缩略图。夜班巡更的人应该刚经过那个区域,在安静的走廊里走完一圈之后回到值班室,然后掏出手机刷一刷。 但他脑子里有一个更紧迫的念头。如果范德米尔不在明天凌晨回传窗口才行动,而是立刻动手。今晚的管道口检查、ACC-04的确认,他自己出现在地面上本身就是一个信号。如果他已经拿到了想要的确认,等不到明天凌晨三点就会提前启动地下主机的数据提取流程。 陆维桢把外套翻回正面重新穿上。凝水还没干透,但至少冷风不会直接吹到皮肤了。“顾晏,“他说,“你刚才在设备间有没有看到那台笔记本上除了ACC-04之外还有没有其他终端的状态指示?“ 顾晏低头想了想,然后从挎包里取出手机翻看了一张她在设备间拍的照片。她把照片放大到监控缩略图那一栏,指着画面底部一行字:“这里。终端列表里除了ACC-04之外还有一个条目,名称标注的是'B1-SUB'。状态显示为红色'离线'。当时我以为是地下主机的子设备出了问题,但如果B1-SUB就是地下空腔内部的那台主机——它的离线状态可能说明它已经被提前取走了。“ 陆维桢凑过去看了那张照片。B1-SUB,状态红色,离线时间戳标记为十一月二十七日晚上八点十七分。距离现在大约七个半小时。这个离线时间正好和范德米尔出现在蓉城、宋喆从龙科院北门出去的时间段重叠。 地下主机已经不在原处了。它在今天天黑之前就被人取走了。今晚范德米尔来确认ACC-04的状态,是收网的最后一步。 陆维桢靠在座椅里看着服务区空旷的停车场上那片冷白色的灯光,玻璃上的凝霜把光线柔化成一层模糊的晕圈。光屏在视野里无声地亮了一行字:“离线设备在最后通信记录中向一个蓉城市区内的IP地址发送了确认信号。那个IP地址段属于城中心的国际连锁酒店。“ 第15章 锁孔 服务区的灯光在凌晨四点的风里微微颤动。周承岳没有发动引擎,只是把驾驶座的靠背略微后调了一点,让视线保持在前方路面的覆盖范围内。顾晏把那台频谱仪重新拿了出来,开机后扫了一遍周边环境,屏幕上的噪声曲线平直稳定,没有异常的射频信号。 陆维桢靠在座椅里闭着眼睛,但脑子里“天工“系统的光屏正在持续运作。B1-SUB离线时间戳的数据已经被系统做了多轮关联分析,输出结果以简洁的条目形式排列在他的视野里:十一月二十七日晚八点十七分,B1-SUB向蓉城中心区某IP发出确认信号。该IP段正好覆盖那家国际连锁酒店的B座客房网络。确认信号的数据包大小只有不到十千字节,内容很可能是位置确认或者身份验证,而不是数据本身。 他睁开眼。“范德米尔把硬件拿回了酒店。“他说,“B1-SUB的离线信号发送时间是晚上八点十七分,他在那之前就已经把设备从工厂地下取出来了。今晚他出现在井盖旁边,一是确认ACC-04还在工作,二是看看有没有人在井盖附近做多余的动作。“ 周承岳把座椅靠背调回了竖直位置。“所以他手里现在有地下主机的原始数据。“ “有。“陆维桢说,“但他拿到的数据和我们今天替换进终端的那批数据不是同一份。B1-SUB作为地下主机,它存储的数据范围比ACC-04更广。ACC-04只是它的一个数据接收节点,类似于它放在外面的耳朵。B1-SUB里面存着过去一段时间内从多个节点采集汇总的全部原始记录。范德米尔拿走了整套数据集。“ 顾晏从挎包里取出手机重新翻看了设备间的照片,把终端列表里那条离线状态的时间戳截图放大。“如果B1-SUB在八点十七分发送了确认信号到酒店IP,说明范德米尔到酒店的时间应该早于八点十七分。他把硬件带进房间之后开机通电,它自动连上了酒店的网络并发送了位置确认信号。“ “那他拿到数据之后为什么还要去井盖旁边确认ACC-04?“周承岳问。 “他要确认数据链路上的每一个环节都处于未被触碰的状态。“陆维桢说,“他有原始数据,但如果ACC-04或者终端链路被人动过,那原始数据和链路数据之间的偏差会被记录下来。他需要确认他的整条采集网络从硬件到传输到接收都还是干净的。今晚他确认完ACC-04之后,才会在明天凌晨三点正式接收终端里存的那批数据。两条链路的数据如果一致,说明系统仍然安全。“ 陆维桢说到这里停了半拍。他意识到范德米尔的计划有一个核心逻辑前提:他必须等到明天凌晨三点接收到终端数据之后,才能对比两组数据做一致性判断。这意味着——从现在到明天凌晨三点之间,范德米尔还不会对酒店房间里的B1-SUB硬件做任何处理。他需要那个硬件里的原始数据留着,等到明天凌晨接收完终端数据之后做比对。 “硬件还在他酒店房间里。“陆维桢说,“他没动过它。因为他需要等终端数据到齐之后再一起处理。“ 周承岳的车钥匙在点火开关上转动了半圈,引擎低鸣着启动了。他没有说话,但车的方向已经明确——返回市区,朝城中心方向驶去。快速路上的车流在凌晨四点多仍然稀疏,深色SUV以稳定的速度穿过一段段路灯照亮的桥面,城区建筑的轮廓开始在前方的天际线处密集起来。 陆维桢在手机上打开了那家国际连锁酒店的建筑结构图纸,是通过公开的地产备案信息查到的。酒店B座一共十二层,标准层平面呈回字形布局,客房分布在回字形外围,中间是采光天井。范德米尔登记的房间号在六层,朝向西南,正好对着龙科院方向和东郊工厂方向之间的夹角。 “如果硬件被带进房间之后开机通电就自动发送了确认信号,“顾晏说,“那它现在应该还在房间内。酒店客房不像实验室,没有电磁屏蔽,它的射频信号如果还在工作,频谱仪在外部就能收到。“ 陆维桢看向顾晏挎包里的那台手持式频谱仪。他在心里估算了一下酒店建筑结构和外部街道之间的距离:六层楼,西南朝向,靠近酒店内部天井的墙壁厚度大约二十五厘米,外侧幕墙是玻璃幕加金属龙骨。射频信号穿透这些结构之后到达街面的衰减量应该仍然处于可测范围内。 “车停酒店对面那条街。“陆维桢说,“面向西南方向,六层高度的位置。如果信号还在,我们在街对面应该能捕捉到。“ 周承岳在一个路口减速后转向了酒店北侧的一条平行街。车辆在一排夜间关闭的商铺前面停了下来,车头朝酒店方向。从这个角度看上去,B座六层西南方向的窗户正对着他们所在的街面,之间有大约四十米的直线距离。 顾晏把频谱仪的天线从车窗缝隙伸出去,对准酒店B座六层西南方向的窗面启动了扫描。屏幕上跳出了噪声基底之上的微弱信号峰值,频率稳定在一个与ECHO-7设备工作频段吻合的窄带范围内。信号强度不高,但持续存在,间隔特征和设备待机状态下的周期性心跳信号完全一致。 “硬件还在房间里。“顾晏把屏幕侧向陆维桢,“信号强度显示它的位置在六层西南侧,正对着我们。没有任何移动或者被屏蔽的迹象。它还在原地等明天凌晨的数据比对。“ 陆维桢透过前挡风玻璃看向那扇窗户。六楼西南方向的窗帘是半拉的,透出一线暖黄色的室内灯光。看不到人影,看不到活动痕迹。整个酒店外观在凌晨的街道灯光下沉睡着,只有大堂门廊的顶灯亮着将一小片地面照成暖白色。 他把目光收回来,落在自己的手背上。车内的暖气把窗玻璃上的凝霜融化了一层,水滴沿着窗面流下来,把酒店的外轮廓模糊成一条条垂直的亮线。 “B1-SUB的确认信号发送给酒店IP之后,“他开口时声音不大,“服务器那边会收到一个回执,内容应该是'设备已上线,等待数据接收指令'。范德米尔如果想在明天凌晨三点接收数据时让B1-SUB正常工作,他不能把它关机。它要保持在线状态等待指令。“ 周承岳在驾驶座上沉默了一下。“那你有没有办法让它“换一个人等待指令“?“ 陆维桢看着那扇半拉的窗帘。车窗上的水滴继续垂直流淌着,把窗帘和灯光拉成一道道模糊的流光。他脑子里正在快速评估一个操作的可行性:酒店房间距离街面四十米,设备发出的射频信号被他用频谱仪捕捉到了,那么反向——如果他从街面上向酒店房间发送一个伪造的指令包,只要功率和协议匹配,B1-SUB会把它当作来自服务器的合法指令来响应。 “需要两个条件。“他说,“第一,我要知道它的指令格式——今天从ACC-04和终端数据里我们已经拿到了足够多的协议样本。第二,我要在它接收指令的频段上以适当的功率发送伪造数据包。“ “用定向天线。“顾晏说,“频谱仪的射频输出口可以做发射源,配合一只定向天线聚焦射向六楼那扇窗户。功率控制好,确保信号到达时刚好在设备的接收灵敏度以上,不会让房间内的其他电子设备产生误响应。“ “需要多近距离?“周承岳问。 “不需要更近。“陆维桢说,“四十米,定向天线的波束半径在三米以内,刚好覆盖那扇窗户的区域。我坐在车里就能完成发射。“ 他重新看向那扇窗帘半拉的窗户。暖黄色的灯光稳定地从缝隙里透出来,把窗帘边缘的一小段轮廓照得清晰可见。他的手指悬在笔记本的键盘上方,准备开始构造伪造指令包。外面的路灯在凌晨的低温中发出稳定的白光,酒店建筑整体的轮廓在夜空中安静地矗立着,六楼西南朝向那扇窗户透出的灯光像一只半阖的眼睛注视着街对面深色SUV里坐着的人。 但陆维桢在准备开始输入之前,忽然注意到了另一件事。那扇窗帘透出的灯光在窗面左上角有一个极小的暗斑——不是玻璃上的污渍,而是从房间内部投射在窗帘上的一个形状规整的物体剪影,大小和轮廓近似于一台台式机箱或同等尺寸的设备。它贴在窗帘内侧,没有移动,没有变化,和灯光一起稳定地存在于那里。 他盯着那个暗斑看了几秒。天工系统的光屏自动拉近了那个区域的图像对比度,暗斑的边缘被锐化后呈现出清晰的矩形轮廓,侧面还有一组隐约可见的通风孔阵列——那种标准服务器机箱的散热格栅形态。B1-SUB就放在窗帘内侧的桌面上,正面朝向龙科院的方向,正在安静地等待明天凌晨三点接到的指令。它的散热格栅在窗帘上留出的暗斑像是嵌在光线里的一个方形印记,比周围亮着的部分暗了一整圈,像是在告诉对面街上的每个人它所处的位置。 第16章 猎时 暗斑在窗帘上保持着恒定不变的矩形轮廓。陆维桢盯着它看了大约三十秒,确定那不是风吹动窗帘造成的晃动光影——它的边缘锐利、稳定,和窗帘布料的自然褶皱完全叠加在一起,没有相对位移。他把视线收回来,落在笔记本电脑屏幕上,开始构造伪造的指令包。 指令包的结构在他脑中由“天工“系统实时补充完善。从ACC-04盒子抄录下来的协议样本提供了完整的握手流程和指令字段定义,系统根据这些字段逆推出了B1-SUB作为下游设备所接受的指令格式类型。需要伪造的指令内容很简单:一个“数据同步启动“指令,附带一个回传坐标字段——把回传目的地指向龙科院北区三号楼地下三层的IP地址。 “把它的数据引回我们那边。“陆维桢一边输入一边低声说,“不是窃取,是让它主动送过来。“ 顾晏从挎包里取出那只定向天线,用吸盘支架固定在副驾驶座的车窗玻璃内侧。天线对准了酒店B座六楼西南窗面的方向,她在手机上打开了一款简易的瞄准辅助应用,利用手机陀螺仪把天线的指向角度校准到目标窗户的精确方位。整个过程无声而迅速。 “定向天线的波束宽度大约十五度,“她说,“在四十米距离上覆盖半径约五米。那扇窗户的宽度大约一点八米,在波束中心覆盖范围内。信号到达时功率控制在设备的接收灵敏度以上约六个分贝,不会溢出到相邻房间。“ 陆维桢把伪造指令包的最后一行校验值写完。他在一个测试终端上模拟了一遍协议层的完整流程,确认指令包能被目标设备正确解析。系统光屏给出通过标记之后,他抬头朝顾晏点了一下头。 “可以发射了。“ 顾晏把天线连接到频谱仪的射频输出口,在频谱仪面板上设置了发射功率和中心频率。陆维桢从笔记本上把指令包通过数据线传到频谱仪内部,然后按下了发射键。射频信号从天线端发出时车内没有任何声音变化——只有频谱仪面板上的发射指示灯短暂地亮了一下又熄灭。整个发射过程持续了不到两秒。 车载的频谱仪在接收模式下同时捕捉到了返回的握手信号。陆维桢盯着屏幕上的波形变化:B1-SUB收到了伪造的指令包,解析了指令内容,然后按照指令里指定的回传坐标开始发送数据。酒店房间内的设备在没有被任何人物理触碰的情况下,正在把存储的全部原始数据通过无线信道往外发。数据包的目的地坐标在龙科院北区三号楼的IP地址。 “数据回传开始了。“陆维桢低声说,“传输速率大约每秒五十千字节,总数据量按B1-SUB的存储容量估算大概在几百兆左右。全量传输大约需要一到两个小时。“ 周承岳从驾驶座侧过身看了一眼仪表台上的时钟。凌晨四点三十三分。到六点半左右可以完成全量传输,留出几个小时的缓冲时间再等范德米尔在凌晨三点拉取终端数据。他重新坐直了身体,把座椅略微调低了一档,让自己在等待期间保持一个可以随时启动的姿态。 顾晏把频谱仪切换到了被动监听模式,屏幕上的数据流进度条开始缓慢增加。她看着那些数据包逐行通过,每一帧的校验和都显示为绿色通过。“他设备里的东西正在过来。原始数据、历史记录、配置参数、可能还有它和其他节点之间的通信日志。“ “如果有通信日志,“陆维桢说,“就能还原出过去一段时间内整套数据采集网络的拓扑结构。“ “包括它跟哪些节点交换过数据、交换频率和周期、以及那些节点的位置。“顾晏把频谱仪的屏幕往陆维桢的方向倾了倾,“日志应该按时间顺序排列。最早的条目可能覆盖到几个月前,甚至更久。“ 陆维桢看着数据流持续在频谱仪屏幕上跳动。他不知道范德米尔什么时候会发现传输通道已经被占用,但至少在接下来的一个多小时里,酒店房间内的设备会继续安静地向外输送数据。只要没有人主动检查那台设备的工作状态指示灯或者网络连接状态,这个过程就能持续到传输完成。 四点五十分。数据传输进度到了大约百分之十七。陆维桢把视线从频谱仪屏幕上移开,透过前挡风玻璃再次看向酒店六楼西南方向的窗户。窗帘上的暗斑仍然在原处,形状、位置、边缘都没有变化。窗外的街面上依然没有人走动,整条街道在凌晨时分的灯光下沉睡着。 但他注意到了一点不同——窗帘底部有一道极其细微的褶皱偏移。那道褶皱之前是向左侧倾斜的,现在变成了向右侧略微偏转,偏移量大约只有一两厘米。这个变化太小了,如果不是因为他刚才盯着窗帘看了足够久,几乎不会注意到。但褶皱改变了方向意味着窗帘被碰过。而窗帘内侧唯一可能碰触到它且不留下明显痕迹的东西,就是那个B1-SUB机箱在被人移动时布料随着箱体表面摩擦产生的位移。 房间里有人的脚步移动了机箱的位置。幅度很小,大约几厘米,但足以让窗帘的布料在接触面上被推出一道新的褶皱方向。 “房间里有动静。“陆维桢的声音压到最低,“机箱被人碰了。量不大,但移动过了。“ 周承岳没有回头,但他的右手从方向盘上移到了挡位杆旁边的位置。“他在房间里。“ “不一定是他。“顾晏说,“也可能是酒店客房服务或者安全巡检。“她停顿了一下,看了一眼车上的时间,“凌晨四点五十,不是常规的客房服务时段。“ 陆维桢重新看向那扇窗户。窗帘没有再出现新的褶皱变化,暗斑的形状也没有继续移动。房间里的人在碰了机箱之后没有再动它,可能只是做了一个检查——确认设备仍在正常运行。检查完毕之后他退回去了,窗帘恢复了稳定的静止状态。 数据流还在继续传输。进度到了百分之二十一。频谱仪屏幕上的波形平稳地延续着,每一个数据包的校验和都正常通过。 “如果他检查了设备,“陆维桢说,“可能会看到它的网络活动指示灯在闪。正常情况下待机状态的设备网络指示灯应该是慢闪,现在它正在全速传输数据,指示灯会变成快闪。这个变化在设备正面是可见的。“ 周承岳的手从挡位杆旁边收了回来,转而在方向盘上握紧了一下又松开。“那我们应该假设他已经看到了。“ 陆维桢盯着窗帘上那个暗斑。它在暖黄色的灯光背景下保持着矩形剪影的轮廓。然后那个轮廓突然动了——从桌面上升起了大约十五厘米,平移了大约半米,然后重新落下。机箱被拿起之后放到了另一个位置。这个动作的幅度比刚才的褶皱偏移大得多,明确地表达了“移动它“的意图。 他把笔记本的屏幕亮度调到最低,快速打开了数据流记录的实时日志。传输进度在百分之二十四的位置出现了一次短时中断——中断时间约两秒,然后重新恢复。中断是设备端主动发起的,像是有人在机箱上按了电源键或者网络接口被插拔了一次。但中断只持续了两秒,说明那个人在插拔网络线缆之后发现信号自动恢复了,没有继续操作。 “他发现网络接口被占用了。“陆维桢说,“但他不确定原因——接口拔掉再插上之后数据流自动恢复,他可能以为是设备本身的定时任务或者系统故障。这种两秒的插拔操作更偏向于试探,而不是终止。“ 窗帘恢复了静止。机箱没有再被移动。但窗帘内侧的光影中多了一个新的影子——人的头部和上身的轮廓,在窗面和窗帘之间形成了一道微弱的光学阻隔。有人正站在窗帘后面,面朝窗外,看向街对面的方向。那道影子停在窗帘内侧大约两指宽的距离处,没有贴上去,没有动作,只是安静地面朝着街面。 周承岳把引擎从熄火状态无声地切换到了待机供电模式,确保所有车内照明全部关闭。三个人在黑暗的SUV内部保持着绝对静止,从外面看这辆车和周围其他夜间停放的车辆没有任何区别。窗帘后面的那道影子站了大约十几秒,然后退回了房间深处。窗帘恢复到了只有暗斑的原始状态。 陆维桢慢慢呼出一口气。频谱仪上的数据传输进度仍然在稳步增加,刚才的两秒中断没有影响到整体传输的持续性。数据流底部跳出了一行新的日志条目:传输日志显示有一组新的指令在刚才的插拔操作之后从B1-SUB发出,目的地坐标指向了一个全新的外部地址——那组地址的格式跟龙科院的数据回传地址完全不同,它指向的是一组加密的云端存储节点,坐标解析结果为境外的商业云服务商。 B1-SUB在被人物理接触之后自动触发了备份机制,把数据传输到了另一个位置。它在被人检查的时候,已经同步把自己复制了一份送到了暗潮的远端服务器上。 陆维桢看了一眼车上的时钟。传输进度到了百分之二十九,剩余数据量还需要大约四十分钟才能完成。但被送到云端存储节点的那份备份,现在已经永久离开了蓉城。窗外酒店六楼的窗帘依旧半拉着,暖黄色的灯光从窗帘缝隙里漏出来,像一只闭不上的眼睛。 第17章 断链 窗帘后面的暖黄色灯光在五点左右变成了暗色——不是逐渐调暗,而是一次性熄灭。房间内的照明被人从内部关闭了。伴随着灯光熄灭,陆维桢手中的频谱仪屏幕上的数据流进度条也同时归零。传输中断。B1-SUB的信号从酒店六楼西南窗面的方向彻底消失。 “他关机了。“顾晏的声音在黑暗中压到最低,“或者拔掉了电池。信号完全消失,设备进入了物理断电状态。“ 陆维桢盯着频谱仪屏幕上那条突然断裂的数据流曲线。最后接收到的进度是百分之四十一,传输了一部分,但剩下的大半数据仍然留在了酒店房间的那台硬件里没有出来。而那台硬件现在处于断电离线状态,它内部的存储芯片里存着的原始数据不再通过任何无线信道发送。 范德米尔发现的比他想象的多。他拔掉网线又重插之后看到数据流自动恢复了,但他没有坐视不管。他紧接着做了一件更彻底的事——直接切断了设备的电源。这说明他在拔插网线的两秒内确认了数据流向是异常的,然后立刻做物理层面上的完全切断。他不再做任何软件层面的试探,直接关掉了整台机器。 周承岳已经启动了引擎。车辆在街道上以怠速向前移动了大约三十米,停在酒店B座大堂入口侧面一处视线更好的位置。从这个角度可以同时看到酒店大堂的正门和地下车库的出口坡道。大堂内部的灯光仍然亮着,前台有一名值班人员坐在电脑后面,姿态和之前一样没有变化。六楼那扇窗户现在全黑,窗帘的轮廓在建筑外墙的阴影里融成一片无法分辨的暗色。 “他可能会走地下车库。“顾晏说,“B1-SUB机箱尺寸大约相当于一台小型台式机,用手提包或者行李箱可以带出来。走大堂太显眼,车库更隐蔽。“ 陆维桢把目光从六楼移到地下车库出口坡道的位置。坡道口有一盏灯,照在混凝土路面上的光斑呈椭圆形。坡道深处暂时没有车灯的反光,也没有引擎声从地下传来。他收回视线时注意到酒店侧面的消防通道门有一个微小的动作——门缝从内部被推开了一指宽的间隙,然后停住了。 他抬手朝周承岳的方向示意了一下,指尖指向消防通道门的位置。周承岳的视线快速扫过去,左手无声地把车窗降下了大约三厘米,让外面的空气和声音可以更直接地传进来。 消防通道门从内部被完全推开了。一个人影从门内闪出来,穿着一件深灰色的长款外套,左手拎一只黑色尼龙提包,包体侧面有一个方形的硬质突起轮廓——尺寸和B1-SUB机箱的长宽高吻合。人影没有走向地下车库坡道,也没有走向大堂正门。他沿着酒店建筑侧面的步行通道朝北走,脚步不快不慢,姿态自然,像是一早出门的普通住客。 “他走了步行方向。“陆维桢低声说,“没有开车,可能是为了减少被车辆识别追查的可能性。“ 周承岳把车缓慢地沿路边朝北滑行了一段距离,保持在和那人步行速度平行的节奏上。人影继续沿着人行道向北走了大约一百五十米,在一个公交站台处停住了。站台上空无一人,早班公交车的首班车时间大约在五点半之后,但此刻五点刚过。他在站台上站定之后把提包放在脚边的地面上,从外套口袋里掏出一部手机,低头操作了片刻。 顾晏把手持式频谱仪重新举起来,天线对准公交站台方向扫了一下。屏幕上跳出了一组短暂的窄带信号——持续了大约三秒,然后消失了。“他在发送一条短报文。频段跟之前ECHO-7设备的握手频率一致,但功率很低,应该是手机端的加密通讯应用在发送短消息。“ 发送完消息之后,人影把手机收回口袋,弯腰拎起提包,然后没有继续等公交车——他离开了站台,沿着一条小巷拐入了建筑群背后的老街区。老街区道路狭窄,两侧是早期建的居民楼和底层商铺,巷道路面狭窄到车辆无法驶入。周承岳在一百多米外的位置减速停下,没有再跟进去。 “放弃跟进了。“陆维桢开口说,“他特意走步行方向、在公交站假装等车、然后拐入车辆进不去的街区,都是为了确认有没有车跟踪他。如果他发现任何车辆减速或者转向的节奏变化,他就能判断出来。不走地下车库是对的。“ “他发消息的接收方呢?“顾晏问。 “从信号强度和频段判断,短报文的接收方距离不远。如果是远程转发,功率不会这么低。接收方就在这附近——可能在相邻的街区甚至同一栋建筑的另一个房间。“ 陆维桢把这句话说完之后沉默了。他知道范德米尔发送那条短报文的内容是什么:可能是在汇报数据链路被破坏、B1-SUB被迫断电撤离、以及后续的接应路线。接收方就在附近,说明今晚在酒店周围活动的暗潮成员不止他一个人。 周承岳把车停在老街区入口附近一处可以观察到巷口的位置。引擎持续怠速运转,车内暖气保持着恒温。天色在窗外开始从纯黑变深蓝,然后缓慢地亮起一层薄薄的灰白。街面上出现了早起的环卫工和零星的晨跑者,清晨的城市正从夜间模式切换回白天的节律。 六点十二分的时候,周承岳的加密手机震动了一次。他接起来听了不到十秒,挂断之后把手机放回夹克内袋。“技术组说B1-SUB传输过来的那百分之四十一数据已经完成了解析和初步整理。里面包含了过去三个月内暗潮在这座城市布设的部分设备清单和坐标记录。其中几个坐标的位置不在工厂区,也不在龙科院周边——它们分布在蓉城西部的工业区里。“ 陆维桢把那句话在心里过了一遍。蓉城西部的工业区在地理上与龙科院完全相反的方向,与东郊工厂之间隔着一整座城市的纵深。暗潮在蓉城布设的节点不止一套设备,他们有两个方向的数据收集点——东边和西边同时运行。东边的节点主要负责龙科院方向的数据采集,西边的节点负责另一些目标。 “西边还有什么值得他们长期布设采集点的单位?“陆维桢问。 周承岳从后视镜里看了他一眼:“那边有一座航空动力研究所,做涡扇发动机核心机的。“ 陆维桢靠回座椅里。光屏在视野里亮了一行浅灰色文字,字数不多:“B1-SUB传输的数据中有一份坐标记录对应西部工业区某建筑物地下两层的设备间。该建筑的产权归属信息与一家航空材料供应商相关联,该供应商曾多次参与涡扇发动机叶片材料的军工配套项目。“ 他把那行字看完,没有念出来。车窗外的晨光正在逐渐增强,街面上的行人车辆逐渐增多,老街区入口的巷口恢复到了日常城市街道的状态。公交站台上有一个拎菜篮的老人正在等车,公交车从远处开过来的声音沿着马路传过来。范德米尔消失在老街区深处的身影已经彻底融入了早间人流,找不到任何区分于普通路人的特征了。 但陆维桢记住了那份坐标记录。百分之四十一的数据量比预期的少,但其中包含的关键信息密度足够高,已经让暗潮在这座城市里的节点布局露出了明确的一角——西部还有一套他们在运行的系统。那套系统不在龙科院周边,它的目标在航空动力方向。 周承岳启动了车辆,朝龙科院方向驶去。后排座位上陆维桢把笔记本电脑打开重新扫描了一遍传输数据的目录结构,在文件夹列表深处看到了一个子目录,命名格式和其他的不同——一串以“ECHO-7“结尾的编码之后跟着一个后缀:“/WEST-SUB-01“。这个目录的内容没有被完整传输过来,只有前几层目录树的结构信息。但从命名方式来看,它对应的坐标位置指向蓉城西部那座工业建筑的地下二层。 他把笔记本电脑合上。窗外的晨光已经完全亮了,街道两侧的商铺开始陆续卷起卷帘门,早餐铺子的热蒸气从门檐底下冒出来在冷空气中凝成白雾。东方的天际线被初升的太阳染成一层浅淡的橘红色,把蓉城早间街道的轮廓描绘得分外清晰。 酒店B座六楼西南朝向的窗户在晨光中恢复了窗面的正常颜色。窗帘仍然半拉着,但房间内已经不再有任何信号发出。没有人知道范德米尔此刻在老街区深处的哪条巷子里,也可能已经换了一辆出租车继续移动,也可能坐在某间不引人注意的早点铺里吃一碗面,然后翻开手机看那条短报文有没有收到回信。 陆维桢在车后排闭了一下眼睛。天工系统光屏仍然亮着,底部有一行极细的灰色文字安静地浮现出来:“蓉城西部航空动力研究所周边的信号背景噪声水平在最近三小时内发生了规律性波动。波动模式与B1-SUB离线前的最后一次心跳信号时序吻合。“ 有人已经抵达了西部那套系统所在的位置。时间恰好是范德米尔发出短报文之后的三小时以内。 第18章 剖影 SUV驶入龙科院北区停车场时晨光已经完全亮了。园区内部道路上有穿深蓝色工装的保洁人员在清扫落叶,几辆带有院徽的白色面包车停在食堂门口,热气从排气口冒出来在冷空气中凝成雾气。周承岳把车停在员工通道入口附近,熄火后从前排扶手箱里取出一只加密存储盘递给陆维桢。 “技术组把B1-SUB传过来的数据全部转存到了这只盘里。“他说,“原始数据和解码后的结构树都放在里面。你回地下三层用工作站跑分析,西部工业区那套系统坐标相关的文件夹已经做了标签。“ 陆维桢接过存储盘握在掌心,盘体的金属外壳在晨间的温度里微微发凉。他和顾晏从员工通道回到地下三层,大厅里的照明已经切换到了日间模式的白亮灯光。重岳骨架在原地矗立着,右膝的磁流变液关节预装件在灯下泛着暗金色纹路,左膝外壳完整闭合,漆面上的细痕在正常光线下完全不可见。 他把加密盘插入工作站的读卡器,文件系统自动挂载。技术组已经完成了数据的初步结构化整理,目录树按照设备类型和地理位置做了分类索引。陆维桢打开标有“WEST-SUB-01“标签的文件夹,里面包含了一份坐标记录和一组设备配置参数文件。坐标指向蓉城西部工业区的一条具体街道门牌号,建筑用途登记为“航空材料性能测试中心“,物业所有者是一家注册在本地的检测服务公司,但其股东结构中的一家出资方与东郊工厂的境外母公司之间存在间接关联。 “西部系统用的设备型号和B1-SUB几乎完全一样。“顾晏站在他身后看着屏幕,指了一下配置文件中的硬件参数栏目,“工作频段、数据格式、存储容量、甚至固件版本号都是一致的。两套系统可能是同一批采购、同期部署的。“ “硬件一致说明软件架构也相同。“陆维桢点开了设备配置参数中的一个子项——通信协议版本号字段,“固件版本号是完全相同的数字,意味着只要我们能拿到西部系统的物理接入点,之前用在B1-SUB身上的指令包格式大概率也能在那边用。“ 他向下滚动文件列表,在坐标记录的下方找到了一组附件,是技术组根据B1-SUB的通信日志还原出的西部系统近期的活动摘要。摘要显示西部系统的数据采集频率比东部的系统低,大约每四十八小时才做一次完整的数据回传,但在回传间隔期间它保持着一组低频心跳信号和主控端之间的稳定联络。最近一次心跳信号的时间戳是今天凌晨三点零七分——正好在范德米尔发送短报文之后约两个小时。 “凌晨三点零七分的这次心跳,“陆维桢把时间戳圈了出来,“距离短报文发送时间有两个小时左右。说明接收短报文的人花了约两个小时赶到西部系统所在的现场做了设备状态检查,然后系统发出了心跳确认。范德米尔的那条消息是通知西边的人'东边已经暴露了,检查你们那边的设备状态'。“ 顾晏弯腰凑近屏幕看了一遍那次心跳信号携带的附加数据字段。心跳信号本身除了常规的状态确认之外还附带了一组小型的元数据块——内容看起来像是系统当前存储容量的使用率。“元数据里显示系统存储使用率比常规状态下低了大约百分之三十。说明有人在出发到现场之前、或者到达之后,删除了系统内的一部分历史数据。他们在做清理。“ 陆维桢靠在椅背上闭了一下眼睛,快速梳理了一下现有的信息链条。范德米尔在东边暴露、发送短报文通知西边团队、西边团队在两小时内到达现场做了设备检查和部分数据清除。西部系统目前仍然在线工作,但已经被清理过的存储区里存着的信息可能不完整了。不过如果能在他们完成全面清洗之前截停那套系统,仍然有可能获取到尚未被清除的那部分数据。 “西边系统还在线,“他说,“心跳信号照常发送说明他们还没有决定关机撤离。他们可能还在评估东边暴露的程度——如果他们认为东边的泄露没有波及西边,这套系统就还会继续运行一段时间。“ 顾晏拿起手机发了一条消息给周承岳,内容询问西部系统所在建筑的安保情况和外围监控覆盖范围。几分钟后周承岳的回复弹出来,附了一份从市规划部门调取的建筑竣工图纸。图纸上显示那栋建筑地上四层、地下两层,地下二层对应的位置在建筑平面图上标注为“设备间-电控室“,与B1-SUB坐标记录吻合。 陆维桢把竣工图纸放大后逐层看了一遍。地下二层有两条疏散通道:一条通过楼梯间连接地上部分的常规出口,另一条通过一条设备管廊连接建筑北侧围墙外的一处独立配电房。这种双出口配置和东郊工厂的地下空腔设计非常相似,说明两套系统的选址和布建规范遵循了同一套操作手册。 “他们用的施工规范是统一的。“陆维桢说,“配电房那条通道的走向、长度、甚至管道口位置的选择逻辑都差不多。如果我们今天能进入西部系统所在的地下二层的管廊入口,大概率可以沿管道内部接近设备间——路线结构和东郊的那条几乎一样。“ 顾晏从操作台侧面抽出一张空白纸,在纸上画了一个简化的建筑平面布局示意图。“西部系统和东边系统在硬件和架构上的高度相似意味着指令包格式也能通用。如果我们能让西部系统像B1-SUB一样执行一次数据回传,在它被清洗之前把剩余数据拉取出来——“ “同步进行。“陆维桢接上了她的话,“今天之内完成。越快越好,西边的人现在处于'评估状态'的窗口期。他们还在判断东边泄露的程度,没有立刻关机。这个窗口一旦关闭,他们会做和B1-SUB同样的处理——物理断电撤离。“ 他把工作站上的西部系统实时状态监测界面打开,通过之前从B1-SUB协议样本中获得的握手机制向西部系统发起了一次低权限的试探性查询。界面上返回了一个简短的确认信号,说明系统仍在线且正在正常待命。确认信号的元数据中附带了一个时间戳,显示系统最近一次被管理员访问是在凌晨三点零九分——正好是心跳信号发送后的两分钟内。那个时间点,有人在那套系统前面坐过。 陆维桢把试探查询的结果截图保存,然后关闭了界面。“现在出发还来得及。“ 顾晏已经站了起来,把她的挎包重新收好,里面装着频谱仪、信号耦合器、和之前使用过的那组定向天线。“我去跟周组长说一声,车在员工通道门口等。“ 她转身朝电梯走去。陆维桢坐在操作台前把加密存储盘从工作站上拔下来收进口袋里,关机的时候屏幕暗下去之前的最后一帧画面停留在西部系统的架构拓扑图上——一个极简的设备节点标识符悬挂在建筑平面图的红线标定区域中央,旁边附着一行已经被技术组标注过的备注文字:“系统名称:ECHO-7-WEST-01。部署日期:约九十天前。“ 九十天。三个月前暗潮就在蓉城西边布下了这套系统,而三个月前的陆维桢还在学校报告厅里被苏媛当众用麦克风羞辱。有人在那个时间点就已经计划好了在这座城市的两个方向同时建立数据采集节点。东边的节点盯着龙科院,西边的节点盯着航空动力研究所。两个节点之间的数据流在中途经过某个集合点汇总后再向外传送。那个集合点的位置在东郊工厂的地下空腔里,也就是B1-SUB原本待着的地方。 现在东边的集合点被撤离了,西边的节点正在被清理。但清理还未完成,设备还在线上。陆维桢知道今天之内如果动作足够快,就还有机会从西边系统拿到最后一批数据。他站起来走向电梯,经过重岳骨架时伸手在右膝暗金色的关节外壳上轻轻碰了一下作为确认。骨架安静地矗立在灯下,预装件的表面温度因为通宵的待机状态而比室温略高了几度,从指尖传来一丝极微弱的暖意。 电梯门在他身后合拢时,光屏弹出了一行字:“西部系统的心跳信号周期已经偏离了常规间隔。上一次心跳比预定时间晚了六分二十秒。系统可能正在被人以更高的频次检查状态。“陆维桢看着那行字在视野里停留了几秒后消失,电梯下行到达地面层的提示音刚好响起。 第19章 同构 黑色SUV驶出龙科院北门的时候,早高峰的车流正在从四面八方汇入城市主干道。周承岳没有走快速路,而是选择了一条沿着老城区的次干道向西延伸的路线,车速被控制在跟车流基本持平的范围内。陆维桢坐在后排,笔记本电脑打开放在膝上,屏幕上是西部系统的设备配置参数表——他在利用这段路程做最后的协议校验。 “刚才那组心跳信号的偏差是六分二十秒。“他说,“如果系统在被更频繁地检查,那心跳间隔的波动可能会继续扩大。接下来的心跳窗口可能还会延迟,也可能提前。我们的行动窗口就在两次心跳之间的间隔里。下一次心跳在什么时候?“ 顾晏从副驾驶座把手机上的计算结果递过来:“按照最近一次心跳的时间加上常规间隔,下一次预定心跳应在今天上午九点四十分左右。目前偏差率还在扩大,实际可能推迟到九点五十之后。从现在到九点四十分之间大约有两个小时的时间窗口。“ 九点四十分。陆维桢看了一眼笔记本屏幕右下角的时间,七点三十一分。两个小时的窗口足够完成接近、接入、数据提取和撤离的全流程,前提是路径畅通、系统未被提前关机。 车辆在七点五十分左右到达了西部工业区边缘。这片区域以中小型制造企业和仓储物流设施为主,街道两侧的建筑物多为两到四层的混凝土框架结构,外墙涂料普遍褪色或剥落。目标建筑是一栋浅灰色的四层楼,正门上方挂着一块褪色的蓝底白字招牌:“蓉城航空材料测试中心“。招牌边缘的金属框架有一处弯折,表面覆盖着积尘,看起来像是有一段时间没有维护过了。 周承岳没有直接把车停在建筑附近。他在相隔一条街的位置找到一处废弃的厂区入口把车停进去,熄火之后三人徒步沿街区外围接近目标建筑。陆维桢手里拿着手机上的竣工图纸对照实景,确认建筑北侧围墙外那处独立配电房的位置——图纸上标注的管廊入口就在那里。 配电房比东郊工厂那边的略小,是一间约三米见方的砖混小屋,外墙被爬山虎的枯萎藤蔓覆盖了大半。北侧围墙和配电房之间的巷道极为狭窄,宽度不足一米五,路面铺着碎石和干枯的落叶,踩上去有轻微的窸窣声。陆维桢侧身挤过巷道,在配电房北侧墙根处找到了图纸上标定的管廊入口位置:一块尺寸约六十乘六十厘米的混凝土盖板,表面被积尘和落叶覆盖得几乎看不出缝隙。 他蹲下来用手套边缘清理掉盖板表面的覆盖物,露出了盖板与地面之间的接缝。盖板边缘有一道被撬起过的新鲜痕迹,金属撬具在混凝土角部留下了几处小缺口,缺口边缘的碎屑还没有被风化侵蚀——时间很近,可能在二十四小时以内。 “这个入口已经被人打开过。“陆维桢低声说,“跟B1-SUB的处理流程一致——检查完设备状态之后清理现场的人也会确认管廊入口是否正常可开。他们来过。“ 周承岳蹲在巷道的出口方向观察外部的动静,目光扫视着配电房东侧和建筑北墙之间的整个视野。顾晏在陆维桢对面蹲下,用手套垫着指腹探了一下盖板缝隙内部的密封条状态。“密封条被重新压回去的痕迹还在,是新的。压回去的时候力道比安装时稍大,边缘有一部分翻卷起来没完全压平。“ 陆维桢用一把扁口工具轻轻撬起盖板边缘。混凝土盖板被抬起了一道缝隙,下方露出管廊入口的内部空间——一条水泥预制管道的起始端,直径约八十厘米,跟东郊工厂的那条管道规格完全一致。他把盖板抬起到足以侧身进入的角度,先用手机拍了一张管道内部方向的照片。管道内部有极微弱的残余照明从深处透过来,亮度不足以照清管壁,但足以在黑暗背景中形成一个可以辨认的光源方向。 “管道内部有应急灯在亮,“陆维桢把手机收起来,“说明地下二层的设备间目前仍然通电。系统还在运行。“ 他侧身进入管道,动作和上次在东海管道里爬行时已经形成了足够自然的肌肉记忆。顾晏跟在他后面,周承岳断后,入口盖板在最后一个人进入之后被从内侧拉回来虚掩着。管道内部的空气比外部湿润,带着泥土和水泥的混合气味,管壁上的凝水分布比东郊那边更均匀——说明这条管道的密封性更好,外部渗透较少。 管道前进了大约十几米后转为水平段,方向转向建筑主体下方。陆维桢用手电照着前方,在管道侧壁上看到了和东郊管道里一样的金属盖板——尺寸、安装方式、位置高度都如出一辙。盖板上同样覆盖着一层防尘棉垫,但他没有停下来检查。这套系统的硬件部署是标准化的,管道内部的节点布局遵循同一套施工模板。盖板下面的设备形式应该和ACC-04类似,但西部系统的运行时间更长、管理人员的干预频率更高,盖板边缘的固定螺丝有被反复装卸过留下的磨光痕迹。 管道末端的光源随着他的靠近逐渐变亮。他在出口处停住,把手机探出管口用前置摄像头拍了一张设备间内部的全景照片。画面显示设备间的布局和东郊工厂基本一致——靠墙的机柜、中央的桌面终端、墙上的应急灯和监控屏幕。但有几个明显的差异:桌面上的屏幕数量更多,机柜的侧面多了一组外接存储设备,墙上张贴的便签纸密度更高、颜色不同。 陆维桢从管道口爬出来,落地时快速扫了一遍整个房间。终端屏幕亮着显示着一组实时数据流界面,界面上正在运行的进程名和他在东郊设备间见过的有部分重叠,但也有几个新的标识符,其中一条标注着“WEST-DATA-CACHE“,显示的数据块大小约两百兆。他凑近了看那组数据流的窗口标题,底下有一行备注文字:“下次传输倒计时。已清除记录已标记。“ 系统正在被清洗。那组两百兆的数据块旁边有一行操作日志,显示凌晨三点十一分开始执行了一项批量删除任务,任务状态现在是“已完成百分之六十“。他们已经清掉了六成历史数据,还剩四成在原位等待下一轮清洗。陆维桢快速扫了一遍剩余数据块的命名结构——大部分是传感器日志和通信记录,时间覆盖范围从一个月前到最近一周左右。 “它们还在清。“陆维桢坐下来操作桌面终端的键盘,调出了系统的文件管理界面。“百分之六十已经清掉了,但剩下的四十还在。要把剩余的拉出来,不需要全量传输——只需要定位到它们存放的位置然后开启同频定向回传。“ 顾晏蹲在机柜侧面检查设备连接状态,用频谱仪扫了一遍系统的工作频段。她看了一眼频谱屏幕上的波形特征,点了点头:“协议结构和B1-SUB完全相同。指令包格式可以直接复用。“ 陆维桢把伪造的指令包从自己的笔记本上传到设备间的终端上,然后通过网线接口向系统主机的管理端口发送了一条数据回传指令,回传坐标指向龙科院北区三号楼地下三层的IP地址。指令发送之后,系统文件管理界面上的数据块开始逐个亮起传送状态标记。 剩余的四成数据开始向指定地址传输。传输速度比上次快,因为数据量更小,网络负载更轻。 但陆维桢在等待传输进度增加的同时,目光在屏幕角落里捕捉到了一行不寻常的系统日志条目。条目内容只有几个字:“外部链路检查 - 已确认。“时间戳标记在今天凌晨三点十四分,执行权限来自管理员级别的账户。那个账户在发送了清理命令之后还额外做了一项操作——确认设备间外部链路的连通状态。 那条外部链路指向的位置,被日志条目附带了一个简短的IP地址后缀。陆维桢复制了那个地址输入到自己的笔记本上进行解析,返回的结果让他的手指在键盘上方停了一下:那个IP地址所在的地理位置不在蓉城,也不在龙国境内。它指向的区域位于太平洋东岸,精确到某座灰色建筑所在的城市。那座建筑的地下三层里,曾经有一份ECHO-7情报报告在一个值班主任的桌上被摔过咖啡杯。 “我们在取数据的同时,西部系统向境外发送了一条链路确认。“陆维桢说话时声音比平时低了半个调,“今天凌晨三点十四分,有人在这台设备前面操作完之后确认了它和境外主控端之间的网络通道仍然是通的。“ 数据传输进度持续向前推进。但陆维桢知道,只要那条外部链路还是通的,西部系统在传输剩余数据的同时也在向境外主控端发送着“设备正在大规模向新地址传数据“的提示信号。境外主控端会在数据拉取完成的同一时间知道系统已经被接入过了。然后他们会把那座城市东边和西边的所有节点一并关闭。 现在的问题是:百分之四十的剩余数据,和境外主控端收到警告信号之间的时差还有多少。 第20章 劫时 传输进度在屏幕上行进得平稳而无声。百分之六十三、百分之六十七、百分之七十一——剩余的四成数据正在按顺序从西部系统的存储区被读出、打包、通过无线信道送往龙科院的方向。陆维桢盯着那条外部链路的日志条目,手指悬在键盘上方没有动,但他脑子里正在快速推算境外主控端从收到异常信号到做出响应之间需要的时间窗口。 “外部链路确认信号被主控端收到的瞬间,他们就会看到系统的发送队列里出现了大量超出常规的数据流。“陆维桢对顾晏说,声音在设备间的安静环境里显得格外清晰,“常规情况下这个系统每四十八小时传一次总量不会超过几十兆的数据。现在它的发送速率是峰值模式,对方从收到第一帧异常传输数据开始就可以判断系统被非授权接入了。“ 顾晏侧过头来看了一眼屏幕上的传输进度,然后看了一眼设备间墙上的钟。“加速。减少传输量。只拉取和西部航空动力研究所有关的那部分数据,其他通用日志可以放弃。“ 陆维桢没有再犹豫。他快速调出了系统文件管理的筛选功能,按照文件名和路径结构筛选出了所有包含“AVIATION“和“ENGINE“关键词的数据块,标记为优先传输队列。剩余的非关键数据块被取消了传送标记。传输队列的大小从两百兆瞬间缩减到了大约七十兆,进度条上的剩余时间缩短了接近三分之二。 “优先队列开始传输,预计完成时间比全量拉取缩短至少四十分钟。“他调整完参数之后靠在椅背上,视线仍然停留在屏幕角落那条外部链路的状态指示器上。指示灯此刻是绿色的,显示链路持续畅通。 顾晏从机柜侧面转过来,手里拿着频谱仪的天线对准设备间的通风管道方向又扫了一遍。“除了那条固定链路之外,系统还在另一个频段上保持着一组极低频的微功率信号。这可能是一个独立的被动监听通道——不参与数据传输,只用于检测主通信链路是否被切断。如果主链路断了,这组微功率信号会改变频率,作为独立报警信道传递出来。“ “那我们现在动主链路吗?“陆维桢问。 “不动。“顾晏把频谱仪放下,“主链路正在传输我们想要的数据,切断了反而触发独立报警信道。让它传,传完我们再处理。“ 传输进度继续前进。百分之八十二、百分之八十七、百分之九十一。优先队列的数据块逐个完成传送,屏幕上的完成提示逐条亮起。陆维桢在传输间隙里快速扫了一遍已经被传回龙科院的文件清单——航空动力研究所的设备日志、测试记录、通信交互历史、以及一组标注着“叶片材料供应商数据接口“的子目录。那个子目录的命名方式显示出它可能连接着某家军工配套企业的内网接口。 百分之九十七。最后几个数据块的传输指示灯开始闪烁,每个块都在三秒内完成了发送。进度条到达百分之百时设备间的终端屏幕上跳出了一行系统日志:““。 传输完成。陆维桢快速拔掉了自己的笔记本与设备间的连接线,把所有操作痕迹从终端的历史记录中清除。顾晏把频谱仪的发射状态关闭,定向天线从设备架上拆下来收回挎包。周承岳在设备间入口处保持着警戒姿态,他的视线一直固定在外面的走廊方向上,但听见操作完成的声音时他侧头看了一眼——确认完毕,然后他无声地退到了管道入口旁边。 陆维桢站起来之前又快速检查了一遍系统状态界面。外部链路的状态指示灯仍然绿色,独立报警信道没有触发,传输记录已经在系统日志里被覆盖成了“常规维护数据传输“的字样。他关掉终端屏幕,把椅子推回桌下,转身走向管廊入口。 三人沿原路退出管道的整个过程用了不到四分钟。盖板被重新闭合之后陆维桢把周围的落叶和碎石大致恢复了原样,配电房北侧的墙体外观重新变成了那幅被爬山虎覆盖的荒置状态。清晨的阳光下工业区的街道开始出现更多车辆和行人,他们的移动在背景噪音中不再显眼。 回到SUV之后周承岳沿着一条绕过工业区核心的路线向龙科院方向返程。陆维桢坐在后排把笔记本重新打开,快速浏览了一遍优先传输过来的文件内容。航空动力研究所的数据块中包含了一份传感器布置图和一组与某型涡扇发动机核心机测试相关的参数记录。那些参数的质量和格式呈现出与B1-SUB数据相似的采集风格——频点分布均匀、时间戳精准、采样密度高。西部系统对航空动力研究所的监控深度跟他之前推测的一致,它确实在持续收集与发动机核心机研制相关的环境信息。 他把文件窗口最小化,看了一眼窗外。车辆正沿着一条河边的道路行驶,河面上映着上午逐渐明亮的天光,城市的声音从隔音玻璃外面传进来时已经变得很薄。他在座椅里靠了一会儿,视野里光屏亮着一行字,字体很浅:“境外主控端对东部系统的信号丢失大约需要三到六小时才能确认并逐级上报。目前窗口已过去约四小时。如果主控端的响应序列已经完成确认,下一阶段将是统一的节点关闭指令。“ 周承岳在后视镜里开口了,声音简洁:“主控端那边会怎么做?“ “切断蓉城所有节点的电源,“陆维桢说,“包括已经离线的那台B1-SUB,和我们已经退出的西部系统。他们会把所有硬件断电并通知地面人员撤离,把数据物理介质带离现场或者在现场做物理销毁。“ “那地面人员撤离之前还有多长时间?“ 陆维桢看了一眼笔记本上系统日志记录的最后一条外部链路确认时间,结合主控端的响应周期做了估算:“从确认信号发出到现在大约三个半小时。按常规流程,确认-上报-决策-下指令这个循环至少需要四到六个小时。窗口可能正在关闭,但还没完全关上。如果我们能在下一小时之内确认剩余硬件的位置,就有可能在他们动手之前获取更多信息。“ 车辆驶入龙科院北门时园区里的日间活动已经全面展开了。穿着不同颜色工装的人员在建筑之间穿行,食堂方向飘出饭菜的气味。陆维桢下车时被日光照了一下眼睛,他眯着眼走了几步才适应从地下到地上之间的亮度变化。但他在走向员工通道入口的途中忽然停了一下——口袋里手机的加密通讯应用弹出了一条来自技术组的消息,内容简短,附了一张实时卫星热成像截图。截图显示蓉城东郊工厂地下空腔位置的土壤温度正在下降,比周围地面的背景温度低了约两度,幅度比正常的地下空腔保温波动要大。下降速率正在均匀加速。 地下空腔的地面层被人打开了——热空气从空腔内溢出到外部环境,导致土壤温度层被扰动。有人正在东郊工厂的地下空腔里做大规模的设备拆卸。暗潮撤离的时间点比预测的更早,他们已经进入物理拆解和撤离阶段了。 第21章 剥茧 地下空腔的土壤温度下降速率在后续三十分钟内又加快了一档。技术组连续传来的热成像图片拼接成了一段动态序列,画面上的温度色阶从橙红渐变为黄绿再沉入蓝紫,描出一幅正在加速冷却的地下结构的剖面图。陆维桢站在地下三层的操作台前面,面前的屏幕上同时显示着卫星热成像的实时更新和西部系统传回的航空动力研究所数据结构树。他的目光在两张图之间来回切换了几次。 “东郊那边的物理拆除已经开始至少四十分钟了。“他指了一下热成像序列中温度下降速率最大的区域,“下降曲线呈指数型,不是自然冷却。人为打开出入口之后冷空气灌入空腔内部,把原来被设备运行产生的余热维持住的平衡温度打破了。他们搬走了发热源。“ 周承岳站在他侧后方看着屏幕。他看了片刻之后把加密手机拿起来拨了一个短号,接通后只说了两句话,核心意思大概是通知外围安保组对东郊工厂区域提高观察密度但不做主动接触。挂断电话之后他把手机放回夹克内袋,没有进一步说明。 陆维桢继续翻看西部系统传回的数据结构树。航空动力研究所相关的文件被技术组初步分类后归入了一个独立的子目录,里面包含了环境数据采集日志和材料测试参数记录两个主要文件夹。他点开材料测试参数记录,里面是一组重复周期非常规律的数值曲线——每天同一时刻记录同一组叶片的某种物理参数,记录精度高到微米级。这种规律性的暗示了一个事实:西部系统在对航空动力研究所某款新型涡扇发动机的叶片进行长期监控。它不是测绘整个研究所,而是盯着一组具体的部件在连续测量。 “他们的目标是发动机叶片。“陆维桢把曲线图放大,“不是整个发动机,也不是整个研究所。他们盯的是新型材料的长期蠕变测试数据。叶片在高温高压工况下的形变速率变化、微结构演化轨迹、寿命预测模型——这些数据如果积累到一定量级,做逆向工程时就可以推导出材料配方和加工工艺的很多关键信息。“ 顾晏走过来弯腰看了一眼屏幕上的曲线。她在电磁兼容方面的专业训练让她对信号处理和数据的周期性极为敏感,几乎是看到曲线的第一眼就指出了其中的特征:“这组测试数据每天在同一时刻采集,时间精度高到秒级。采集触发信号可能是从某个外部同步源发出的,不是随机的现场测量。有人在这套系统的软件里植入了定时触发器,让它自动对准发动机测试台架的工作节拍。“ “所以西部系统比东部系统更精。“陆维桢说,“东部系统只是收集环境信号和低频数据,西部系统在针对具体的技术目标做定向采集。它的数据价值更高,所以他们把西部的清洗优先级排得更靠前,比东郊地下空腔还早开始动手。“ 他退出叶片测试数据文件夹,回到目录树的根部重新检查了一遍文件列表。在目录树的最底层,他发现了一个被技术组初步归类为“系统日志“但实际内容格式有显著差异的子目录——文件名的长度和末尾的后缀名跟ECHO-7系统自己的日志格式不同,更像是从外部导入进来的数据包在本地留下的缓存副本。他打开其中一个文件,内容是一组没有时间戳的坐标序列,每隔一段数据就重复出现一个相同的地址模式。那组地址模式以字符间隔在文本中重复出现了多次,每次之间的间隔长度均匀,像一种人为嵌入的标记符。 陆维桢把那组地址模式复制出来单独放在一个空白文档里,去掉了空格和标点之后得到的文本长度大约三十个字符。他把这三十个字符输入到系统中进行格式识别,“天工“系统几乎同时返回了一个分类结果:这是某型航空发动机图纸编号体系的缩写变体。三十个字符对应到图纸编号结构中的分类码和序列号段,指向一款处于预研阶段的高推重比涡扇发动机的关键组件图纸。 “这套系统不只是采集测试数据,“陆维桢的声音比刚才稳了一些,但语速略微加快,“它还收到过从航空动力研究所内部传输出来的图纸编号。有可能是有人把图纸编号作为数据标记嵌入到正常的文件传输流里,和传感器数据混在一起送出。西部系统收到了这些标记,把它当作普通数据字段记录在日志里。“ 周承岳的加密手机在他口袋里震动了。他接听之后这次没有立刻挂断,而是听了一段约半分钟的内容,然后说了一句“行了“就挂断了。他把手机收起来,转向陆维桢方向时说:“外围组刚才在东郊工厂围墙外面观察到一辆深色商务车驶出,沿乡镇公路向东离开了。车窗全黑,车牌被泥土遮盖,出发时间大约在空腔温度开始下降之后四十分钟左右。符合设备搬运后的撤离时间窗口。“ 东郊的东西已经搬走了。那辆商务车现在正在乡镇公路上向某个方向驶去,可能带着从地下空腔里拆卸出来的硬件设备和存储介质。如果车上的人带走了B1-SUB部署位置周边的那批外接存储设备,那么即使西部系统的数据被提前取走了大部分,东郊空腔里残存的硬件仍然可能包含从航空动力研究所传输出来的其他资料。 “那辆车去的方向是哪个?“陆维桢问。 “东。出了城之后上高速,方向沿海。“ 沿海。如果车里的东西最终被装船运往境外,那蓉城境内能获取的信息链就会在这条线上被打断。但这辆商务车从离开工厂到驶入高速入口还需要大约半个小时到四十分钟的行程时间,中间要经过一段不长的乡镇公路和一段普通国道。如果能在它上高速之前从外部获取一次它的信号特征或者车牌信息,就能为后续追踪提供依据。 陆维桢把操作台上的笔记本转向自己,打开了一个空白文档准备记录后续方向。他的手放在键盘上时停顿了一下,转头看向顾晏:“你刚才在设备间的时候用频谱仪扫描过系统周边的射频环境。西部系统终端和那套主设备之间的数据链路有没有发现第二条、第三条跳传路径?“ 顾晏没有犹豫就接上了他的话:“有。终端到机柜之间走的有线网,但机柜侧面有一根被绝缘胶带和主线束绑在一起的细同轴线,走向穿过设备间上方的吊顶进入通风管道。频率特征和主链路的通信不同,像是独立的镜像通道。“ “镜像通道。“陆维桢在备忘录里写了这个短语,“那意味着西部系统存的数据在传输过程中有可能被复制了一份,通过另一条路径送到了另一个目的地。那个目的地不是主控端,也不是ACC-04。可能是第三方的缓存点。“ 周承岳从他站的位置走进了一步。他的手机屏幕亮着,上面显示着一条刚从技术组传来的实时路径分析结果,附了一张用无线信号定位技术反向推算出的镜像通道方向坐标图。坐标落在蓉城东部某个靠近绕城高速出口的位置——离东郊工厂不算远,但也不在工厂区内。那个位置在地图上标注为“综合物流园“。 “物流园是蓉城东部最大的货物中转中心。“周承岳说,“每天进出几百辆货车,集装箱堆场面积相当于十几个足球场。如果把一台中继设备藏在那种环境里,三天三夜都不会有人注意到它在工作。“陆维桢盯着那个坐标,光屏在他的视野里自动叠加了一组时间线数据和路径预测:“如果东郊撤离的商务车在物流园停靠一次再继续前往高速入口,总行程时间会增加大约二十分钟。但停靠窗口会给出一个物理交接地点的精确坐标,并且镜像通道的数据可能在那个地点被卸载。“ 操作台上的时间显示上午八点四十七分。商务车如果已经在路上,它抵达物流园的时间窗口大约在九点十分到九点半之间。如果他们要在这个窗口期间做一次定向监听或者物理接触,出发时间就是现在。 第22章 物流园 SUV沿着绕城高速向东行驶时,陆维桢把笔记本的屏幕亮度调到了最低档,只保留地图导航界面可见。地图上的物流园坐标被标记成一个蓝色光点,位于绕城高速和国道交汇处的东南方向。车辆到达之后,他快速确认了一遍周围的建筑布局:物流园占地面积广阔,东侧是集装箱堆场和货运站台,西侧是一排钢结构仓库,北侧是办公区和司机休息室。 周承岳在距离物流园主入口大约两百米处把车停在了路边一处早餐摊位的侧面。摊位的棚布和摆放在外的折叠桌椅正好遮挡了SUV的车身轮廓,从主入口方向看过来不容易注意到这里有车辆停驻。路边停着几辆长途货车的备用车厢板也提供了额外的视觉遮蔽。 陆维桢从车窗缝隙里观察物流园主入口的车辆进出情况。早高峰时段刚过,进出的货车频率开始下降,但仍有零星的车辆驶入驶出。一个岗亭里坐着穿灰色制服的保安,门禁杆保持着升起状态,进出车辆不需要停车登记。 “镜像通道的坐标定位精度在物流园内部大约三十米半径范围内。“陆维桢说,“那个区域落在东侧的集装箱堆场和货运站台之间的空地上。如果中继设备真的藏在这里,它应该需要电源和防水的物理保护壳,最可能放置在某个集装箱内部或者堆场边缘的设备箱里。“ 顾晏从座椅上侧身看了一遍物流园的卫星图,她的视线在东侧堆场区域停留了片刻:“堆场边缘有几个配电箱和通信交接箱,金属外壳的标准箱体,尺寸足够容纳一套中继器组。而且它们和堆场内部的照明、监控系统共用供电线路,从电源端看完全正常。“ “我们得进去看一眼。“陆维桢说。 下车之前他换上了一件从后备箱里取出的反光背心和一顶棒球帽。这身装束在物流园这种环境里不会引起额外注意——类似穿着的工作人员和临时工在园区内随处可见。顾晏同样换上了一件深色的连帽外套,把频谱仪的天线收短到最长度,藏在挎包的侧袋里只露出一小截。 两人沿着物流园东侧围墙外的人行道走到堆场区域的侧门处。侧门是一扇铁栅栏门,门锁没有上锁,只插着一根铁销做临时固定。陆维桢拔出铁销推门进去,脚下是水泥地面,上面散落着碎纸屑和包装带。堆场内部的集装箱排列成整齐的纵列,每两排之间留着约三米宽的通道供叉车和人员通行。 他沿着通道走了大约四十米后停下。左侧有一排附着在混凝土柱上的配电箱,其中一只箱体的尺寸比其他的略大,外壳涂着相同的灰色油漆,但箱门合页的螺丝型号和其他箱体不一致——更长的防撬螺丝。顾晏从他身后闪到配电箱侧面用频谱仪天线扫了一下箱体周围,屏幕上的读数显示有一组极微弱的射频信号在箱门内侧的缝隙处向外渗出。 “信号在里面。“她说,“工作频段和设备间的镜像通道完全对应。“ 陆维桢蹲下来观察配电箱的锁具。它用的是一只普通的挂锁,锁梁上有轻微的刮擦痕迹——近期被开启过,开启时锁梁与锁体之间的摩擦在金属表面留下了新鲜的亮痕。他从口袋里取出工具钳剪断了挂锁的锁梁,锁体脱落时发出一声清脆的金属撞击声。他扶住箱门,缓缓向外拉开。 配电箱内部的空间比外观看起来更深。一台约手掌大小的金属外壳设备被固定在箱体后壁上,用一块可调节的金属支架夹持住。设备顶部有一根极短的微型天线从外壳引出,天线的末端紧贴着箱门内侧的金属面板,形成了一个隐蔽的射频出口。设备底部有一条电源线连接到配电箱内部的主线路上,取电方式跟东郊管道ACC-04盒子如出一辙。 陆维桢用手机拍了几张照片记录设备的外观和安装方式,然后伸手触摸了一下设备外壳的温度——微暖,仍在运行中。他用手电照向设备底部,看到了一枚小型存储卡插在侧面的卡槽里,卡槽旁边有一颗指示灯,以约两秒一次的频率缓慢闪烁着绿色。 “它还在收数据。“陆维桢压低了声音,但语气中有一丝不能完全压住的确定感,“镜像通道的传输还没有断。西部系统的那根细同轴线延伸到了这里,现在正往这张存储卡里写入从西部系统镜像过来的数据。如果东郊那辆商务车今天会在物流园停靠,那这枚存储卡就是他们要取走的目标。“ 顾晏用频谱仪扫了一下存储卡附近的射频特征。她在确认卡内数据格式与西部系统输出格式的一致性时,忽然停了一下,然后把频谱屏幕转向陆维桢:“卡上不仅有从西部系统过来的数据流,还有另一组来自不同方向的信号在同一张卡上写入。来源方向指向——西北。从成都西北方向的某座城市发过来的,距离大约三百到四百公里。“ 陆维桢蹲在配电箱前面看着那个方向。西北方向三百多公里外的城市分布中,有一座在航空工业体系中有着特殊地位的场所——绵阳某国家级风洞实验室的所在地。那座城市和蓉城之间的距离和频谱仪显示的信号源距离基本吻合。 “他们在通过同一组中继节点,汇总不同城市采集到的数据。“陆维桢说,“蓉城西部航空动力研究所的数据通过镜像通道送到了这里。绵阳风洞实验室的数据也可能通过另一条类似的链路送到了同一张存储卡上。然后这辆商务车定期来物流园取卡,把卡带走汇总到某个中心节点。“ 他把存储卡从卡槽里轻轻拔出来。卡体温热,存储容量标着六十四GB,已用容量约一半左右。他在拔出卡的同时把自己预先准备好的一张空白卡换进了卡槽——空白卡预先格式化成相同的文件系统结构,插回后设备会继续写入数据,但数据会写到空白卡上而不会影响被他带走的那张原有卡。系统的写入指示灯在他换卡后持续闪烁了几下,然后恢复到了先前的绿色慢闪频率。 他把原有存储卡装进一只小型防静电袋里,放进了外套内袋。顾晏把配电箱的箱门合回原位,锁具重新挂好。锁梁在剪断后无法复位,但箱门本身是闭合的,从远处看不出来锁具已经被破坏。 两人沿原路退出堆场侧门时,陆维桢的视线扫到了物流园北侧主通道上正在缓慢行驶的一辆深色商务车。车窗全黑,车牌位置覆盖着一层被泥土喷雾刻意污染过的遮蔽涂层。那辆车在物流园北侧的主通道上行驶到东侧堆场附近时减速了,方向正好朝向配电箱所在的那排混凝土柱。 陆维桢和顾晏已经退出了侧门,回到了围墙外面的人行道上。他们以正常的步行速度沿着人行道继续朝前走,没有回头。身后物流园内部的商务车在配电箱附近停靠了大约一分半钟,然后重新起步,沿着北侧通道驶向物流园的主出口方向。 陆维桢在走到人行道拐角处时才侧过头,用余光扫了一眼物流园主出口的方向。那辆商务车驶出大门之后右转上了国道,朝着绕城高速入口的方向驶去。车速平稳,没有加速也没有变道。 他继续走了一段路,等商务车完全消失在视线里之后才重新加速脚步,穿过一条巷道回到了周承岳停车的位置。他在副驾驶座旁边的位置站定,从外套内袋里取出那只防静电袋,放到车内的中控台上方。 “存储卡拿到了。“他说,“车上的人今天取不到数据了。但他们还会回来重新投放新的卡。物流园这个中继节点还会继续工作,只要他们不清楚卡什么时候被换走的。“陆维桢把防静电袋的封口又压紧了一次。袋内那枚六十四GB的存储卡泛着黑底金标的表面光泽,里面存着从蓉城西部航空动力研究所和绵阳风洞实验室两座城市汇总而来的采集数据——航空发动机叶片测试记录、新型材料蠕变参数、风洞试验环境曲线。这些数据来自一明一暗两条不同的采集路径,汇集到同一张物理介质上,然后被同一辆商务车带走。 他看着袋内的卡面,想到商务车此刻正在驶向高速入口的方向,沿海方向。里面坐着的人今天跑空了一趟,但他们不会知道为什么。直到下一次来看这张卡的时候才会发现卡已经被换过了。而那中间隔着的,可能是几个小时,也可能是几天。他手指按在中控台上,指尖能感觉到引擎熄火后底盘逐渐冷却的温度。 第23章 经纬 回到龙科院地下三层的时候,大厅里的白炽灯矩阵照得顾晏眯了一下眼。她直接走向操作台把频谱仪从挎包里取出来连接电源,屏幕亮起的过程中她已经拉开了挎包的第二个隔层,把那张存储卡的防静电袋放在了操作台面上。陆维桢在旁边坐下,把加密读卡器插入工作站USB接口,用镊子取出卡身放进读卡槽。 存储卡被识别的速度比预想的快。系统弹出的文件目录显示这张卡采用了简单的分区结构,主分区里排列着一组以日期命名的文件夹,最早的日期标记落在约四十五天前。文件夹内部存储的文件格式统一,元数据中的创建者字段指向一个统一的管理账户名,备注部分留着一组缩写编号,编码规则和ECHO-7系列设备完全不同——更短,像是另一个系统的标记。 “它不属于我们之前接触的任何一套暗潮设备。“陆维桢说,“西部系统、B1-SUB、ACC-04都用ECHO-7系列的设备标识格式。这张卡上的写入设备是另一套独立的采集系统——可能是更早部署的一层网络,用不同的硬件供应商和不同的协议栈。暗潮在蓉城至少有两层数据采集架构:外层是ECHO-7设备网络,负责广泛覆盖和常规采集。内层是这套独立的系统,负责定向针对核心目标做更精细的定制化提取。“ 顾晏已经打开了一个文件查看器,随机抽取了一个日期文件夹里的数据文件进行解析。文件内容在她屏幕上展开时,她确认了确实包含了航空动力研究所的叶片测试参数记录——和西部系统采集的数据同源,但采样频率更高、记录字段更精细。她在查看文件末尾的附加标记时停住了,手指在键盘上方的位置悬停了片刻。 “这个文件末尾的标记字段里包含了一组嵌入式时间戳。时间戳的格式不是标准UTC也不是本地时间——它是某个特定系统内部任务调度器的时间计数格式。“她把那个时间戳字段截屏标注出来,“这种时间计数格式我在专业文献里见过一次,是某款进口测量系统固件里使用的原生时间基。那款测量系统的制造商注册在德国。“ 德国制造的测量系统,被用于国内航空发动机叶片测试平台的数据采集。测试平台产生的原始数据通过该系统的数据接口被转存出来,然后经由某种内部途径嵌入到常规文件流里被外部接收端捕获。接收这些数据的外部系统就是这张卡所属的设备——它藏在物流园配电箱里的中继器,以和ECHO-7系统不同的硬件平台运行着。 陆维桢继续向下翻看文件列表。四十五天的数据文件夹中,大约有近三分之一是相对完整的记录周期,另有少量文件夹内容残缺或者只有索引表。这种不完整的记录特征提示他:中继器可能不是持续在线接收的。它可能有固定的接收窗口,在窗口期之外的时间段里处于待机状态。而窗口期的设置时间,很可能和测试台架的实际运转周期对齐。 “顾晏,你看一下这些文件的写入时间在一天中的分布情况。“陆维桢说,“是不是集中在某些固定的时间段里,其他时间几乎不更新。“ 顾晏快速筛选了几个日期文件夹内的文件创建时间戳,导入表格软件做了分布统计。结果在她屏幕上呈现出一条明显的峰值曲线:写入集中在每天上午九点到十一点之间,下午三点到五点之间也有一个较小的次峰,其余时间段几乎没有任何新文件产生。两个时间窗口恰好对应发动机测试台架最常用的早晚两班运转时段。 “所以中继器的接收窗口是照着发动机测试台架的工作节拍开的。“陆维桢说,“测试台一开机,数据就开始往外流。测试台关机的午休和夜间时段,中继器进入待机,不接收也不写入。这个逻辑保证了中继器的工作状态和测试台架的运转规律完全重合,如果外部人员检查中继器的工作日志,看到的就是在测试台架运转时段写入的数据——看起来像正常的运行周期日志,看不出任何异常的数据外传痕迹。“ 顾晏靠在椅背上低了一下头,又抬起来,看向屏幕上的峰值统计图。“那这张卡上除了航空动力研究所的数据之外的另一组信号源——绵阳方向来的数据——它的写入时间分布和蓉城的数据是相同的还是不同的?“ 陆维桢调出了文件目录中标注“EXT_MY“前缀的文件夹进行同样的时间分布分析。绵阳方向来的数据写入时间集中在每天下午两点到四点之间,和蓉城方向的上午峰值错开了大约五个小时。这个时间差让他把注意力放到了这份分布图的含义上:绵阳方向和蓉城方向的数据不是同时写入的,它们在时间轴上错开排列,两者之间有一个明确的时序节拍——上午收蓉城的数据,下午收绵阳的数据。 “中继器按照地理顺序轮询了不同节点的采集队列。“陆维桢在纸上画了一条时间线,“上午的窗口给蓉城,下午的窗口给绵阳。可能还有其他的节点分布在另外的时间窗口里,只是这张卡上存储的数据时间范围只覆盖了蓉城和绵阳两个来源。“ 顾晏把统计结果保存后抬头看了看大厅墙壁上的时钟。上午十点整。距离商务车在物流园停靠的时间点已经过去了大约三十分钟。如果商务车发现卡被换过的时间窗口发生在他们下一次定期检查卡的时候——按照物流园中继器的常规轮询周期和商务车的到访频率来判断,那可能是几天之后的事情。 但陆维桢注意到了另一件事。他重新点开了一个从卡中复制出来的数据文件,查看文件内部的数据记录格式。叶片测试参数的记录行之间除了标准的数值字段之外,还夹带着一些极短的不规则字符串片段,分布在数值列的间隙中。他选了一段这样的字符串做解码分析,“天工“系统返回的结果是一组字符编码格式转换后浮现出来的内容:“WP-15C 高温段转子叶片第47次循环记录 偏载验证状态: 正常。“ 他认出了WP-15C这个编号。这个编号指向的是一款处于工程验证阶段的新型涡扇发动机的核心机代号。蓉城航空动力研究所正在做那款发动机的叶片材料长期测试。而那张卡里存着的,就是那款发动机叶片在测试过程中的偏载和形变数据——而且带有“偏载验证状态“这种只有在台架测试实时记录中才会出现的操作注释,不是后期整理的数据报表里会包含的内容。这意味着数据流出的源头极有可能不是历史数据导出,而是台架测试过程中的实时数据接口。有人在测试台的实时数据流里做了手脚,让数据在产生的同时就被复制了一份送了出去。 “测试台的数据接口被动过。“陆维桢站起来,走向白板把WP-15C和叶片测试数据这两个关键词写了上去,用线连接起来,在线的末端画了一个问号。“问题不是谁在接收这些数据。问题是谁能在测试台的实时数据流上加一个分流接口而不被发现。“ 周承岳从大厅入口的方向走进来,手里拿着加密手机,屏幕亮着。他走到白板旁边扫了一眼上面的新写内容,然后转向陆维桢说了一个信息:“航空动力研究所那边今天上午的常规安全巡查刚刚做完了。检查结果显示测试数据采集系统的主控面板侧面多了一组未被登记的数据输出接口,接口位置非常隐蔽,藏在了面板侧面通风槽的内壁上,从正面完全看不到。接口端接了一段极细的光纤线,沿着管道走向汇入大楼的弱电系统。光纤的出口末端连接着一**立的通讯转换器,体积跟一包纸差不多大,用磁吸底座固定在吊顶内部的钢梁上。“ 他把手机上的照片翻给陆维桢看。照片上是一条极细的光纤线从面板侧面通风槽探出,沿着墙角的管道走向上行没入吊顶的内部。那条光纤线的表皮颜色和动力研究所大楼的弱电标准线缆颜色相近,如果不打开面板把通风槽内壁拆下来用手电照着检查,根本不会注意到它的存在。 陆维桢看完照片之后把手机还给周承岳。他重新转回操作台前,把那张存储卡的目录树又翻了一遍,在“EXT_MY“文件夹的底层发现了一组以前没有被注意到的文件名后缀——那个后缀的编码格式和动力研究所测试台的设备日志格式一致,但末尾多了一个额外的字符标记。他把那个标记输入系统进行解码,“天工“光屏上跳出了一个结果,只有一行字:“标记指代的方向:测试台实时数据分流口的配置参数文件索引号。“ 光纤线在面板侧面通风槽内壁上连着的,就是那个数据分流口。而物流园配电箱里的中继器,就是沿着那根光纤线的末端从动力研究所大楼里往外收数据的中转节点。现在卡在陆维桢手里,光纤线已经被发现,测试台面板上分流接口的位置也已经确认——但动力研究所内部被加装的那段光纤线从通风槽出口到弱电系统入口之间还有一段距离没有覆盖到。如果那个转换器仍在吊顶内部的钢梁上,它的存在就意味着数据接口仍然可能在未来被重新启用。 陆维桢在操作台前坐下,把那张存储卡从读卡器里取出重新封进防静电袋。他看了一眼白板上那个“?“,伸手在它旁边写了一个词:“吊顶“。 第24章 吊顶 下午一点二十分,陆维桢站在航空动力研究所试验大楼三层的走廊里,身旁的墙上挂着一幅消防疏散示意图,图上标注着楼层内部结构和吊顶检修口的位置。周承岳通过研究所安保部门的工**调,为他安排了一个“技术设备巡检“的临时身份,陪同的是一位穿灰色工装的中年电气工程师,姓刘,在研究所工作十二年,对大楼内部的管线走向十分熟悉。 刘工领着他穿过走廊,在一扇标有“弱电间“的金属门前面停下,用钥匙打开门锁。弱电间内部空间约三四平方米,墙面上排列着成排的配线架和光纤熔接盒,通风管道从顶部横穿而过,管道的保温层包裹严密。刘工从工具梯爬上配电架的高度,用手电照向吊顶板与主管道之间的夹层缝隙。 “那根光纤是从测试台面板通风槽出来的,“他说,“按你描述的大致走向,它应该会经过这间弱电间上方的汇流层,然后沿管道走向接入大楼的主弱电系统。如果吊顶里面的转换器装在钢梁上,那它应该就在这附近。“ 陆维桢站在梯子下方,仰头看着刘工用手电扫过的夹层区域。在管道保温层和吊顶龙骨之间的一个狭窄空隙里,隐约能看到一段与标准线缆颜色略有差异的细线从管道侧面探出,沿着钢梁下沿延伸了一段距离后没入一个约十五厘米见方的金属外壳设备中。设备被两只磁吸底座固定在钢梁的腹板上,外壳颜色和钢梁表面喷涂接近,在吊顶内部暗淡的光线下几乎看不出轮廓。 “找到了。“刘工压低声音说了一句,然后从工具包里取出一把长柄螺丝刀和一副防静电手套,“要拆?“ “先看。“陆维桢接过刘工递来的手电,自己爬上去凑近了几厘米观察那个金属外壳设备的结构。外壳尺寸和他在物流园配电箱里见过的中继器相近,但厚度略薄,侧面多了一组微型散热孔。散热孔的边缘有一层极薄的灰尘堆积——正常的热空气对流会把这些细尘均匀地吸附在孔口周边,形成一圈渐变色的沉积环。但沉积环的分布不完全均匀,孔口下半部分的沉积比上半部分厚,说明设备在被安装之后曾经被调整过倾斜角度。 “这个转换器被人重新调整过角度。“陆维桢说,“刚安装的时候它的姿态可能跟现在不同,有人后期又打开吊顶来调过一次。调整时间可能是最近一两周内的事情,因为沉积环的分布还没被新的气流模式完全覆盖掉。“ 刘工从另一侧探过头来看了一眼沉积环的分布情况,点了点头。“这个弱电间上个月做了一次光纤线路扩容施工,吊顶开过。施工队当时确实有人在这个区域停留过一段时间。“ 陆维桢用手套垫着指腹轻轻触碰了一下转换器外壳的侧面。外壳温度低于人体温度,说明设备并非持续满功率工作状态,可能在接收窗口之外的时间段里处于低功耗模式或者深度待机状态。它的输入端接着那根从测试台面板引出的光纤,输出端延伸出去的一根细线沿着钢梁走向汇入了大楼弱电系统的综合配线架。 “它的输入接测试台,输出接弱电系统。“陆维桢退下梯子,把观察结果记在手机备忘录上,“但弱电系统的综合配线架是整个大楼网络的核心节点——它接上弱电系统意味着从这根光纤过来的数据可以被转发到大楼内部任何一台能联网设备上,也可能通过大楼的外部数据专线送出研究所。“ 刘工从梯子上下来时拍了拍手上的灰尘。他的表情没什么变化,但他的声音比刚才轻了一些:“那个施工队是外包的,当时负责光缆扩容的那批人跟研究所内部没有隶属关系。我可以去查一下当时的施工审批记录和人员名单。“ “查的时候不要直接问。“陆维桢说,“就说技术审计时需要确认扩容施工的工艺质量,调阅施工记录用于存档参考。不要让任何人觉得这次检查有特别的针对性。“ 刘工点了下头。他在离开弱电间之前回头又看了一眼吊顶夹层的方向,目光在那只转换器的外壳上停了一瞬,然后推开弱电间的门走了出去。 陆维桢留在弱电间里又站了一会儿。他重新爬上梯子,这次打开了手机摄像功能,从多个角度拍下了转换器外壳的细节、光纤输入端和输出端的走线路径、以及磁吸底座在钢梁上的接触面位置。拍完照片后他退下梯子,用弱电间里的配线架标签纸快速抄录了转换器输出端接入的那组配线端口编号。 他把所有信息汇总后给顾晏发了一条消息。回复很快就到了,内容简明扼要:“配线端口编号对应的路由路径解析完成。输出端连接的最终落点指向研究所一楼的一间闲置小会议室,那间会议室在办公系统里登记为'视频会议备用室',但近三个月的使用记录显示几乎没有被预约过。“ 一间几乎没有被使用的备用会议室,位于研究所一楼,弱电系统配线端口对应的最终落点。陆维桢收起手机走出弱电间。他在脑海中快速勾勒了一下从测试台面板引出光纤→经弱电间转换器→沿弱电配线架→连接到一楼会议室内部网络端口的完整路径。那间会议室里有一个人长期接收着从测试台上分流出来的实时数据。 他沿着楼梯走到一楼。走廊的尽头是一扇标着“视频会议备用室“的木门,门牌号旁边贴着一张褪色的使用提示标签。他伸手试了一下门把手——锁着。门把手是普通的球形锁,门上方的窗户透出室内一片均匀的暗色,窗帘从内侧拉拢着,看不到内部布局。 他蹲下来从门缝底部观察了一下室内地面的光线反射情况。窗帘闭合状态下室内的光线极暗,但门缝底部有一丝极淡的蓝白色微光透出来——来自某种设备屏幕的待机光源,不是日光灯。那种光线的色温和亮度特征和电脑显示器在夜间模式下的待机屏保一致。 他站起身,没有推门,转身离开了走廊。走回楼梯口时他发了一条消息给周承岳:“一楼视频会议备用室锁着,内部有设备待机光源。建议在不惊动里面的情况下确认该房间的启用状态和使用记录。“ 周承岳的消息回复得很快,但内容让他停了一下脚步:“研究所行政系统记录显示该会议室在近三个月的使用登记表中确实为空白。但内部安保系统有一条异常记录:该房间的门禁感应器在非工作时段有过多次短时触发信号。触发间隔没有固定规律,但触发时段大多集中在晚间九点到十一点之间。“ 陆维桢把手机收起来。晚间九点到十一点,正好是测试台结束晚班运转、数据流入量最大的时段。有人在那个时间窗口里进入那间会议室,取走转换器端分流出来的数据,然后离开。每一次进入和离开之间的停留时间不足以完成大容量的文件传输,更接近于替换存储介质或者检查设备状态的短时操作。 他走出试验大楼正门时下午的阳光打在地上,把建筑外墙的投影拉出一道锐利的明暗界线。他在界线旁边站了一下,视线穿过广场对面稀疏的树影落向远处。航空动力研究所园区内部的布局和龙科院类似,由几栋不同功能的建筑围合成一个相对封闭的实验区。园区北侧围墙的高度和龙科院相似,围墙外的绿化带也采用了类似的分层设计。 他忽然想到一个可能性——那间备用会议室的门禁触发记录如果全部集中在晚间九点到十一点之间,那说明取数据的人使用了一种固定的交通方式进入研究所园区。晚间的园区安保级别比白天高,进出需要刷门禁卡并通过安保值守岗。但如果取数据的人本身就持有有效的园区门禁权限——那他不需要绕行围墙或者避开监控,他可以走正门。 换句话说,把数据分流器装在测试台面板上的那个人,和定期从会议室取走存储介质的那个人,可能不是同一个人。有人负责安装硬件,有人负责定期回收数据。两者的工作时段不同,权限层级可能也不同。安装硬件的人对弱电系统有充分的了解,可能参与了那次光纤扩容施工或者知道施工的详细方案。回收数据的人只需要一张能在晚间进入研究所的门禁卡。 陆维桢在广场边缘停下脚步,拿出手机再次翻看了一遍弱电间里拍到的转换器照片。外壳表面的散热孔旁边的沉积环分布确实不均匀,但那是因为后期被调整过倾斜角度。他在调整角度之外还注意到了一个更细小的特征:散热孔的金属边沿上有一道极浅的擦痕,宽度和某种卡式工具的压力面吻合。那种卡式工具在拿取存储卡时会顺着卡槽的导向面滑动,如果手法不够精准就会在卡槽旁边的金属边沿上留下轻微的摩擦痕迹。 安装硬件的人手法可能不够熟练,或者安装环境受限导致操作不够从容。但那个痕迹已经被擦去了大部分,只在金属表面的微观尺度上残留了一小段微弱的沟槽纹路。陆维桢把那张照片放大后保存好,然后收起手机继续向前走。光屏在他视野里亮了一行字,字体很浅:“转换器散热孔边沿的擦痕方向表明存储卡是从右侧卡槽取出的。取卡人的惯用手可能为左手。“ 一个用左手取卡的人,每周在固定的晚间窗口进入一楼会议室,停留足够短的时间,然后离开。而且他持有的门禁卡能够通过园区安保岗亭的验证。这个人就在研究所内部,使用着合法的身份在合法的时间段内进出,做着表面上完全正常的夜间加班工作。 第25章 守夜 陆维桢没有离开航空动力研究所。他在园区东侧的一栋附属楼里找到了一间用于存放旧图纸的档案室,窗户朝向主试验大楼的方向,正对一楼会议室所在的走廊侧墙。他在窗口旁边放了一把折叠椅,坐下来的角度刚好可以透过档案室窗户的缝隙观察到试验大楼一楼走廊尽头的照明变化和人员进出动态。档案室的门锁是简单的弹簧锁,他在里面把门反锁了,这个房间在晚间不会有人来。 下午到晚上的这段时间他在档案室里继续分析物流园存储卡的剩余数据。卡上除了航空动力研究所和绵阳方向的测试记录之外,还有几个零散的小文件片段,看起来像是早期测试阶段的残留数据,可能因为在不同节点之间的传输过程中发生了中断而只留下了不完整的碎片。其中一组碎片里的时间戳标注比现有的数据覆盖范围更早,属于大约三个月前的记录。三个月前的数据内容指向的对象代码仍然和WP-15C相关,但记录的测试参数类型不同——倾向于材料微观结构演变的数据,而非宏观性能曲线。 这段数据的时间起点和暗潮在蓉城开始部署的早期节点建设时间大致重合。陆维桢在手机备忘录里记下了这个时间点。 天色在六点左右开始暗下来。实验大楼的灯光逐间亮起,走廊灯在七点切换到了夜间节能模式,亮度降到了日间的约三分之一。陆维桢在档案室的黑暗里坐着,视线固定在一楼走廊尽头的方向。值班的安保员在八点半左右沿着主走廊走了一圈,经过那间备用会议室门口时没有停留。九点整,走廊尽头的照明灯光正常亮着,没有人经过那扇门。 九点半左右,陆维桢看到走廊尽头有一个穿深色夹克的人影从楼梯口方向走过来。那人走路的姿态匀速而平稳,没有刻意放轻脚步也没有左顾右盼。他在备用会议室门口停下来,从口袋里取出一张卡片在门锁感应区刷了一下,推门进入。进入后门被带拢但没有完全关严,留了一道约一厘米的缝隙。 陆维桢从档案室窗边站了起来。他隔着窗户看到那间会议室内部的灯光从门缝里透出来——很暗,是那种显示器屏幕的背光亮度,不是日光灯。他看不到房间里的人在做什么,但他开始计时。从那人进门到离开,一共持续了大约三分四十秒。门重新打开时那人手里没有拿任何显眼的物品,他关上会议室的门之后沿原路走回楼梯口方向。灯光在他经过走廊拐角时照到了他的侧面轮廓——中等身材,穿深灰色夹克,未戴帽子,面部特征在距离和灯光条件下不足以辨识。 陆维桢记住了一个特征:那个人在离开会议室走向楼梯口时,他的左手在夹克侧袋外面停了一下,像是确认口袋里有东西。左手。和散热孔边沿擦痕的方向推断一致。 他等那个人完全消失在楼梯口之后才从档案室出来,沿着走廊侧面快速移动到备用会议室门口。门锁在刷卡后重新锁闭,他用手机拍了一下门锁感应区周围面板上的指纹分布,然后蹲下来检查地面。会议室门前的浅色地砖上有两组脚印,一组是进入时留下的,一组是离开时留下的。两组脚印的朝向和步幅一致。但他在门缝边缘的地面上发现了一小片不同于地砖颜色的东西——大约指甲盖大小,浅灰色,形状不规则,像是从某种办公用具上剥落的塑料碎片。他用镊子把它夹起来放进样品袋里封好。 回到档案室之后他重新坐下来,把那个人的姿态和步幅特征在自己脑子里过了一遍。中等身材、深色夹克、左手确认口袋的动作、步幅约七十五厘米、行走速度均匀。他整理好这些信息之后给周承岳发了一条消息,描述了今晚观察到的特征。 周承岳的回复在几分钟后弹出来:“会调取楼梯口和一楼出口的监控截图做比对。你继续留到什么时候?“ 陆维桢看了一眼手机上的时间。九点四十分。那人的进入时间在九点三十分左右,持续了三分四十秒后离开,按照常规的工作节奏判断,他今晚不太可能再回来。但陆维桢没有马上走。他在档案室里又坐了大约半个小时,确认走廊尽头没有再出现人员靠近备用会议室的情况,才起身离开。 他走出档案室时经过了一层大厅的楼梯口附近的挂墙式消防疏散图,图纸旁边的公告栏上贴着一张内部值班安排表,上面排列着研究所本周的夜间值班人员名单和对应的电话分机。值班安排表的打印日期是本周一,表格上的夜间值班人员一共有四名,分为两人一组轮值,每组负责一三五和二四六的晚间时段。今天周四,值班人员是两个人名。 陆维桢用手机拍下了那张值班表。他往外走的时候顺路经过园区内部的通勤车站台,站台旁边的灯箱里贴着一张研究所普通员工的通勤卡发放统计表,上面列出了各部门的人员数量。他在表上找到了对应夜间值班人员所在部门的标注——那两个人名中的一个,来自于试验测试技术部门,正好负责测试台的数据采集系统运行维护工作。 他把这个关联记在了心里,但没有在现场多做停留。走出研究所园区大门时夜色已经完全笼罩了城市,路灯把街道照成暗橘色的光带向远处延伸。他在路边叫了一辆出租车回龙科院,坐到后排靠窗的位置,把手机上的照片和记录重新过了一遍。 出租车经过蓉城东部快速路时,陆维桢的目光越过车窗看到了物流园方向的一片灯光。那辆深色商务车今天没有取到卡,但按照定期检查的逻辑,它会在某个时间点再次出现。而那张被他换走的空白卡,在下一个数据窗口开启时会开始写入新的信息——它会逐渐存储来自蓉城和绵阳方向的新数据,形成一条新的记录链。如果商务车在几周后再次来取卡,看到卡上有数据、设备正常运行,就不会意识到任何异常。 陆维桢靠进座椅里。出租车驶过一段高架桥,城市的灯光在挡风玻璃上反射成流动的线条。他的目光在这些线条上停留了一会儿,然后他闭上了眼睛。 窗外有一架夜航班机的信号灯在高空缓慢移动,光点在天幕上经过一段平直的长线轨迹后渐渐变小消失。天工系统的光屏在他的视野里短暂地亮了一下,上面浮着一行字,字体很浅,收尾处略微发暗:“值班表上那个测试台数据采集维护人员的工作履历中有一条记录——他曾经在该研究所与一家境外测试设备供应商的联合调试项目中担任过现场技术协调员。联合调试项目的时间线和卡上最早的数据碎片时间戳起点一致。“ 陆维桢没有睁眼。出租车在下一段平直路面上继续行驶,轮胎碾过路面接缝时发出均匀的节奏声。窗外夜空中的航线灯已经完全消失了,只剩下一片深色的天幕,被城市的光污染映成暗橘色。他在那均匀的节奏声里慢慢做完了一个完整的呼吸周期才睁开眼睛,城市的灯光在他瞳孔里重新聚焦成清晰的轮廓。出租车前方出现了一个标志着龙科院方向的指示牌,他往座位上挪了一下身体,把外套的领口翻起来。 第26章 定踪 出租车停在龙科院北门外的时候,陆维桢看见顾晏站在门禁旁边的灯柱下面。夜风把她的外套下摆吹得微微翻动,她手里握着手机,屏幕亮着但没有在看。他下车走过去,她侧过头来看了他一眼,没有寒暄,直接说了一句话:“周组长调出了航空动力研究所那个值班人员今晚的行程记录。他离开研究所之后没有直接回家,他在园区外面绕了一段路。“ “绕到哪儿了?“ “南侧的一处公交站台。他在站台上站了大约四分钟,期间做了一件事——把一只信封塞进了站台广告牌背后的缝隙里。“顾晏把手机上的监控截图翻出来给陆维桢看。画面比较模糊,但能辨认出那个人弯腰在广告牌框架的侧后方操作了一下,然后直起身离开。整个过程持续了不到十秒。 陆维桢看着那张截图。一只信封被塞进公交站台广告牌背后的缝隙里,这个动作和物流园配电箱里的中继器构成了同一套传递模式——物理介质在固定地点被放置,由另一条线的人按固定周期取走。他抬头问顾晏:“信封还在那里吗?“ “周组长派人去看了。信封已经被取走了。取走的时间大约在十一点左右,那人从站台离开之后大约一个半小时。“ 陆维桢往前走了一步,站到门禁的灯光下面,用手指在手机屏幕上画了一条简略的路线图:研究所→公交站台放置信封→约一个半小时后有人取走。取走信封的人可能使用了不同的交通工具进入和离开,使得两条行动线之间无法通过时间重叠来建立直接的人员关联。他停了一下,把手机收进口袋。 “他在研究所内部有自己的门禁权限。他还需要把拿到的数据转移到第三条线路才安全。如果他直接带走存储介质或者数据设备,一旦被调查就可能被追踪。所以他在去公交站台之前可能会先把数据转到信封里的某种介质上——比如优盘或者另一张更小的存储卡——然后把原卡留在研究所内部某个安全位置。这样即使他被调查,他手里的东西也只是表面上无异常的办公用品。“ 顾晏转身跟着他一起走进园区大门,两人并肩通过门禁通道时她侧过头说了一句:“周组长调了公交站台附近的交通监控,取走信封的人上了一辆深色轿车,车牌部分被遮挡。车型和物流园那辆商务车有相似之处,但不是同一辆。“ 两辆车。同一套传输网络。一套负责物流园的中继器取卡,另一套负责公交站台的信封回收。两条线在物理上没有重叠,但数据流通的末端可能汇集到同一个中心。 两人走到员工通道入口时,周承岳从阴影里走出来,手里拿着一份打印好的材料递过来。陆维桢接过来翻了一下,是那个值班人员的完整人事档案——姓廖,名维,三十二岁,航空动力研究所试验测试技术部门的数据采集工程师,入职五年。档案附页里有一份他参与的联合调试项目记录,项目名称缩写成“WP-TEST-INTL“,合作方是一家在欧洲注册的测试设备供应商,总部设在德国。项目周期大约在五个月前启动,三个月前结束。物流园中继器卡上最早的数据碎片时间戳也大约在三个月前开始出现。 “他和德国供应商的项目已经结束了三个月。“陆维桢把档案合上,“但三个月后他仍然在从研究所的数据接口往外送数据。可能联合调试项目期间他接触了那家供应商提供的某种软硬件工具,利用那套工具在测试台面板上安装了分流接口。项目结束之后供应商没有拆除那个接口,他继续通过它往外传数据,收益也持续流入他的账户。“ 周承岳点了点头,从夹克内袋里取出另一张纸递给陆维桢。“这是他的个人银行账户在近三个月内的资金流动摘要。每月固定有一笔款项转入,金额相同,转账备注全部空白。转入账户开在一个小语种国家的银行。“ 陆维桢看了一眼摘要上的金额和转账周期。每个月固定一笔,金额不大不小,刚好构成一种持续性的报酬而不是一次性的买断。这种付款模式说明他在做一种长期稳定的服务输出。廖维不是一时兴起帮了个忙,他在按月领取报酬执行一项持续性任务。 “他现在手里没有数据。“陆维桢说,“今晚他取完会议室的数据之后,把数据转到了信封里放到了公交站台。信封被取走之后他手里应该是空的了。如果他在下一次取数据周期之前被我们截停,他没法删除或者销毁他在研究所内部的数据路径——那根光纤和转换器还在弱电间的吊顶里。“ 周承岳接上了他的话:“但他的取货路线还有另一条链路继续运行。公交站台那个点被取走了一份数据,但物流园那边的中继器仍然在收集新的信息。我们手上现在有中继器那张卡的数据副本,也有转换器的位置信息,但背后的资金链和人员的全网结构还没有形成完整的闭环。“ 陆维桢把档案和资金摘要收好,向前走了两步准备进电梯。他在电梯门口停了一下,转过身来说了一句话:“明天白天我要再去一次那间档案室。我有几条时间线和节点位置需要整理成图。“ 周承岳点了下头:“明天上午九点之前车在门口等你。“他说完之后转身朝另一个方向走了。顾晏还站在员工通道入口处,手插在外套口袋里,看起来没有立即跟下来的意思。陆维桢看了她一眼,她抬起目光回望了一下,简单地说了一句:“那张卡上的绵阳数据你还没看完。明天你去研究所的时候我带工作站过去,把绵阳那边的信号源定位同步出来。“ “好。“陆维桢说。 他走进电梯时门合拢之前看到她仍然站在原地,手在口袋里没有拿出来。电梯门关到还剩半掌宽度的时候他看见她朝他的方向动了一下嘴唇,像是说了一句只有一个音节长度的话,但被电梯门的隔音面板截断了没能传进他耳朵里。电梯向下运行的过程中,他站在安静的轿厢里回想了一下那个唇形的轮廓。音节很短,具体内容在快速移动的门缝之间没能完全识别出来。 地下三层的大厅里空无一人,白炽灯在夜间模式下调暗到了偏冷色调的待机亮度。重岳骨架在原位矗立着,右膝磁流变液关节的暗金色纹路在低照度下呈现出一种沉淀的金属光泽。他走到骨架旁边伸手碰了一下关节外壳,表面温度略低于室温,说明待机状态的能耗已经稳定到了很低的水平。他回到操作台前坐下,打开笔记本,把今晚收集到的所有信息节点整理成了一张时间轴线图。 线图从三个月前开始——联合调试项目结束、测试台面板分流接口安装完成、物流园中继器开始写入数据。然后在约一个月前出现了变化:公交站台的信封投递点开始启用,廖维的转账记录从那时起出现了固定的入账周期。而深色商务车在物流园的取卡周期也大约在这个时间段开始固定下来。两条并行的数据链路在同一时间点形成了同步架构。 陆维桢在那条时间轴线上画了一个圈,圈住了约一个月前的那个转折点。然后他把笔记本合上了。光屏在他的视野里亮着,底部浮着一行极淡的灰色文字:“廖维的通讯记录在近一个月内出现了一个重复频率较高的号码,归属地为蓉城本地,机主身份未在公开数据库中注册。该号码的基站连接记录与公交站台取信人深色轿车出现的位置在时间上存在数次重合。“ 他在椅子上靠了一会儿,闭着眼把那个号码的几组时间重合点在心里粗略排了一下。然后他睁眼看了一眼大厅墙壁上的钟——已经过了凌晨。他站起来走到折叠床旁边坐下,外套没脱,手搭在膝盖上安静了大约几分钟才躺下去。头顶的应急灯在暗处投下一圈幽绿的光圈,落在重岳骨架右膝外壳的暗金色纹路上,把那片金属表面的纹路照成一道细长的弧线,在安静的黑暗中微微亮着。 第27章 镜像 陆维桢睡了大约三小时,醒来时大厅的照明已经切换到了日间模式。他坐在折叠床边把外套重新拉好,膝盖上的笔记本还在待机状态,屏幕上的时间轴线图和他睡前合上时一致。他把笔记本打开,在时间轴的“一个月前“标记处加了一行备注——廖维的转账记录起始点与深色轿车固定的取信周期起点重合。 顾晏在七点二十分左右推门进来,手里拎着一只黑色的设备箱和一杯打包好的豆浆。她把设备箱放在操作台上打开,里面是一台经过加固处理的便携工作站,侧面多了一组外接天线接口。“绵阳那边的信号源数据我昨晚做了初步定位,“她说,“把卡上EXT_MY目录的所有文件覆盖时段做了基站匹配,信号源的大致位置可以收敛到风洞实验室周边半径大约两百米的范围。如果再结合风洞实验室的建筑平面图做路径损耗修正,可以进一步缩小。“ 陆维桢接过豆浆喝了一口,温度刚好。他看了一眼工作站屏幕上已经加载好的风洞实验室周边地图,信号源的定位点以一个淡蓝色的圆形区域标注出来,圆心落在实验室主体建筑的东侧边缘。圆形区域的半径已经被顾晏缩小到了一百五十米左右。 “如果能拿到风洞实验室里面某个具体房间的弱电图纸,再做一次衰减模型校正,应该能把范围收到三十米以内。“顾晏用手指在屏幕上的地图区域画了一个圈,“但需要知道那栋楼的建筑材料和外墙屏蔽参数——这个信息我得问周组长协调。“ 陆维桢放下豆浆杯。他站起来走到操作台侧面,把昨晚在档案室里收集的廖维行动时间线用白板画了出来。每一个时间节点旁边他都标注了对应的物理位置:研究所测试台、弱电间、一楼会议室、南侧公交站。他把四个位置之间的连线在板子上画出来,发现了一个之前没注意到的几何关系——从一楼会议室到南侧公交站之间有一条几乎笔直的路线,中间经过研究所在建的实验区临时围挡。 “临时围挡区“这几个字在他脑子里停留的时间比其他节点更久。他在白板上把围挡区的位置用虚线标注出来,在虚线上方写了一个问号。如果廖维从会议室取完数据之后通过临时围挡区而不是绕过它去公交站,围挡区内部可能藏着一个更隐蔽的传递节点。围挡区本身是工地,出入人员杂、设备堆放多,一个信封放在工地的某个角落比放在公交站广告牌背后更不容易被注意到。 “你等一下。“顾晏说。她从自己的手机上调出了一份建筑许可信息——临时围挡区所在的在建实验室项目批文,审批时间约四十天前。围挡区的施工区域计划在近期完成主体结构封顶,施工队预计将在未来两周内撤离。 “围挡区还有大约两周的施工窗口。“陆维桢说,“廖维用的公交站投递点启用时间大约一个月前——比围挡区施工开始的时间晚。他可能先用了别的方法,后来发现工地围挡区内更方便、更隐蔽,就切换了投递位置。公交站那个点只是个备用或者障眼法。“ 顾晏在工作站上快速检索了一下围挡区施工项目的人员进出记录。记录显示施工人员的名单是固定的,但最近两周有一名新加入的短期电工被登记在项目人员列表里,该电工的入职时间恰好和公交站取信人出现的时间吻合。 陆维桢走到操作台前重新坐下来,把那名短期电工的名字输入系统进行信息查询。“天工“系统的返回结果比预期更短:名字是一个常见普通名,关联的身份证号在公安系统内登记的有效地址与蓉城本地不符,显示该人户籍所在地不在本省。他对照了一下那辆深色轿车的出没路线,发现取信人行动的时间窗口和那名短期电工的下班时间之间有一个可重叠的区间——围挡区工地夜间停工的时间大约在七点前后,取信人出现在公交站台的时间在十一点左右。中间有四小时的时间差。 “他在工地现场待到夜间停工,然后用这段时间在围挡区内完成交接,最后以乘坐公交或其他方式离开。“陆维桢在白板上补了一条从围挡区到公交站台的路线,“公交站台的取信行为是第二层——故意安排在一个有监控的区域让调查人员看到有人取走了信封,但真正的数据在工地内部已经转移走了。公交站的信封可能是空的或者是作废的旧存储介质,用来转移注意力。“ 顾晏站在白板前面看了片刻,然后伸手在围挡区的位置画了一个圈,在圈中间写了一个字:“对。“ 她收回笔之后转身从设备箱里取出一台小型信号分析仪,开机预热。机器的风扇开始低速旋转,噪音被设备箱内部的吸音棉吸收了大半。“如果工地内部有真正的交接点,那它应该配备某种信号设备来协调廖维和取信人之间的时间配合。廖维不能每次都碰运气等取信人出现,他需要在到达围挡区之前确认取信人是否已经就位。“ 陆维桢接过了她的话头:“所以围挡区里面可能有一台简单的信号交换设备——不需要存储功能,只需要在特定时间窗口内发送和接收确认信号。廖维到围挡区之前先发一个短信号,设备收到后回复一个确认码,取信人那边同时收到提示。之后廖维放下东西,取信人稍后来取走。“ 他在白板上画了一个简化的信号流程图。从廖维手机发出一条短消息→围挡区内部的中继设备接收→转发确认码给取信人→两方各自完成自己的操作。整个过程不需要两人同时出现在同一位置,只要有信号设备和足够的时间窗口。 顾晏把信号分析仪的扫描频段设为与物流园中继器相近的频段范围,手动调整了中心频率和带宽参数。“如果工地内部的设备用了和物流园类似的频段,信号分析仪在距离围挡区边界三十米以内可以捕捉到它的待机信号。“她看了一眼操作台上的时间,“现在出发的话,可以赶在施工队上工之前先做一次被动扫描。“ “走。“陆维桢站起来把外套拉链拉好,拿起操作台上的手机和钥匙。走出大厅时他经过重岳骨架身边,用指背碰了一下右膝关节的外壳表面——温度正常,暗金色纹路在灯下平静地亮着。 他和顾晏从员工通道上到地面时,园区内部的晨光带着一层薄薄的雾气。周承岳的车停在通道口外面,引擎已经启动,从散热格栅里冒出的热气在冷空气中凝成淡淡的白雾。他看见两人出来,从车窗里递出一张折叠好的A3打印纸,上面是临时围挡区的施工平面图,图上用红笔标注了配电箱和弱电井的位置。 陆维桢接过图纸快速扫了一遍。围挡区内部共有六个配电箱和三个弱电井,分布在施工区域的四周。其中两个配电箱的位置比较隐蔽,一处靠近施工材料堆场的角落,一处紧贴着围挡区北侧边界。靠近北侧边界那个配电箱和公交站台之间的直线距离最近,符合数据从工地内部转移后的行进方向。 周承岳的车向北驶出龙科院园区,在早高峰的车流中沿着通往航空动力研究所方向的路线平稳行驶。陆维桢坐在后排低着头看那份施工平面图,旁边的信号分析仪已经开机运行,液晶屏上的频段扫描正在向整个城市的一个角落无声地发散出探测信号。 第28章 引线 信号分析仪的屏幕在车辆接近航空动力研究所园区时开始出现波动。顾晏把设备放在膝盖上,一边盯着屏幕的变化一边根据地图坐标做实时校准。扫描频段被设定在物流园中继器同频段的窄带范围内,经过约两分钟的搜频循环后,频谱曲线上出现了一个持续存在的微弱特征峰。 “捕捉到了。“顾晏把屏幕稍微倾斜让陆维桢看清,“特征峰的位置在围墙边界内约十五米,和临时围挡区的北侧边界位置基本吻合。信号强度很低,但持续稳定,符合待机状态的设备工作特征。“ 周承岳在距离围挡区约两百米处把车停在了路边,位置处于一处临时停车带,前方是一排修剪过的灌木丛。他没有熄火,把引擎保持在怠速状态,车窗降了一条缝隙让外部空气进入车内。“施工队换班时段是早上八点到八点半之间,现在是七点四十分,工地应该刚开始上人。你们进去之后如果是被盘问,就说是甲方委托的电气安全检查。“ 陆维桢从车里出来时,晨间的工地入口已经有人影在活动了。临时围挡的铁皮门半开着,里面堆放着钢管、板材和几台小型机械。他看到门内左侧有一顶安全帽挂在钉子上,下面放着一件橙色反光背心,应该是给进入工地的人员准备的。他戴上安全帽,把反光背心套在外套外面,顺着信号分析仪指向的方向穿过材料堆场的间隙向工地北侧移动。 工地内部的布局比图纸上看起来更紧凑。北侧边界是一段临时铁皮围挡,围挡内侧的地面上铺着模板和碎砖块,配电箱位于一摞待用的预制构件后面,位置正好在围挡和材料堆之间的窄缝里。配电箱的外观是标准的施工配电箱,绿色金属外壳,门用一把挂锁锁着。陆维桢走近时注意到锁具的锁梁上有一层薄薄的润滑脂——不是用于防锈的常规保养,更像是为了减少开锁时的摩擦声响而涂的。 他从口袋里取出一把小号螺丝刀和一把钳子,撬开了挂锁的锁梁。锁弹开时几乎没有发出声音。他打开配电箱门,内部除了标准的空气开关和接线端子排之外,在箱体底部靠近背板的位置多了一个手掌大小的黑色盒子,用双面胶固定在一个不遮挡其他接线位置的空隙里。盒体侧面有一根极细的天线引出,沿着箱体内的线槽路径走向箱壁的通风孔处延伸出去。 “找到了。“陆维桢压低声音对身后的顾晏说。他蹲下来用手机拍了几张黑色盒子的照片,然后观察到盒子表面有一枚几乎不可见的微型指示灯,以约每三秒一次的频率缓慢闪烁——和物流园中继器的待机状态指示一致。盒体侧面有一个微型USB接口,接口内部的金属触点表面有多次插拔造成的轻微磨痕。 “USB接口被反复使用过。“陆维桢说,“而且接口周边的塑料外壳上有一小块磨损区域,形状和尺寸与一种微型读卡器吻合。可能有人定期通过USB接口往这台设备里拷贝配置文件或者更新任务参数。“他把那磨损区域的照片拍下来存档,然后继续观察盒子的连接线——只有一根细同轴线从盒体引出,沿着配电箱的线槽通往地下的埋管入口,方向朝向航空动力研究所主试验大楼。 “它的信号收发端接到了地下埋管,然后连回研究所。“陆维桢直起身,“不是独立的无线设备。它是研究所内部那条信号链路的延伸端——从弱电间的转换器引出一路信号,通过地下埋管进入工地配电箱,再由这台盒子做信号中继和低功率覆盖。廖维进入工地之前发出短信号到这台盒子上,盒子把它转发给取信人。“ 顾晏站在配电箱侧面的通道里用信号分析仪再次扫了一遍盒子附近的电磁环境。确认盒子的工作频段和物流园中继器一致后,她把频谱仪的扫描频率做了一次细微的偏移,捕捉到了一段间隔约六秒的窄带脉冲。“盒子除了接收廖维的信号之外还在发另一组周期性脉冲——每隔六秒一次,可能是向远端的接收器发送位置确认。循环周期非常稳定,像是出厂预置的参数。“ 陆维桢把配电箱门重新合上,挂锁扣回原位。他在工地内的材料堆旁边站了一会儿,把几个时间节点在脑子里重新对齐:围挡区施工两周后结束,廖维的交接窗口依赖这个工地内部的隐蔽性,一旦施工队撤离、围挡拆除,这个交接点就会失效。这就意味着他需要在剩下的两周内建立新的交接渠道。而今晚或者未来几天内很可能是这个交接点的最后一次有效使用。 他转身走出工地北侧的临时入口时,顾晏正站在门外的人行道上用手机看着什么。见他出来她把手机侧过来,屏幕上是一张刚收到的消息截图——周承岳从研究所安保系统的后台调出了廖维今天的工作排班。排班表显示他今天下午三点到晚上十点有一个“设备巡检“的任务,任务备注栏里写着“调试台架传感器检查“。 “他把今天的工作结束时间排到了十点。“陆维桢说,“如果今晚是他计划在围挡区做最后一次交接的时间窗口,他在九点到十点之间结束工作,然后到围挡区去放东西。我们可以在他进入围挡区之后截停他,同时让地面组在围挡区外围监视可能出现的取信方向。“ 他把安全帽摘下来放回铁皮门内侧的挂钩上,反光背心叠好放回原处。两人沿着来路往回走,步子平稳没有加快,期间没有和工地内部的人员发生任何接触。回到车旁边的时候,陆维桢把配电箱内盒子的照片翻出来又看了一遍,然后收起手机坐进后排。 信号分析仪在返回途中被他重新打开,又扫了一遍围挡区周边的频谱。盒子仍在运行,周期脉冲稳定输出,频率没有偏移。然后他在频谱曲线的边缘捕捉到了一个几乎不可察觉的微弱变化——盒子的主频旁边出现了一个极窄的副峰,能量比主峰低约二十个分贝,时间间隔不规律。 “这组副峰的出现时间和格式,“顾晏接过设备细看了一遍波形,“看起来像是某种数据写入操作的信号残留。刚才有人在远端向这个盒子发送了一条数据。“她对照了一下时间戳,“发送时间在七点五十八分——我们离开配电箱之后大约十分钟。有人在盒子接收到新的配置参数或者指令。“ 陆维桢把那组副峰保存下来。他望向车窗外不断后退的城市轮廓,远处的航空动力研究所园区在天际线上逐渐变小。那台配电箱里的黑色盒子现在可能正在执行一条新的指令,也许和今晚的交接计划有关。它的副峰频率在频谱图上像一道细微的墨痕,在人声扰动的早间环境中安静地附着在规律的周期脉冲旁边,等待着当天下午到傍晚之间被激活的那个时刻。 第29章 收网 下午三点,陆维桢回到龙科院地下三层的时候,操作台上已经铺开了一张航拍照片——航空动力研究所园区下午时段的卫星图,分辨率足以辨识建筑物的屋顶轮廓和地面车辆的位置。周承岳站在操作台旁边,手里拿着一张叠好的A4纸,上面用红笔标注了三个位置:试验大楼一楼会议室、弱电间的楼层平面图、以及围挡区北侧配电箱所在的具体坐标。这三个点的连线在地图上形成一个不规则的三角形,每个点之间的距离都在步行可达的范围内。 “外围组在围挡区南侧、东侧和北侧建立了三个观察点位,“周承岳把纸展开后平放在图纸旁边,“北侧点位距离配电箱约四十米,视野可以覆盖配电箱周围整个区域。廖维进入围挡区之后如果通过北侧配电箱做交接动作,北侧观察位能完整目视记录整个过程。“ 陆维桢俯身看了一遍地图上的点位分布。北侧观察位选择了围挡区外一栋三层建筑的天台,从那个角度可以俯视配电箱所在的北侧边界。东侧和南侧的观察位分别覆盖了工地入口和施工区域的内部通道,能提供不同的视角来确认廖维的进入路线和移动轨迹。 “今晚如果他进入围挡区的时间段是工作排班结束之后,“陆维桢直起身说,“大概是九点到十点之间。那时候园区内部人员流动已经很少了。他走到围挡区的人行路径不会经过安保岗亭,可以利用园区内部的联廊和通道绕行。但最终要进入工地北侧边界,必须经过围墙和围挡之间的夹道。那条夹道没有监控覆盖,也几乎没有照明。“ 周承岳从夹克内袋里取出一只掌心大小的设备放在桌面上,外壳是黑色磨砂材质,侧面有一个微型镜头和两组传感器。“这是主动式低光成像仪,可以在无环境光的条件下捕捉三十米内人体活动的热信号和轮廓。北侧观察位的人员会携带这台设备锁定配电箱周围的区域。“ 陆维桢看了一眼那台设备的外形,然后收回目光坐到了操作台前。他没有说话,但他在心里把整个时间线从头到尾过了一遍——廖维在晚间进入围挡区、在北侧配电箱前停留、完成数据交接或放置动作。如果今晚是他的最后一次操作,他会比平时更谨慎,可能在移动路径上做额外的迂回或停留。 “廖维的手机信号今天有没有异常波动?“他问。 周承岳翻开手机的加密通讯应用看了一眼,然后抬头说:“有。今天中午十二点左右,他的手机短暂地连接了一个非常规基站节点,切换时间只有不到两秒。这种短时基站切换通常发生在手机移动到某个信号覆盖边缘区域时——但他今天中午应该是在办公室,办公室所在的位置按理说不会有基站切换。“他停了一下,“那个节点的归属运营商和物流园中继器通信所用的运营商相同。“ 陆维桢的手指在桌沿上停住了。中午十二点的基站切换,意味着廖维在办公室期间可能收到了一条通过特定基站发送的短消息或触发信号,信号来源和物流园的通信基础设施同属一套网络。那条消息可能是对他今晚操作的最后确认——在正式行动开始之前,主控端在向他发送一次“仍然有效“的信号。 “他知道今晚是最后一次。“陆维桢说,“主控端已经通知了他。“ 顾晏从大厅东侧走过来,把手中那台升级过天线的便携式频谱仪放在操作台上,天线端多了一组宽频接收模块。“围挡区配电箱那台盒子的周期脉冲信号从中午十二点十分开始发生了变化——脉冲间隔从六秒缩短到了四点五秒左右。这种变化通常意味着设备进入了高活跃度准备状态,准备在较近的时间窗口内接收或转发指令。“ 她调出频谱仪上保存的波形变化记录展示给两人看。脉冲间隔的变化曲线从中午十二点十分开始变密,然后稳定在了新的频率上,没有再变回去。 陆维桢看着那条波形曲线在屏幕上停了一会儿,然后站起身来走向折叠床旁边的储物柜,从里面取出了一件深色软壳外套换上。他把手机、钥匙、工具钳和一副薄手套分别装进了外套的各个口袋里。拉链拉好之后他转过身来,看向周承岳和顾晏。 “他去围挡区的时候,我跟着进去。不需要近距离接触,只需要确认他放置物品的位置和方式。如果他从配电箱中取出了什么东西而不是放置了什么东西,这个区别很关键——取出意味着他在回收旧设备,放置意味着他在投送新的数据。两者对应的后续处理方式完全不同。“ 周承岳看着他沉默了两秒,然后开口说:“你进去之后如果他被惊动,你会成为园区内部唯一一个在围挡区附近没有合法身份的人。外围组会在五十米外,他们过去需要大约十五秒。“ “我知道。“陆维桢说。 晚上九点四十分,陆维桢站在航空动力研究所东侧围墙外的一片行道树阴影中。他沿着围墙外侧的行人道走到了与围挡区北侧边界平行的位置,然后借助一处栽在围墙内侧的树木枝干的支撑,翻过了围栏。落地的位置正好在围挡区的铁皮围栏和主体建筑之间的夹道里,地面覆盖着碎砖和硬化的混凝土渣,脚下踩上去的触感让他每一步都放低了重心,使声响压到最低。 他在夹道中向前移动了几步,贴着围挡的铁皮壁面观察配电箱的方向。透过材料堆和预制构件之间的缝隙,他看到配电箱侧面的地面有一处微小的反光——像是刚被踩过的地方留下的湿润脚印,踩痕的边缘还有一层薄薄的水汽在夜晚的空气中缓慢蒸发。距离他在那里放置物品的时间并不远。 然后他听到夹道另一头传来脚步声。很轻,踩着工地地面碎砖的节奏,步伐均匀,正在沿着材料堆之间的空隙向配电箱方向移动。陆维桢站在原地没有动,把自己贴在围挡铁皮的阴影和材料堆之间的夹角里。一道手电光从材料堆边缘掠过,光线没有扫到他的位置。 廖维出现在配电箱前面。他穿着白天在排班表上看到的深灰色夹克,手里没有提包也没有明显的物品。他在配电箱前面蹲下来,打开了挂锁,箱门打开之后他没有立即操作内部的盒子,而是先侧头朝四周扫视了一圈。手电的光束在他扫视的过程中短暂地划过陆维桢藏身的夹角边缘,但那个角度恰好落在材料堆的阴影最深处,手电的反光被粗糙的预制构件表面散射掉了。 廖维收回视线。他伸手到配电箱内部,用手指在黑色盒子的侧面摸了一下——不是放置物品的动作,而是确认某样东西还在原处的检查动作。然后他关上了配电箱门,重新挂好锁,站起来沿着来路快速离开了。 陆维桢在夹角里保持静止,等他脚步声在材料堆的间隔之间逐渐变小消失,才从阴影中走出来。他蹲到配电箱前面重新打开了挂锁和箱门。手电的光打在盒子侧面的USB接口上——接口周围出现了一圈微小的材料位移痕迹,像是被夹持过或者被触压后的轻微变形。廖维刚才做的不是放置也不是取出,而是确认动作。他在确认盒子仍然固定在其安装位置且没有被更换过。 陆维桢直起身,重新锁上配电箱门。他在工地材料堆的暗影中站了一会儿,视线落在配电箱侧面刚刚被关闭的那扇金属门上。廖维没有在这台盒子上放置任何新的数据介质。他只是来确认盒子仍然在它应该在的位置。那今晚的数据交接可能根本没有发生在他身上——或者,交接的方式已经改变了,不再需要通过物理介质在工地内部完成。 他转身沿着来路返回围墙处,翻出围挡区落到了外侧的夹道地面上。在落地的瞬间,他的手机震动了一下——一条来自顾晏的消息,发送时间在三十秒前:“频谱仪在廖维进入围挡区的同时捕捉到一段短暂的数据流,发送位置从测试大楼一楼会议室方向发出,长度约十兆字节,目的地坐标匹配公交站台侧面的基站ID。数据流在五秒内完成传输后信道恢复空闲。“ 数据已经传完了。廖维去工地配电箱确认盒子状态,只是他在最后一步操作之前做的确认检查。真正的数据在今晚早些时候已经通过那间会议室里的终端直接发往公交站台的基站方向。那座公交站台旁边的某个设备已经收到了数据,可能在几分钟内就会被取走。 陆维桢站在围墙外侧的夹道里,夜风从行道树的间隙穿过,吹动外套下摆的边缘。他在原地站了片刻,手机屏幕在黑暗中亮着微光,顾晏的消息上方是周承岳在三分钟前发来的一行字:“公交站台北侧约五十米处有一辆深色轿车停靠,引擎运转,大灯关闭。停车位置和站台广告牌之间视线畅通。“ 第30章 截停 陆维桢从围挡区外侧的夹道沿着围墙快速向北移动。夜风迎面灌进来,他的外套下摆在快速行走中向后翻动。他边移动边在手机上给顾晏回了一条消息:“公交站台附近那辆深色轿车有没有人员上下车动作?“消息发出去大约十几秒后回复弹出,简短:“没有。停车后车门未开启,大灯保持关闭,引擎持续运转。“ 他加快脚步,从围墙外侧的绿化带切向公交站台方向。公交站台所在的位置是研究所园区南侧围墙外的一条支路,路面较窄,两侧种着行道树,夜间车辆少。他贴近路侧的灌木丛边缘停下脚步,透过树冠的间隙观察公交站台周围。站台上方的灯箱亮着白光,下方候车椅上空无一人。站台北侧约五十米处,一辆深色轿车停在路边,车窗全黑,车身在路灯下泛着暗色的哑光漆面。引擎盖上方没有散热蒸腾的热气,说明它停在这里的时间可能比预想的更久。 “天工“系统的光屏在他视野里亮了一行字:“该车辆停放位置与公交站台广告牌之间直线距离约四十七米。如果车内有人员在使用定向接收设备,该距离在设备的典型覆盖范围以内。“ 陆维桢没有从灌木丛后出来。他在那个位置观察了大约一分钟,轿车没有任何动作——没有人员上下车,没有车窗升降,没有灯光变化。但引擎持续运转说明车内有人,并且准备随时启动。 周承岳的消息在这时弹出来:“外围组已从东侧和南侧两个方向接近,距离目标车辆约一百米。你所在位置可以观察到车辆北侧和车尾方向。如果车内人员启动车辆撤离,他有两条路线:沿支路向西进入主干道,或掉头返回东侧的老街区。“ 陆维桢把手机收回口袋。他重新看向那辆深色轿车,视线落在车尾的方向——排气管处有一缕极淡的白色水汽正在夜风中缓缓飘散,说明车辆的发动机已经运行了较长的一段时间,水温正常,处于稳态怠速状态。一个长时间在原地停着等待的人,必然在等待某个特定事件的发生。可能是接收数据,也可能是在确认某条运输线路的通畅状态后继续前进。 顾晏的下一条消息在几十秒后到达:“我已经拿到了公交站台广告牌内部空间的结构信息。广告牌箱体内部有一层检修空间,通过侧面的锁孔可以打开。我刚才远程查询了站台维护记录,该广告牌在两周前有过一次维修记录,维修项目标注为'更换照明面板'。“ 广告牌的检修空间。数据可能通过无线信道进入了设置在检修空间内的某个接收设备,然后被取信人在晚些时候取走。但公交站台是公共场所,取信人不可能在站台上逗留过长时间而不引起注意,所以取信的动作应该非常短暂——开门、伸手、取出、关门,整个过程只需要不到十秒。 陆维桢在灌木丛边缘蹲得更低了。他看着那辆轿车前方的路面,等待它的前灯亮起或者排气管水汽的形态变化。如果取信人已经取走数据并回到了车上,那车辆很快就会驶离。如果取信人还没有取,车辆会继续停在这里等待一个行动时机。 时间在蹲守中缓慢流过。大约过了七八分钟,公交站台的灯箱忽然从白光切换到了一段短时的不稳定闪烁,持续时间约两秒,然后恢复到了正常的稳定亮光。这个闪烁的持续时间太短了,如果不是因为一直在盯着站台方向,几乎不会被注意到。但陆维桢看到了——光箱的短暂闪烁频率和一般的供电波动不一样,更像是某种电子设备在完成数据写入或读取时的瞬时电流变化引起的电压跌落。 “公交站台灯箱刚发生了一次短时不稳定的闪烁,“他用手机给顾晏发了一条语音,声音压到最低,“可能是在写入数据或者完成一次通信握手。“消息发出后他没有放下手机,而是继续观察着公交站台的方向。灯箱的白光恢复正常后的平静持续了大约又半分钟,然后那辆深色轿车的前灯亮了。车灯亮起的同时,引擎的怠速声升高了一个档,车辆开始向前移动。 轿车起步的速度不快不慢,没有急加速也没有转向灯,以平稳的低速向前驶出停车位置。陆维桢在它经过公交站台前方时利用路边一处电话亭的遮挡侧移了一段距离,视线从轿车的前窗玻璃掠过。驾驶座上坐着一个人影,面部被车内的暗色遮挡着,无法辨认。但他在那个人影的轮廓上注意到了一个细节——驾驶员在通过公交站台前方时右肩略微向左倾斜了一下,像是把手伸向副驾驶座的方向拿东西。那个动作的幅度和频率暗示他刚刚从副驾驶座上取走了某个物品,可能是从站台广告牌取回后放在副驾驶座上的介质或者设备。 “车辆启动了,正在沿支路向主干道方向行驶。“陆维桢给周承岳发了这条消息,然后从灌木丛边缘站起来开始沿路侧的绿化带快速跟踪那辆轿车的移动方向。轿车在一个路口右拐上了主干道,车速开始提升。他停下来看着车尾灯渐渐变小汇入主干道的车流,然后转身穿过人行道走向公交站台。 他在站台广告牌的侧面停下。灯箱侧面的检修口面板锁孔附近有一圈浅浅的擦痕,锁孔内部有新打开的金属光泽。他用手机拍了一下锁孔的照片,然后用一把窄扁的工具插入锁孔,轻轻撬动。面板弹开了。内部空间里露出的并不是常规的照明驱动模块——角落的金属支架上用双面胶固定着一只手掌大小的设备,黑色磨砂外壳,侧面有一根外接天线延伸到灯箱顶部。设备底部的一枚指示灯在柜门打开后从绿色切换到了熄灭状态,像是一种检测到柜门被开启后自动关闭工作状态的防护逻辑。 一只在柜门开启后自动关闭信号的接收器。这意味着如果有人检查这只设备,在它被看到的同时它已经不再发送任何信号。但它的存储部分可能仍然保存着刚刚接收到的数据。陆维桢没有取出那台设备,只是用手机快速拍了两张照片记录位置和型号标识,然后关上面板重新锁好。他把那一小段微弱的记忆保留在自己脑子里——设备型号标签上的数字序列,和他之前见过的一台暗潮设备的外壳标识存在相似性。 他站起来离开公交站台,沿支路原路返回,到了路灯较暗的段落才拿出手机,给周承岳发了一段完整的时间记录:“轿车从公交站台驶离的时间点与灯箱不稳定闪烁的时间点间隔约四分钟。取信动作可能在灯箱闪烁结束之后立即完成,然后车辆启动离开。目前设备仍在广告牌内部,数据可能已经通过无线方式被车辆取走,也可能设备内部存储了一份副本。建议优先分析轿车的行驶路线是否与物流园方向一致。“ 他走在夜间的支路上,脚步声在空旷的人行道上被行道树的阴影吸收。手机屏幕的光在他手中亮着,消息正在发送给周承岳。他向前走了几步,站到了路灯和树影的交界处。灯箱刚才那一瞬间不稳定的闪烁,像敲击在某根绷紧的琴弦上发出的最后一个音符,被夜风带走了,但它的余音还在。 远处的主干道方向已经看不到那辆轿车的尾灯了,只有一长串稀疏的车灯在夜间的道路上游移着向城市的不同方向分散。他沿着支路继续向前走,用手机把刚拍到的设备型号标签照片又看了一遍,照片上那串数字序列在屏幕的光线下排成一行的形状,和他记忆里之前见过的那台设备外壳标识之间的相似感,在夜色的覆盖下逐渐变得更加具体——不只是相似,布局几乎一致,像是同一批产品的不同个体。 第31章 聚合 陆维桢回到龙科院地下三层时,大厅里的灯比平时亮了一个档位。操作台上的工作站在运行着,屏幕分成了四格画面:物流园存储卡的数据目录树、公交站台灯箱内设备的照片放大图、围挡区配电箱盒子的脉冲波形图、以及一张标注了所有节点位置的蓉城电子地图。顾晏站在工作站前面,面前摊开着一本翻到中间页的笔记本,上面用箭头和简写连接着不同位置的信息节点。 她听见脚步声抬头看了他一眼,然后把笔记本朝他的方向转了半圈。“路线已经出来了。轿车从公交站台驶离之后没有上主干道,而是在支路上走了大约六百米之后拐进了一个小区的地下车库。车库只有一个出入口,周组长已经在车库里找到了那辆车,停在角落的长期租用车位上。车上没有人员,后备箱里有一只空着的黑色设备箱,内部衬垫形状和你在公交站台设备上的外壳轮廓匹配。“ 陆维桢走到操作台前,低头看了一眼笔记本上画好的路线图。从公交站台到那个小区车库的距离很近,车开过去只需要不到三分钟。取信人把设备从公交站台带回车上之后,在车库里做了拆卸和转移,然后把设备带离了车辆。车库本身可能只是中转过程中的一个停靠点。 “车库有没有其他车辆在那段时间出入?“他问。 “有。“顾晏把笔记本电脑上的一段监控记录调出来,“在那辆轿车进入车库之后大约六分钟,一辆白色面包车从同一出入口驶出。面包车的行驶方向与轿车来的方向相反,驶向了绕城高速入口方向。“ 陆维桢在笔记本的路线图上又加了一个箭头,从小区车库延伸到绕城高速,标注了“白色面包车“。然后他把物流园存储卡的目录树和公交站台设备的照片放在一起比对。两台设备的外壳标识布局接近,但公交站台设备的型号标签下面多了一行手写体的附加编码,字体细小,颜色和背景近似。他放大那张照片后辨认出了那行附加编码的内容——一组字母和数字的混合序列,以“LOG-“开头,后面跟着六位数字。 “LOG-202471“。“天工“系统的光屏自动匹配了这条编码的格式,返回的结果是一个对应的逻辑标识:“该编码与物流园中继器存储卡文件系统中某一目录的命名后缀一致。该目录位于卡上EXT_MY文件夹下层,存储的是绵阳方向的数据包在蓉城中转后生成的传输日志副本。“ 同一套编码出现在两个不同的设备上。公交站台灯箱内的接收器和物流园配电箱里的中继器,它们在同一个数据归档体系内被标定了不同的逻辑节点编号。 陆维桢在笔记本上把公交站台设备和物流园中继器用一条横线连接起来,在线上方写了“共享命名规则“。然后他在线的下方又加了一条备注:“数据路径:研究所测试台→弱电间转换器→一楼会议室终端→公交站台设备→轿车→车库→白色面包车→绕城高速→目的地未知。“ 他在“目的地未知“旁边画了一个问号。 顾晏转过身来,在键盘上输入了一组查询指令,调取了面包车驶出车库之后进入绕城高速入口的监控截图。截图显示白色面包车在高速入口处没有停车缴费,使用了ETC通道通过。ETC账户的登记信息被系统自动抓取,返回的车主名字是一个公司名称:一家注册在蓉城的物流运输企业,主营业务是省内短途货运。该公司名下共有六辆营运货车,面包车是其中一辆。 陆维桢盯着那家公司的名字看了一会儿。这家物流公司和东郊那家精密加工企业之间没有直接股权关联,但如果他把自己收集到的信息做一次网络图式的叠加——暗潮在蓉城的节点布局已经覆盖了研究所内部、工地、公交站台、物流园和东郊工厂等不同物理位置。它们之间依靠物流运输企业提供的车辆在不同站点之间循环移动物资和数据。 “这家物流公司的运营区域覆盖了蓉城、绵阳和沿海方向的主要货运线路。“陆维桢说,“它名下的六辆车可以在四川省内自由行驶而不引起注意。如果其中一辆车定期从蓉城接收物资并运往沿海方向,这条线路就是暗潮在蓉城获取到数据之后向境外转运的通道。“ 他回到笔记本电脑前,把那家物流公司的名字输入系统进行检索。“天工“系统在数秒内返回了一份企业信用信息摘要——公司注册于五年前,初始业务范围是普通货物运输。但在大约三个月前,该公司的经营范围进行过一次变更,新增了“仓储服务“和“国际货运代理“两项业务。那两项业务被加入的时间节点恰好和廖维开始从研究所往外传数据的时间点吻合。 “经营范围变更不是巧合。“陆维桢把笔记本屏幕转过来让顾晏也看到,“三个月前,这家公司被扩展成了具有中转和跨境运输能力的复合型物流节点。蓉城收集到的数据通过它的车辆体系集散,一部分可能在当地存储,另一部分经由沿海方向继续向外转运。“ 顾晏站在他身边把那条信息记在了笔记本的空白页上。她记完之后停顿了一下,然后开口说:“公交站台那台设备现在还留在广告牌内部。如果我们在取出它之前先弄清楚它和物流园中继器之间的通信协议是否存在直接匹配关系,那下一步就可以通过它获取到物流公司下一步的运输计划——比如下一次转运安排的车次和时间。“ 陆维桢合上笔记本。他站起来走到白板前,把公交站台设备的位置标注在已有的节点图上,和物流园中继器、围挡区配电箱用不同颜色的线条连接起来。他在三条线交汇的地方打了一个星号标记,然后在星号旁边写了一行字:“协议匹配与否决定下一步行动方向。“ 他转过身来面对操作台方向,顾晏已经坐回工作站前开始调取设备通信协议的对比数据。她的手指在键盘上快速敲击着,屏幕上陆续打开了几组信号的波形对比图,分别来自物流园中继器的通信记录和公交站台设备在安装后初步扫描时捕获的原始信号特征。两组波形在同一个频谱分析的界面上重叠排列时,它们的脉冲间隔、上升沿陡度和载波中心频率三条关键指标以几乎相同的斜率呈现在坐标图上,从视觉上几乎无法区分。 “协议完全匹配。“顾晏把重叠波形的对比结果保存下来,“公交站台设备和物流园中继器使用同一套通信协议和相同的硬件平台。如果我能通过工作站向物流园中继器发送一条指令,让它回传自己存储的数据内容——那它的回传格式刚好可以被公交站台设备完整接收,即使物理设备之间没有直接连线。“ 陆维桢站在白板前面,手中的马克笔的笔帽还没有合上。他在星号旁边又补充了一行字,这次字迹比刚才稍微重了一些:“公交站台设备是物流园中继器的远程终端。中继器通过协议层向公交站台设备推送数据,公交站台设备通过路灯电源供电和无线信道接收,再由取信人定期取走。整套系统不需要联网,不需要人工干预,只靠预设的传输逻辑就能自主运行。“ 他放下马克笔。白板上完整地呈现了暗潮在蓉城数据采集网络的全貌——从研究所内部的光纤分流接口开始,经过弱电间、会议室、围挡区、公交站台、物流园这几个物理中继点,最终由物流公司的车辆体系向沿海方向转运。廖维和围挡区电工属于这个流程中的主动人力环节,负责维持设备状态和放置提取数据。其余的部分全部由自动化设备完成,不需要任何额外人员的参与。 光屏在视野里亮了一行字:“物流园中继器存储卡的常规轮询周期还剩余大约十天。如果商务车在下一次轮询时发现卡被换过,他们对网络状态的安全性判断会重新评估。在此之前,蓉城范围内的剩余节点仍可以继续运行。“ 陆维桢看着白板上的全图,然后转身走回操作台前坐下来,打开笔记本上保存着的围挡区配电箱盒子的脉冲波形记录,在波形图上找到了那台盒子发出的周期性确认信号的时间轴——下一次确认信号将在明天上午七点三十分左右发出。他关上笔记本,把白板上的星号标记又看了一遍。那张图的最后一段连线还缺一个终点标记。 第32章 锚点 早晨七点十五分,陆维桢站在操作台前,面前并排摆着两台笔记本屏幕。左边是物流园中继器存储卡的完整目录树,右边是公交站台设备的协议解析结果。两套系统的底层通信参数被顾晏连夜完成了逐项比对,结果已经汇总成一张对比表格,显示它们的载波频偏、调制方式和数据帧结构完全一致。他在这张表格的末尾加上了一个新的标注:“物流园中继器和公交站台设备共用同一套通信协议栈,且路由表中的上层节点标识指向同一个IP地址段。“ 他把标注栏旁边的问号划掉了。 顾晏从大厅东侧走过来时手里端着一杯新冲的速溶咖啡,她在操作台侧面站定,把咖啡杯放在远离键盘的位置,然后侧过头看了一遍陆维桢新加的那行标注。“上层节点标识对应的IP地址段解析出来了吗?“ “刚完成。“陆维桢调出了另一个窗口,上面显示着一组地理定位结果,“IP地址段归属一家沿海城市的通信服务商。定位精度在市区范围内,但具体到建筑层面还需要结合物理层的信号数据做进一步收敛。“他把窗口向下拉了一段,在底部看到了一行以前没注意到的备注——IP地址段的注册信息里有一条历史记录,显示该地址段在约四个月前曾被用于一条临时申请的跨境数据专线。专线的申请方是一家注册在沿海城市的贸易公司,该公司的主要业务范围标注为“电子元器件进出口“。 那家贸易公司的成立时间大约在六个月前,注册资本刚到门槛。它的注册地址和四个月前申请跨境数据专线的时间窗口之间存在先后顺序:贸易公司先成立,然后两个月后申请了专线,再一个月后蓉城的采集节点开始投入运行。时间线上的逻辑链条是完整的——先建好出口通道,再启动数据采集。 “沿海那条线是预先布好的。“陆维桢说,“蓉城的数据采集网络建成之前,数据出口通道已经准备好了。物流公司的车辆把数据运到沿海城市之后,通过那家贸易公司的跨境专线转运出境。整个链条从出口端倒推着建设起来的。“ 顾晏喝了一口咖啡,放下杯子时她的目光落在了沿海城市那一行的定位坐标上。“那家贸易公司的注册地址离港口不远,大约两公里。如果专线的物理终端也放在那个区域,那附近应该有相应的通信机房或者数据中心。“ 陆维桢把笔记本电脑上的地图软件打开,输入了贸易公司的注册地址,地图上浮现出一片灰色建筑群的轮廓。那片区域靠近港口物流区,周边分布着几座仓储设施和一座小型通信枢纽楼。枢纽楼的立面照片在街景模式下显示为一栋四层灰白色建筑,外墙挂着几家通信运营商的标识牌。其中一块标识牌上的运营商名称与IP地址段的注册服务商一致。 “枢纽楼里有信号节点。“陆维桢在贸易公司坐标和枢纽楼位置之间画了一条短的连线,“物流公司的车辆到达沿海城市之后,从车上取下的数据设备会被送到枢纽楼接入专线,或者直接在枢纽楼内完成数据转存和出境传输。整个过程不需要人员进入港口海关区域,全部在通信服务商的机房里完成。“ 周承岳从大厅入口走进来,手里拿着加密手机。他在操作台侧面停下,把手机屏幕朝陆维桢和顾晏的方向转了转,上面是一张从沿海城市通信枢纽楼外围监控中截取的画面——一辆白色面包车停在枢纽楼卸货区,车身侧面没有标识。画面上的时间戳是今天凌晨一点二十分。 “和蓉城小区车库里那辆白色面包车车型、颜色一致。“周承岳说,“车牌经过处理后无法直接辨认,但车身侧面后窗的黑色贴膜边缘有一处划痕,形状和蓉城监控拍到的面包车贴膜划痕吻合。“ 同一辆车,在蓉城装货后在夜间行驶数百公里抵达沿海枢纽楼。车辆到达后停在了卸货区,然后货物被送进了枢纽楼内部。陆维桢看着那张截图上白色面包车的轮廓,边缘有一圈路灯的微光勾勒出车顶的弧度。沿海城市凌晨的街灯和蓉城不同,偏冷白的色温把面包车的车漆表面照成一种灰蓝色的哑光质感。 “这条线还在运行。“陆维桢把笔记本屏幕合上,“蓉城这边采集的数据通过廖维和公交站台送到车上,再由物流公司体系运到沿海,最后通过专线出境。整个过程是流水线式的,每个环节只负责自己的那一段。拆掉任何一个环节都只能暂时中断流程,但链条本身只要还有人在操作就可以重新建立。“ “那要拆掉链条,得把最底层的接点切断。“顾晏说,“物流公司车辆用于转运,贸易公司专线用于出境,暗潮的人员网络只负责设备维护和定期取货。如果我们同时切断物流公司的车辆调度能力和贸易公司的数据专线两端,链条就被打断了,新链条的重新建立需要时间。“ 陆维桢站起来重新走向白板。他在现有的数据流全图上沿着物流公司→沿海贸易公司的路径画了一条粗线,在粗线的末端画了一个停止标记。他在停止标记旁边写了一行字:“目标:同时中断车辆转运和专线出境,截断数据流向境外。“ 写完之后他停了一下,在停止标记的上方加了一行附加条件:“需在物流园中继器下一次轮询之前完成。否则卡被取走、新链路的调整可能会被提前启动。“ 周承岳站在白板侧面看完了新添加的内容,他的目光在“同时“两个字上停留了片刻。“同时“是一个需要精确时间配合的操作条件——车辆转运和专线出境两端的行动必须同步执行。如果一端先动,另一端得到消息就会提前撤走。 “明天白天之前。“周承岳说,“物流公司调度和贸易公司专线的同时行动需要协调车辆追踪和专线切断两套操作。“ 陆维桢把马克笔放回笔槽里。大厅里的照明在白天的光线中显得均匀而稳定,重岳骨架的轮廓在操作台的侧面投下一道清晰而硬的阴影,右膝关节的暗金色纹路在光线下被照成一道窄窄的亮线。他转身走向重岳骨架,伸手在右膝外壳表面停留了一下,指尖能感觉到金属材质的表面略微偏凉,在空气中维持着与室温接近的热平衡状态。 光屏在视野里亮了一行字,比平时的提示更简短:“物流公司名下六辆营运车辆中有一辆处于非运营状态的备用车。备用车的GPS信号显示它昨天下午从蓉城出发,目前位置位于到达沿海城市之前的最后一个服务区附近。如启动截停,建议优先识别该车。“ 陆维桢把视线从光屏上移开。他站在骨架旁边转了个角度,视线刚好能越过顾晏的肩头看到白板上的全图。所有线条在光线下汇聚又展开,上面布满节点间的连线,每个节点上都标注了他亲手写下的说明文字。远处的走廊里传来值班人员换班时走过地面的脚步声,在大厅外面的空间里逐渐走远。墙上的时钟指针指向七点二十分,距离围挡区配电箱盒子的下一次确认信号还有十分钟,物流园中继器存储卡的下一次轮询还有约十天,沿海方向备用车的GPS信号还在继续向港口方向移动。 第33章 闭环 七点三十分,围挡区配电箱的盒子准时发出了确认信号。信号波形在频谱仪屏幕上出现了一组规律的脉冲序列,持续约三秒后结束。顾晏在旁边同步记录了信号的完整波形,将它与之前从物流园中继器捕获的通信样本做了对比,确认了信号格式的一致性。 “确认信号已发出,时间窗口和格式都符合预期。“顾晏把波形记录保存下来,“如果廖维今天没有特殊安排,这个信号就是他确认盒子状态正常的方式。“ 陆维桢站在操作台侧面,目光在沿海备用车的GPS坐标和车辆行驶方向之间来回切换。备用车的信号显示它已经离开了最后一个服务区,正在向沿海方向行驶。按照当前速度,它将在上午十点左右进入沿海城区的范围。如果这辆备用车上载有从蓉城转运出来的数据设备,那么它的到达时间和物流公司常规的转运周期是吻合的。 周承岳从大厅入口方向走近,手机屏幕亮着,上面是一份刚收到的协调计划草案。“沿海那边的人已经在贸易公司注册地址附近做好了信号监测准备。专线链路如果被切断,他们能在三十秒内确认链路状态变化。物流车队的追踪组也已经锁定了那辆备用车的实时位置。“ “备用车到达沿海城区之后,它优先去的地方是那家贸易公司的注册地址还是枢纽楼?“陆维桢问。 周承岳低头看了一眼手机上的反馈消息,然后抬头说:“目前没有确切的路线规划。但从上一辆白色面包车的行驶记录来看,它在到达沿海城区后先停靠了贸易公司注册地址所在的那条街道,然后才去了枢纽楼。可能是两处地点都需要停留。“ 陆维桢在脑海里把两处地点的时间顺序过了一遍。贸易公司的注册地址和枢纽楼相距约两公里,如果车辆需要在两处分别停留,每次停留时间不会太长——应该只是放下或者取走某样东西。可能贸易公司地址处存放的是旧的数据存储介质,而枢纽楼负责将新数据送出境。备用车到达后,先到贸易公司放下旧的介质,然后到枢纽楼接驳新的传输流程。 “旧介质被替换下来后可能要回收。“陆维桢说,“物流公司不只是单向运送数据,它也在循环使用存储介质。车辆到达沿海后把旧卡取下来放在贸易公司那边,然后带一批新卡回蓉城继续使用。所以备用车到贸易公司地址的停留时间用于回收旧卡,到枢纽楼的停留用于送出新数据。“ 周承岳把这条逻辑快速整理成消息发给了沿海方向。大约两分钟之后他收到了回复,回复内容被精简成一行:“贸易公司地址和枢纽楼两处地点的行动可以同时执行。备用车在贸易公司地址停靠时截停车辆,同时切断专线——两个操作的时间差可以控制在一分钟以内。“ 陆维桢在白板上的“沿海“节点下方添加了一条时间线。他在时间线上标注了备用车预计到达的时间窗口,然后画了两条平行的短箭头,分别指向“车辆截停“和“专线切断“两个操作标记。他在两个标记之间画了一条竖线连接,标注了“同步执行“。 “车辆截停后,车上带回蓉城的旧卡如果被取走,就能进一步确认蓉城和沿海之间的数据流动周期。“他说,“同时专线切断后,贸易公司那边的数据通道就断了,就算备用车上的新卡没被截住,数据也无法通过专线送出。“ 顾晏一直站在操作台侧面没有坐下。她手里的频谱仪还开着,屏幕上持续显示着物流园中继器的信号状态。她看了一眼屏幕然后抬起头来,看向陆维桢的方向:“物流园中继器的轮询周期是常规循环,但它的主频边沿有一组从昨天开始出现的微幅波动。波动的周期和备用车的位置更新频率接近,可能在通过中继器同步备用车的状态信息。“ “中继器在监控车辆状态。“陆维桢转过身来,“物流园中继器不只是接收和转存数据——它还在跟踪物流公司车辆的实时位置。备用车的GPS信号可能被中继器同时读取并存储了一份。如果我们截停了备用车,中继器会在下一次心跳信号中检测到车辆位置不再更新,然后触发异常状态。“ 他快速走到操作台前坐下,打开了物流园中继器的远程访问界面。利用之前从物流园中继器存储卡上获取的协议样本,他向中继器的管理端口发送了一条“车辆状态确认“的查询指令。几秒后中继器返回了一个数据包,包里包含了一组GPS坐标序列——备用车过去四小时的行驶轨迹,位置更新频率均匀,最后一次更新时间在几分钟前。 “中继器确实在监控车辆位置。“陆维桢把返回的数据包保存下来,“截停备用车的同时需要处理掉中继器里的车辆定位跟踪数据。否则中继器会在备用车停靠后约十五分钟内向主控端发送车辆异常的警报。“ 周承岳立刻接上了这句话:“处理中继器数据需要多少时间?“ “从发送清除指令到数据被覆盖完成,大约需要五到八秒。“陆维桢看了一眼物流园中继器的操作界面,“清除指令的格式和常规数据回传指令相似,只需要把目标字段替换成中继器存储区的缓存地址即可。我可以在备用车截停的同时远程发送清除指令,把车辆跟踪数据从它的缓存中覆盖掉。“ 他低头在键盘上快速编写了一条针对中继器缓存的清除指令,把指令格式和物流园中继器支持的协议版本做了最后一次确认。保存好之后他抬头看了一眼墙上的时钟——八点零七分。 “备用车预计到达沿海城区的时间在十点到十点半之间。“陆维桢说,“距现在还有大约两个小时。这段时间内我需要确认清除指令是否会触发中继器自身的安全告警机制。如果会,就需要在发送清除指令之前做一次协议层的掩盖。“ 顾晏端着频谱仪的探头靠近工作站的天线接口,联机读取了物流园中继器的底层协议状态。她的目光扫过屏幕上展开的协议栈分段图,用一只手在键盘上快速敲击了几行指令,然后松开手让结果自己运行。几秒后,屏幕上的协议栈被折叠成了一行简洁的状态摘要,摘要末尾标着两行小字:“清除指令对中继器主控协议来说属于常规系统维护指令序列的一部分,不会触发单独的安全告警。主控端只有在收不到预期心跳信号时才会启动检查流程,而清除指令本身不改变心跳信号的发送间隔。“ 陆维桢把那行摘要内容记在了笔记本上。他站起来重新面向白板,在“车辆截停“和“专线切断“两个标记旁边各添了一个小字:“清缓存“和“断链路“。四个操作形成一个闭环,在时间线上并列排开。然后用一条线把它们全部框在一起,在线框的末尾写了两个字:“九点五十——行动启动倒计时。“ 他把笔放下,退后一步,看着白板上那个完整的操作计划图。所有节点都在上面了——从蓉城研究所内部的光纤分流口开始,经过弱电间、会议室、围挡区、公交站台、物流园,通过物流公司的车辆体系延伸到沿海城市,再通过贸易公司的专线出境。链条上的每一个点现在都被识别并且对应了具体的切断或清除措施。整条线将在今天上午十点左右被同时打断,从中间和末端两个方向同时施加切断力,使链条无法形成完整的回路。 光屏在他的视野里亮了一行字,字体比以前明亮,边缘带着一丝淡蓝的辉光:“建议在行动开始前再次确认备用车的位置及其是否载有原定从蓉城转运的数据设备。如果备用车只是空车补给,截停行动的意义会降低。“陆维桢没有抬头,他的目光落在白板上的全图上。那条从蓉城延伸出去直到港口的线条,每一个节点都对应着他亲手标注的内容和记录。他盯着那个锚点看了几秒钟,然后视线向下移到了操作台上的海岸线地图上,地图上沿海城市那片灰色建筑群的轮廓在屏幕光线下显得清晰可见,灰色的屋顶连成一排延伸向港口的方向。 第34章 断流 九点四十分,陆维桢最后一次刷新了备用车的GPS坐标。信号显示它已经进入沿海城区范围,正在向贸易公司注册地址方向移动。车速从高速状态降到了城市道路限速以下,预计到达时间在九点五十五分左右。他把坐标数据同步发给了周承岳和沿海方向的执行组。 周承岳站在操作台侧面,手机保持通话状态,听筒里传出沿海方向现场的声音——有风噪和远处港口的低频机械轰鸣。他没有说话,只是举着手机站在原位,用目光看了一眼陆维桢的方向。陆维桢微微点了一下头。 九点四十七分,备用车的GPS坐标在贸易公司注册地址所在的街道上停滞了。车辆进入了停车状态,位置精度显示它停在了目标建筑正前方。陆维桢的指尖悬在键盘上方,物流园中继器的远程操作界面已经打开,清除指令准备就绪。顾晏站在他侧面,频谱仪屏幕上物流园中继器的心跳信号稳定地维持着预设间隔。 “车辆停稳。“陆维桢说。 周承岳把手机贴近了嘴唇,说了一个字:“动。“ 陆维桢按下了回车键。物流园中继器端的清除指令在不到一秒的时间内通过远程连接发送到了中继器的管理端口。指令执行返回确认几乎在同一瞬间出现在界面上——缓存已被覆盖,车辆跟踪数据从中继器存储区中被彻底擦除。与此同时,沿海方向的专线切断操作同步触发,通信枢纽楼内的链路状态在后续的几秒内切换到了中断模式。 周承岳手中的电话听筒里传出沿海方向现场的简短确认——车辆已截停,车内人员在控制中。然后是一句关于专线的状态更新:“线路已断,链路两端均无信号。“ 三个操作在不到两分钟内全部完成。陆维桢的手指从键盘上抬起来,屏幕上物流园中继器的心跳信号依然以原有的间隔稳定输出。中继器没有察觉到任何异常。从它的视角看,车辆的位置缓存被正常更新覆盖,心跳正常,所有状态都保持着未受干扰的表象。 顾晏从频谱仪屏幕上抬起头来,她的目光在工作站上的物流园中继器状态界面和沿海方向的确认消息之间来回移动了一下,然后收回视线落在陆维桢的方向。她什么也没说,但她的姿态从屏息的状态中放松了一小格。 周承岳挂断了电话。他把手机放回夹克内袋,走到操作台旁边拿起一支笔在白板上的“车辆截停“和“专线切断“两个标记旁各打了一个勾。他又在“清缓存“和“断链路“旁边补了两个勾。四个勾排列整齐,在白板的白底上形成了一行短促的确认符号。 “备用车里面发现了什么东西?“陆维桢问。 周承岳把刚刚从电话里听到的反馈整理了一下:“车内后排座位下方有一只带锁的金属箱,打开后里面是一组数据存储卡,标注日期排列,覆盖了过去几周的采集周期。另外还有一部单独的加密平板电脑,系统处于待机状态,屏幕上显示着物流公司的车辆调度界面。“ 陆维桢在听到“数据存储卡“时已经在心里进行了快速的对应。那些卡上的数据覆盖周期和蓉城采集节点的运作时段吻合,确认了他此前的推断——备用车在蓉城和沿海之间循环运输存储介质。而平板电脑上的车辆调度界面则说明备用车的驾驶员同时负责现场调度确认,他通过那台设备确认沿途各节点的状态。 “平板电脑上的调度界面可能记录了其他节点的位置和状态信息。“陆维桢说,“如果它显示了对蓉城采集节点当前状态的实时反馈,那我们就有了完整的节点列表。“ 周承岳把这条信息转述给了沿海方向的执行组。几分钟后他收到了一组从平板电脑上提取的界面截图。截图显示了一个简洁的调度列表,上面标注了四个位置编号和对应的状态指示。其中三个位置的状态指示灯为绿色,一个为灰色。灰色的位置对应的编号是蓉城物流园的配电箱中继器位置——因为那张卡已经被换成了空白卡,中继器在逻辑上不再处于活跃的发送状态。 陆维桢在手机上调出之前在物流园中继器内部安装的那张空白卡的信号状态,确认它确实被系统识别为离线状态。那个灰色的状态指示灯提供了确切的反馈——主控端的调度界面已经将那个位置标记为待处理状态,但还没有触发进一步的行动。可能因为系统的判定逻辑中存在一个缓冲周期,在这段时间内允许中继器自行恢复。 “白色指示灯出现在调度界面上后,主控端需要多长时间做出响应?“顾晏问。 陆维桢在脑海中估算了一下暗潮系统的常规响应周期。从物流园中继器的异常标记出现到被人工确认和处理,中间通常隔着一个固定的时间窗口,结合之前的设备日志记录分析,那个窗口通常在几天之内,而不是几小时内。 “至少还有几天。“陆维桢说,“但备用车被截停这件事本身会触发更紧急的响应。物流公司会发现车辆没有按计划返回,然后启动备用方案。这之间的时间差可能比中继器异常标记的处理时间更短。“ 他重新打开笔记本上的物流园中继器操作界面,检查了清除指令执行后的状态反馈。中继器仍然在按预设周期输出心跳信号,车辆缓存已经被覆盖。如果主控端在接下来几个小时内有任何查询请求发送到中继器,它返回的车辆状态数据将是空白——这本身就是一个异常信号。 “需要给中继器回传一组假的车辆位置数据。“陆维桢说,“让它继续返回备用车正常行驶的轨迹,直到备用车原本应该在的时间点抵达沿海目的地。这样主控端在查询时看到的是一段完整的行程记录,直到车辆到达终点之后才停止更新。“ 他从车辆GPS记录中截取了一段备用车过去几天的标准行驶轨迹,调整了时间戳后写入中继器的缓存。修改完成后,他让系统模拟了一次查询返回的测试,返回结果显示在屏幕上——一段平滑的行驶轨迹,终点和备用车原本的目标一致,所有关键参数和时间窗口的吻合。 “假的轨迹已经写入。“陆维桢合上了笔记本屏幕,“备用车在系统中仍然处于正常行驶状态,直到它按计划抵达沿海目的地。主控端在这段时间内不会收到任何异常通知。“ 他站起来走到白板前,在已经打了四个勾的操作列表下方又加了一行备注:“备用车假轨迹将持续至今日十二时,届时轨迹结束,中继器返回车辆到达状态。主控端如在该时间后查询备用车位置,将看到'已到达终点'的正常状态——但真正的车和货物已经不在原地了。“ 光屏在视野里亮了一行字,边缘比平时多了一层极浅的淡蓝色:“物理截停和链路切断两个操作均已完成。信息链条自蓉城至沿海方向已中断,两端之间的通信暂时性断绝。主控端在可预测的时间窗口内不会察觉异常。但备用车的失联和专线的中断会分别被各自体系的巡查人员在更长时间周期内发现,届时将触发第二层应急方案。“ 陆维桢看着那行字在视野里停留到自动淡出。白板上所有标记旁边都对应着已确认的操作结果,从蓉城到沿海的完整链条上,每个节点现在都处于被切断或清除的状态。他在链条最末尾的位置画了一个实心圆,把那个圆放在港口方向的标记旁边,然后退后一步,把马克笔的笔帽重新扣好。 远处的走廊里传来电梯门开启的声音,声音在混凝土结构的长廊中经过反射后传进大厅时已经变得很薄。 第35章 回声 沿海方向的消息在上午十一点左右陆续传回。备用车截停后,车上带锁金属箱内的存储卡被逐一编号封存,加密平板电脑的屏幕内容被完整镜像保存。周承岳把平板电脑的镜像文件通过加密信道传回了龙科院地下三层的工作站,陆维桢在那份镜像里找到了物流公司过去六十天的调度记录。车辆出发时间、目的地标记、货物类型编码、以及每个节点操作员确认状态的时间戳,构成了一张完整的时间轴。 他在时间轴上注意到了一个重复出现的模式:每隔大约七天,调度列表上会出现一个目的地标记为“综合仓储-北区“的条目,货物类型编码为“CR-07“,状态确认时间总是固定在傍晚六点到七点之间。这个条目出现的频率和其他节点的轮询周期不完全一致,CR-07的周期是七天,而物流园中继器的轮询周期是约十天。两个时间窗口在调度记录中错开排列,几乎没有重叠。 陆维桢把CR-07的条目单独提取出来,按照时间顺序排列。七天的周期和暗潮系统常规的通信周期格式不匹配,更像是某种不依赖于电子通信的、基于时间窗口的物理交接安排。他对照地图找到了“综合仓储-北区“的位置——蓉城北部一处物流仓储集中区,距离市区约二十公里,与之前暗潮使用的任何地点都不重叠。 “CR-07可能是一套独立运行的备用传输链路。“陆维桢对站在操作台对面的顾晏说,“它和物流园中继器、公交站台设备的运行周期不同步。如果主链路断了,这套七天周期的线路可能还在运行,而且它的目的地标记'综合仓储-北区'没有出现在其他任何节点的记录中。“ 顾晏侧过头来看了一眼屏幕上排列好的CR-07时间轴。她的目光在几个相邻的时间戳之间来回比对了几次,然后伸手在屏幕上指向了一个时间窗口:“最近一次CR-07的确认时间是在昨天傍晚六点四十分。它的下一次确认时间将在约六天之后——也就是备用车失联被主控端察觉之后才出现。“ 陆维桢在笔记本上记下了六天的窗口。如果主链路的断裂需要几天时间才能被主控端察觉并启动应急方案,而CR-07的物理交接节点将在大约六天后启动,那它的运行窗口将正好落在主控端启动应急调查的时段内。这是一个时间窗口的重叠。 “主控端在调查期间如果启动任何备用传输渠道,“陆维桢说,“CR-07可能是最早被激活的选项之一。它的运行周期不受电子通信影响,只需要人到场做物理交接。如果我们要在主链路断裂后继续阻断暗潮在蓉城的数据外传能力,CR-07这个点需要在六天内被找到和处理掉。“ 周承岳从大厅入口方向走过来,手里拿着加密手机,在走进操作台区域时他开口说了一句:“沿海那家贸易公司的注册地址今天上午已经做了实际核查,办公室处于空置状态。专线切断后通信枢纽楼的外来设备被技术组清走了,确认没有残留装置。“他在操作台边停下,看了一眼屏幕上CR-07的调度记录,然后继续说,“物流公司其他五辆车辆已经全部进入监控范围,没有发现新的异常移动。“ 陆维桢在周承岳的反馈和CR-07的时间轴之间做了一个快速的信息整合。物流公司的其他车辆仍处于正常监控状态,贸易公司注册地址空置,专线中断。蓉城目前的节点中,物流园中继器和公交站台设备已经被他更换了存储卡和做了被动监听部署,围挡区配电箱里的盒子在完成确认信号后应该处于闲置等待状态。但CR-07那条线还在运行,并且它第一次出现的位置“综合仓储-北区“在地图上没有和任何已知暗潮节点重叠。 “需要去一次北区仓储区。“陆维桢说。 周承岳没有多问,他低头在手机上看了一眼导航,然后抬头说了一个时间:“下午两点,车在门口。“ 午饭时间是陆维桢和顾晏在操作台旁边分了两份速热米饭。顾晏把其中一份的加热包拆开,倒入杯中的凉水,等待自热反应的间隙她把CR-07的时间轴再次打开,用笔记本上的地图软件叠加了交通流量数据,计算了从龙科院到北区仓储区的最优行驶路线和可能的观察位置。 “仓储区的布局和之前去过的几个地点都不同。“顾晏说,“它是一大片标准化仓库群,进出通道多,车辆周转快,人员流动量大。在里面放置一个小型的信号设备或者交接点,要比在围挡区工地和公交站台更不容易被发现。“ 陆维桢把米饭吃完,把餐盒收好放进了垃圾袋。他站起来走向储物柜,取出一件没有识别标识的深灰色外套换上。回头时他的目光掠过操作台上那台物流园中继器的远程操作界面,界面上的假轨迹已经运行到了备用车接近沿海终点的位置,距离轨迹结束还有大约四十分钟。 下午一点五十分,陆维桢和顾晏坐进了周承岳开来的深色轿车,向北驶出龙科院园区。途中经过蓉城北部城区的过渡带,两边的建筑密度逐渐降低,从密集的多层住宅过渡到零散的工业厂房和仓储设施。北区仓储区的入口没有围栏和岗亭,只在地面画着引导标线,主通道两侧排列着编号从A到H的八排大型仓库,仓库之间留有宽敞的装卸场地,有几辆叉车和轻型货车在场地间穿行。 周承岳没有直接进入仓储区,他把车停在了距离北侧入口约两百米处的一处加油站空地上。从那个角度可以看到仓储区北侧仓库群的侧面和装卸场地的部分区域。陆维桢在副驾驶座的位置展开一份从物流公司调度记录中复制下来的仓储区平面图,在上面标注了CR-07条目的目的地标记点位置——在仓储区北端的一排编号为G区的仓库中段。 他放下地图透过前挡风玻璃观察G区仓库的方向。G区的建筑外观和其他仓库基本一致,灰色外墙、高卷帘门、屋顶有若干排气口。G区仓库中段的卷帘门处于关闭状态,门外的装卸区地面干净整洁,没有货物堆放的迹象。 他在车里坐了大约十分钟,注意力集中在G区中段的卷帘门和周边区域的细微变化上。十米内没有人员靠近,没有车辆在中段区域长时间停留,卷帘门的底部和地面的接缝处没有新的地面划痕或车轮印。但在G区仓库中段外侧墙面上,有一个尺寸略大于标准的通风百叶窗。百叶窗的叶片间隙内有一小片深色的物体,颜色和仓库外墙的灰色涂层不同。 陆维桢用望远镜对准了那处百叶窗,在放大的视野中看清了那处深色物体的具体形状:一枚手掌大小的电子设备外壳,用磁吸底座固定在百叶窗内侧的金属框架上,外壳表面和百叶窗叶片之间的接触面经过处理,在外墙阴影的覆盖下几乎不反光。 他把望远镜放下,确认了那个位置在平面图上对应的坐标——G区中段卷帘门侧面的百叶窗,距离地面高度约三米,正好和仓库内部一个方便检修人员操作的高度相对应。然后他注意到百叶窗下方的地面上,靠近墙根的位置有一个极小的反光点,像是一粒落在水泥地上的金属碎屑。那个位置在卷帘门的角落和地面接缝处,处于视觉上不易被注意的范围内。但它的存在表明曾有人站在这个位置使用过金属工具,工具与地面接触时留下了碎屑。 北区仓储区这处百叶窗内侧的设备可能是暗潮备用传输链路中的另一个节点。它的安装位置隐蔽,工作状态稳定,而且不与物流园中继器或公交站台设备形成通信交集——它是独立运行的,只在固定的七天周期内被激活一次。那粒地面上的金属碎屑在午后的阳光下,在墙角边缘的位置处反射着微弱的光点。 第36章 静探 金属碎屑在午后的阳光和墙角阴影之间维持着一道细小的亮线。陆维桢收回望远镜,目光在那片区域和车辆周围的参照物之间来回对位了几次,确认了碎屑和卷帘门外侧地面上其他杂物之间的位置关系——碎屑的落点处在卷帘门和百叶窗之间约一步半的距离上,形成了一条不太规则的分布带,像是有人站在卷帘门前用工具操作过百叶窗内侧的设备后,转身离开时工具与地面发生的短暂接触留下的轨迹。 “设备在百叶窗内侧。“他把望远镜放下对周承岳说,“卷帘门前面的地面碎屑分布带表明操作人员在工作时站在卷帘门正前方的位置,正对百叶窗。操作完成后工具与地面接触留下了这批碎屑。“ 周承岳从后视镜里观察了一阵G区仓库中段周围的人员和车辆活动情况。仓储区的日常运作节奏在下午时段保持着一定的稀疏度——偶尔有叉车从H区方向穿行过来,隔几分钟有一辆小型货车沿着主通道驶过,但没有车辆在G区中段区域长时间停留或减速。 “要接近那扇百叶窗做近距离观察,需要选择附近没有车辆和人员经过的时段。“周承岳说,“卷帘门正前方的地面没有任何遮蔽物,从G区两侧的任何角度都可以看到那个位置。如果有人在白天走到卷帘门前进行操作,会被周边至少三个方向的视线覆盖。“ 陆维桢重新打开车辆中控台上叠放的地图,手指在G区北侧和H区之间的通道上划了一条路线。“北侧通道通向G区仓库的背面。G区仓库背面应该有一排送风口或者检修门。如果从背面绕到靠近中段百叶窗的位置,利用仓库墙体和相邻建筑之间的夹角做遮挡,观察角度可以覆盖百叶窗的正侧面而不暴露在卷帘门前的开阔地面上。“ 顾晏从后排侧过身来看了一遍地图上标注的通道宽度。她的手指沿着G区北墙的走向滑过一遍,在地图的角落停下。“仓库背面和H区围墙之间的距离大约四米,中间有一条夹道。夹道地面铺着碎石,走过去会留下脚印和摩擦痕迹,但如果在傍晚之后光线变暗的时候进入,利用储物箱或者堆放在夹道两侧的备用托盘做临时遮蔽,可以被观察到的时间窗口内完成近距离检查而不被仓储区的人员注意到。“ 周承岳低头看了一眼车内的时钟。下午两点二十三分,距离傍晚天黑还有大约三个多小时。他看了一眼陆维桢的方向,后者正在收拢地图的边角准备打开车门。 “等到六点半。“周承岳说,“天色暗下来之后外围的人员活动会明显减少。那之前我们保持在这个位置观察设备周围有无周期性的人员接近迹象。“ 等待的过程在油站空地和仓储区主入口之间的稳定观察位置上持续了几个小时。车内保持低噪音状态,空调压缩机的间歇运行声是唯一有规律存在的声音。陆维桢的视线期间反复落在百叶窗边缘那处暗色的外壳轮廓上,轮廓在下午不同的光照角度下呈现出细微的形态变化——从正面偏左的角度看它比偏右更宽,说明外壳本身具有一定的厚度,可能内部容纳了电池或信号中继模块。 六点过后,天色开始以可感知的速度变暗。仓储区的几盏高杆灯陆续亮起,但G区中段卷帘门正前方的区域没有被直接照亮,光源来自主通道沿线的灯杆,用余光从侧面勾勒出墙面和百叶窗的轮廓。陆维桢确认了覆盖强度的分布之后推开车门,沿着人行道边缘的绿化带切口走到了G区北侧的通道入口处,然后侧身进入仓库背面和围墙之间的夹道。 夹道地面铺着粗碎石的触感在他脚下均匀分布。他沿着夹道向G区中段方向移动,每一步都先探明落脚点再转移重心,石块之间的摩擦声被控制到了近处的极限范围。夹道两侧的墙面离他很近,仓库墙壁的灰色涂料表面在傍晚的光线下反射着深色的哑光,边界清晰。 他在夹道的一个储物托盘堆放点旁边停下,正好位于百叶窗位置向下偏移约两米处的斜对面。从这个角度,百叶窗内侧那台设备的外壳侧面轮廓在他的视野中形成了一道清晰的线条。设备的外壳约有手掌大小,厚度三厘米左右,外壳材料的颜色和百叶窗内侧金属框架的色调接近。外壳侧面伸出一条极细的天线,天线的走向贴着百叶窗内侧的叶片边缘向上延伸,末端藏在叶片的阴影中。 陆维桢从口袋里取出一台微型数字相机,镜头对准百叶窗内部进行了两次长曝光拍摄。拍摄完成后他蹲在托盘的阴影里检查了照片。设备外壳的底部有一串浅色的印字——不是激光蚀刻,而是采用了与外壳颜色不同的印刷工艺,在长曝光成像中显得比周围区域更深。照片放大后那串字的内容呈现为一组数字和字母的混合排列:“WEST-NODE-BK-03“。 BK-03。这个命名方式和暗潮系统的标准命名规则不同,没有使用ECHO-7系列的后缀,采用了更简短的编码格式。WEST-NODE前缀对应蓉城西侧区域,BK可能是“备份“或者“中转“的缩写,03表明它是该类别中的第三台设备。 他用相机又补拍了三张不同角度的照片,然后沿着夹道原路撤回。周承岳的车辆还停在加油站空地原位,天色更暗了,车内的轮廓在街道灯光的边缘显得更加收敛。陆维桢回到副驾驶座时,顾晏已经从后排往前探过身来,她接过相机查看了照片。 “WEST-NODE-BK-03。“她小声念了一遍那串字符,“命名体系和之前见过的设备不重叠,但前缀中的WEST-NODE和物流园存储卡上EXT_MY目录里的一个底层文件夹命名模式相似。那个文件夹没有被标注在目录树的表层,需要通过文件系统的底层结构才能看到。“ 陆维桢在脑海里回顾了一下物流园存储卡的目录结构。EXT_MY文件夹的下层确实存在一个没有被系统自动归类的底层文件夹,它的命名规则也是“位置缩写+功能缩写+数字“的格式。那台设备的命名规范和之前见过的暗潮设备都不完全一致,和西部系统传回的数据结构中的底层命名方式之间却存在相似性。 “可能是两套独立的标记体系。“陆维桢说,“ECHO-7系列是暗潮蓉城主链路的命名规范,但WEST-NODE-BK-03使用的是更早期或者不同区域部署的命名规则。如果两套体系都在蓉城范围内运行,说明暗潮在蓉城的部署可能是分阶段或者由不同的执行团队完成的——主链路先建,备用链路晚建,或者反过来。“ 顾晏把相机收回设备箱里。她的视线在夜色中落向G区仓库中段百叶窗的方向,那个位置在仓储区的暗影中几乎看不见了,只有百叶窗外框的一线金属反光在路灯偏角的照射下偶尔闪现。 “如果WEST-NODE-BK-03是早期部署的备用节点,“顾晏说,“那它的操作人员可能不是廖维或者围挡区电工那条线的人。使用独立命名规则的备用节点,也许会配备单独的维护人员或接触者。“ 陆维桢的目光越过挡风玻璃落在仓储区G区中段的方向,那扇百叶窗的轮廓已经在逐渐变浓的夜色中融入了仓库外墙的整体暗影。他在座位上向后靠了一下,视线在空中悬停片刻,然后低下来落在相机存储卡的位置。WEST-NODE-BK-03这个命名格式在他的脑中继续延伸,和物流园存储卡底层文件夹的命名样本进行了几组横向对比,相似的结构在不同的时间轴上浮动着,在夜色和车内的阴影之间维持着一道细长的连接线。 第37章 裂隙 夜色完全笼罩仓储区之后,高杆灯的照明在G区仓库和H区围墙之间形成了一片明暗交错的区域。陆维桢在车内重新打开相机的照片,把WEST-NODE-BK-03的外壳细节放大到可辨识的极限。外壳侧面的印刷字体在长曝光照片中显得边缘锐利,字符间距均匀,印刷工艺平整。他在放大的照片中注意到外壳下缘有一道极其细微的缝隙——比制造公差更大,像是外壳曾被打开过又合拢时没有完全对齐造成的偏移。 “这台设备被人打开过。“他说,“外壳底部的接缝线在照片中显示出一条大约零点几毫米的偏移,不是出厂装配会允许的公差范围。有人检修过它,或者更换过内部的存储卡。“ 顾晏接过相机仔细看了一遍那道偏移的缝隙。她的目光在那道线上停留了片刻,然后开口说:“如果它被打开过,内部可能有可插拔的存储介质,操作方式可能和物流园中继器类似。检修人员在约每隔七天的周期内打开外壳更换或取出存储卡,然后通过仓储区的其他渠道带走。“ 陆维桢在脑海中重新计算了CR-07的七天周期和WEST-NODE-BK-03设备外壳被打开过这两个事实之间的对应关系。CR-07的调度记录显示每七天有一次确认操作,而设备外壳被打开过至少一次。两个事实在时间频率上是吻合的。 “这台设备可能是CR-07条目的物理载体。“他说,“物流公司调度记录里的CR-07目的地不是存放或接收数据的位置,而是指代这台设备本身。操作员每七天来一次仓储区,打开设备外壳更换存储介质,把数据从设备内部取走。“他把相机从顾晏手中接回来重新收好,“设备的位置在G区中段百叶窗内侧,不在地面,操作员需要站在卷帘门前、用工具伸入百叶窗叶片之间的间隙来打开或者更换部件。地面上的金属碎屑分布带就是这个操作留下的。“ 周承岳一直没有离开驾驶座。他的视线在不同方向的车外后视镜和仓储区出入口之间均匀分配,保持着对周边环境的持续监控。听到陆维桢的结论之后他问了一句:“如果要确认CR-07的周期仍然有效,需要在下一次操作窗口观察到操作员到达现场的实际过程。根据物流公司调度记录,下一次确认时间在约六天后。“ “六天之内。“陆维桢说,“如果我们想掌握这条备用链路的操作方式和人员特征,最好的机会就是在六天后的操作窗口内观察操作员到达、完成设备操作、离开的全过程。如果在那之前提前接触设备,操作员会察觉到设备状态变化,从而导致这条线路被废弃。“ 他在心里校准了六天后的日期。这个时间窗口足够用来做几件事:确认WEST-NODE-BK-03是否在操作窗口期间保持待机状态,通过被动扫描收集设备在空闲时的信号特征,以及为远程监测建立基线。 “先装被动监测装置。“陆维桢说,“在夹道内找一个足够隐蔽的位置,装一套只接收不发送的微型信号记录器,在接下来的六天内捕捉设备周边的射频活动和人员接近噪声。设备本身不动,让操作员在六天后来的时候看到一切如常。“ 顾晏听完之后思索了片刻,没有立刻回应。她的视线落在陆维桢刚收起来的相机外壳上,稍后又移开,转向仓储区G区方向被高杆灯剪影勾勒出的仓库屋顶轮廓。“装被动监测装置需要二次进入夹道。今晚操作完成后,在六天周期内保持监测状态,操作员下次到来时我们的设备会记录下他的到达时间和操作时长。“ “今晚太晚。“周承岳说,“夹道的碎石地面上如果有人走过,天亮后会留下明显的脚印痕迹。操作员如果在六天内因为某种原因提前来检查设备,他会注意到地面上新的痕迹。最佳时间是明天早晨,仓储区车辆进出后地面被重新碾压一次,然后把监测装置装在夹道已有的车辆轨迹之外的位置。“ 陆维桢同意了这个时间安排。他在手机上设置了明天早晨的行动提醒,然后收好相机和记录设备。车辆在没有开灯的情况下沿北侧通道原路驶出仓储区范围,汇入主路后恢复了正常的夜间行车节奏。油站空地上的观察位置在车驶出后的后视镜里逐渐缩成一个小小的亮点,被路灯和远处交通信号灯的光覆盖。 返回龙科院的途中,陆维桢在手机备忘录里记下了六天后操作窗口的推算日期和预计时间窗口。他额外加了一行备注:“如操作员在操作窗口期内提前到达,监测装置应记录提前时长及其是否携带不同工具。“备忘录下方的空行处被他用光标占住,留出了一段尚未填入内容的间隙。 车辆驶过一段城市快速路的桥面时,桥下的铁路线从视野中掠过,一辆货运列车的车厢在路面下方平行行驶了一段时间,车厢顶部反射着桥面灯光,以和轿车接近的速度保持着短时间的并排。然后在某处分道口铁路线转向了另一方向,与快速路分离,车厢上的反射光逐渐变暗收窄汇入远方的夜色之中。 顾晏在后排看了一眼那道远去的列车轮廓。她收回视线时,目光在他的屏幕边缘停留了一下,但没有说话。手机屏幕的光照在他下颚和喉结处的轮廓上,随着车辆驶过路灯下方时明暗交替着。“六天后,操作员会带着新的存储卡来更换。“陆维桢关掉了手机屏幕,“那时候我们会知道他走哪条路过来、用什么工具打开外壳、以及换下来的旧卡被放在哪里带走。“ 周承岳在驾驶座上说了一句:“那这几天需要提前把仓储区周边的出入路径和监控范围摸清楚。操作员来的时候不一定走主入口,可能从北侧围墙或者排水沟进入。“ 车辆在夜色中驶过蓉城东部的桥面,桥下的铁路线已经完全消失在后方视野里了。车载导航上前往龙科院的路线图以浅绿色的线条向前延伸,远处逐渐能看到龙科院北区建筑群的轮廓,那些楼宇的顶部有一排排照明灯亮着。陆维桢坐在后排,手机备忘录上的备注列表在屏幕熄灭后仍然短暂地留在他视网膜上,六天后那个操作窗口的日期在时间的衬托下单独凸出来。 第38章 埋线 第二天清晨六点半,龙科院北区员工通道的铁门在薄雾中打开。陆维桢穿一件洗旧了的深蓝色工装外套,背一只扁平的工具包,沿着园区绿化带的边缘向停车场方向走去。顾晏提前十分钟已经在车旁边等着了,手里拎着一只灰色手提箱,箱体侧面没有标识。她没有说什么多余的话,拉开后排车门坐了进去,手提箱放在她和座位之间的空隙里。 车辆沿北向道路再次驶向仓储区时,晨间的城市交通刚刚开始进入早高峰的波段,但越往北走车流越稀疏。七点左右到达仓储区,夜间出港的一批货车已经离开了场地,装卸场地上残留的轮胎印和叉车痕迹形成了一层密集覆盖的地面纹理。陆维桢注意到G区中段卷帘门前的地面昨晚被夜间车辆碾压过多次,碎屑分布带的位置仍然可辨,但周围出现的新轮胎印覆盖了部分边缘区域。 周承岳把车停在了昨天相同的位置。陆维桢和顾晏从加油站空地北侧绕过仓储区的入口,从H区围墙和铁丝网之间的窄道进入G区背面夹道入口。夹道内的碎石地面昨晚没有被车辆经过,但夜间的露水在碎石表面留下了一层均匀湿润的颜色,从视觉上遮掩了部分表面特征。陆维桢沿着墙根方向移动,在昨天确定的观察位置停下来,从工具包里取出一只掌心大小的密封盒,盒体为深灰色,表面覆着一层和仓库外墙涂料相近的哑光涂层。盒体底部装有三组不同指向的微型传感器和一枚纽扣电池,侧面有一根可收纳的微型天线,展开后仅三厘米长。 “信号记录器,只接收不发射。“陆维桢把密封盒固定在紧挨夹道墙根的一个金属检修架背面,用三颗强力磁铁固定,“传感器的覆盖范围以设备为中心半径约十米,可以捕捉到百叶窗内侧设备的通信信号和人员靠近时的低频声响。“ 顾晏蹲在检修架侧面,用手持式小型频谱仪扫描了一遍记录器安装位置周边的背景噪声,确认没有干扰信号会堵塞记录器的接收通道。她合上频谱仪时目光扫过地面,在检修架底部的碎石缝隙之间停留了片刻——一小片干燥的碎土颜色和周围的湿润碎石不同,形状呈不规则的薄片状。 “昨晚有人来过。“顾晏用极低的声音说。她指着那片碎土的位置,“碎土表面的干燥程度和周边被露水浸湿的碎石不一致,说明它是在露水形成之后才落到地面的。时间可能在今天凌晨。“ 陆维桢蹲下来凑近那片碎土。它的边缘轮廓不像是从鞋底自然脱落的,更接近某种物体被放置或移动时蹭落的附作物。他用手套边缘轻轻拨了一下碎土的边缘,土片裂开,露出下面一层颜色更浅的粉末状物质——细度均匀,像是从某种纸质信封或者包装材料上刮下来的表面涂层,浅灰,边缘整齐,在同一处被夹道内的风集中堆积起来。 “有人站在这个位置停留过。“陆维桢说,声音压到比环境音还低,“而且停留的时候手里拿着某种纸面或者包装物,包装物的涂层在接触墙面或者地面时刮落了一些细微碎屑。“ 他把那片碎土连同底下的浅灰色粉末收入一只微型样品管中封存。样品管放入工具包内层后,他重新检查了记录器的固定状态和天线方向。检修架背面的位置在百叶窗侧向约三米处,距地面约半米,记录器被遮盖在金属架下方投射的阴影中,从仓库正前方走过来的人除非弯腰侧头看向检修架底部,否则不会看到这个密封盒的存在。 两人沿夹道原路撤回。返回车辆过程中顾晏把装在灰色手提箱里的备用记录器重新锁好,顺手把陆维桢手中的样品管接过去放进了手提箱侧袋。周承岳在车辆启动后开口问了一句,声音在晨间的车载安静中几乎没被空调风噪声盖住:“凌晨有人到过夹道?“ “来过。“陆维桢说,“停留时间和方式未知,但留下的碎土表面和露水的关系可以压缩判断范围:如果是在露水形成前来的,碎土本身也会被露水浸湿。它表面干燥,边缘利落,说明是在露水形成之后、我们到达之前这个时间段内来的。大约在今天凌晨四点到六点之间。“ 周承岳没有追问。车辆沿着去时的路线平稳驶回龙科院,车窗外的晨光已经从薄雾的灰白色逐渐转成明亮的淡金色。回到地下三层之后陆维桢在操作台前坐下,把样品管取出放在灯下观察。碎土底层的那层浅灰色粉末在聚光灯下呈现均匀的颗粒状结构,用手指隔着管壁轻压,感觉到颗粒之间的细密摩擦力,质地比土壤细腻,与书本纸张或档案袋封面的表面涂层的触感相似。 “载体是纸或纸质包装物。“陆维桢说,“凌晨有人带着纸质物品靠近了夹道内的检修架位置,停留了一段时间,纸品在移动中与墙面或地面接触,刮落了表层涂层碎屑。“ 顾晏把样品管在操作台上放好,转身走到工作站前开始处理从记录器安装前同步采集到的一组环境背景数据。她在键盘上操作了大约两分钟,然后停下,侧头看向陆维桢的方向:“记录器安装位置的射频背景基线已经存好了,按周期循环记录模式运行。如果操作员在下次窗口前有任何提前接近动作,记录器会先于现场人员到达获取声音和信号信息。“ 陆维桢在操作台前停了一会儿,样品管内部那层细密的粉末在灯光下呈现出微微泛着哑光的色调。他用自己的手机拍了一张样品管的微距照片作为记录,然后站起身走到白板前,在CR-07条目旁边写下了“G区中段→百叶窗内侧→WEST-NODE-BK-03“,在这行字下方又写了两行:“凌晨四至六时有人携带纸质物接近检修架位置“和“首次接近时间距下次操作窗口约五天半“。 他在最下面一行字的下方留了一段空白。这段空白里填着的可能不只是一个标记或者时间点,也可能是从样品管中提取的碎土分析结果——如果那层细密的灰白粉末来自于某种特定类型的档案或打印纸,它的来源范围会缩小到一个具体的办公区域。他在那段空白处暂时留空了,看着白板上的整幅图从左侧的蓉城节点延伸出去直到右侧的末端,所有的线条在灯光的照射下保持清晰,末端的交汇点处有一段尚未落笔的延伸。 第39章 纸迹 样品管在操作台灯光下继续放置了大约二十分钟后,陆维桢开始进行对碎土和浅灰色粉末的逐层物理分离。他用一把细镊子把较大的土粒从粉末中筛选出去,将剩余的粉末集中在一张白纸的中央区域,形成一小堆约半个指甲盖大小的样品堆。粉末在聚光下呈现出多角度的细小颗粒反射,有一些微粒的边缘带有轻微的弯曲弧度,像是曾贴合在某种弯曲表面后被剥离下来的涂层的边缘部分。 顾晏从工作站前站起来走到操作台侧面,弯腰看了一会儿样品堆的细节,然后从抽屉里取出一台小型放大摄影仪,把镜头对准了粉末堆。放大后的图像显示出了粉末颗粒的微观纹理——细密的交叉纤维排列,表面覆盖着一层均匀的涂层,涂层厚度极薄,在侧光照射下呈现出轻微的哑光反光。纤维的排列方向不完全均匀,纤维与纤维之间的间隙等宽,没有自然材料会出现的断裂或不规则交叠。 “不是自然纤维。“陆维桢把视线从放大图像上移开,“纤维排列的规律性太高,间隙均匀,断裂面整齐。是工业化制造的纸或者特种纸板,机械打浆后经过压光处理。表面涂层覆盖了纤维层整个外表面,涂层材料的成分偏无机质,像是某种用于电子元件或精密设备包装的防静电纸。“ 顾晏把放大图像的角度调整了一下,让侧光从另一个方向打在纤维断面上。截面处涂层的厚度约为纤维层的十分之一左右,均匀覆盖在表层纤维的上方,与基层纤维之间结合紧密,分层边缘清晰。“防静电纸常见于精密仪器和电子元件的包装运输,“她说,“它的颜色偏灰白,表面光滑,内部纤维密度高。一些军品或者航空零件的包装也会用这种纸。普通办公纸张的生产标准和防静电纸完全不同。“ “航空零件。“陆维桢把这几个字在脑海中重复了一遍。航空动力研究所的测试台面板、叶片测试参数记录、材料供应商数据接口——防静电纸在那些场合中的存在背景和样品管中粉末的物理特征之间存在重叠的线索:航空零件包装使用的防静电纸和样品管中提取到的粉末类型一致。 他把放大照片保存下来,然后把样品堆轻轻拢回样品管内,封好盖子放回操作台的指定位置。周承岳从大厅入口方向走进来,他走近之后看了一眼操作台上的样品管和放大仪的屏幕,在陆维桢旁边停了一下,然后开口说了一句:“分析结果出来了?“ “防静电纸,用于航空零件或精密设备包装。“陆维桢说,“凌晨带着这种纸品接近G区夹道检修架位置的人,手里的东西可能是航空动力研究所或者相关供应商之间的某种纸质文件或包装物。从粉末的刮落位置来看,那个人当时正在或者整理纸品,动作幅度不大,但停留时间足够长,使涂层碎屑在墙根处累积。“ 周承岳没有追问纸品来源的细节。他看了一眼自己手中加密手机的屏幕,上面是一条新消息,他看完之后抬头,视线从操作台上移动到陆维桢的方向:“仓储区管理处今天上午在做例行安全检查,G区中段附近没有异常发现,巡逻人员没有靠近百叶窗。“ “我们在夹道里装的记录器也不会被常规巡逻注意到。“陆维桢说,“它固定在一个检修架背面,从通道正面走过去的视野正好被金属架遮挡。除非有人蹲下来检查架底,否则不会发现它的存在。“ 他转身走回操作台前重新坐下,在备忘录里补充了关于防静电纸的分析结果。在记录的最后一行,他写下了一个待确认的问题:“防静电纸来源与廖维或其所在部门的办公物资申领记录是否存在交集。“他把这个问题单独标记为待查,然后翻到了备忘录中关于六天操作窗口的页面,此时距离操作窗口还有约五天。他在这段时间的倒数数字下方画了一条细横线,在横线末端停留了一下,然后合上了笔记本。 顾晏把样品管放入了储存柜的一个密封抽屉中。她在回身关上抽屉的时候,手指在抽屉把手上额外停留了一瞬,然后松开手退后了一步。她的动作幅度很小,但陆维桢注意到了那个停顿,侧过头看了她一眼。她没有回应那个目光,只是走回工作站前坐下,打开了一组新调取的仓储区平面图,开始标注G区中段周围约五十米范围内的所有设施点——排水井、通风管道口、消防栓位置、以及附近的弱电井。每一个点都被她以不同颜色的标记符在地图图层上做了分层处理。 陆维桢从操作台前站起来走向白板,他在白板左侧已有的蓉城节点全图旁边拉开了一片空白区域,用马克笔在空白区域的上方写了一行标题:“备用链路CR-07/WEST-NODE-BK-03——待补充信息“。他在标题下方的空间里留出了足够的空白行,用来记录操作员在窗口期内出现时的特征、路径方向、携带物品类型、操作持续时间,以及换下来的旧存储卡被带走的方式。 他在写到最后一行时笔尖在纸面上停顿了一下,然后继续写完了那行字,在末尾画了一个没有闭合的括号。白板上的新区域暂时只有标题和排列整齐的空白行,那些空行之间留出的间距现在还是空的,在灯光的照射下贴着白板的表面排成一行行整齐的等宽间距,像一排还没有填入任何内容的码位。 他退后半步放下了马克笔。他的视线从那些空行上移过,然后转过身来看了一眼大厅里的墙壁,沿着墙面排列的照明灯在浅色墙面上映出一排规则的光斑。走廊深处的电梯运行声从远到近传来,被门外的空间削弱成一道短促的金属摩擦音,在门缝的边缘短暂地维持了片刻的音量,然后被隔音材料吸收掉,剩下大厅里平稳的通风管道送风声持续覆盖着整个空间。 第40章 前窗 记录器安装后的第三天,陆维桢在凌晨五点二十分被加密通讯应用的提示音震醒。他从折叠床边缘直起身,操作台上的工作站屏幕已经亮起,上面弹出了一条来自仓储区记录器的自动回传提醒——设备在凌晨四点零七分捕捉到一段持续约四分钟的低频振动信号。信号特征和人员走动时的脚步声、操作工具时的接触声均不同,更接近某种持续性的机械运转音,频率恒定,振幅均匀,来源方向指向G区仓库内部。 他走到操作台前坐下,打开了记录器回传的完整音频波形文件。波形在中段有一段明显的高幅持续性振动,持续约四分钟,中间没有中断或波动。他切换到频率分析模式,那组振动的基频落在了室内通风设备运转的频段内——但G区仓库在夜间关闭了主通风系统,只有应急排气扇在低功率维持循环。应急排气扇的运转频率不会达到这个幅值。 “有人凌晨打开了G区仓库内部的通风系统。“顾晏从员工通道方向走进大厅,外套已经穿好,头发被晨间的风略微吹乱了边缘。她走到操作台前看着波形文件,在频谱图上标示出了基频和泛频的分布,“通风系统的主风机在夜间被启动过,运行了大约四分钟。通风管道可能连接着设备安装位置所在的那段墙体内部空间。“ “操作员不需要等到七天周期。“陆维桢把波形文件保存好,“他在周期之间还做过中间检查,在仓库内部操作了通风系统,可能在不需要打开百叶窗的情况下就能通过管道系统接触设备。百叶窗上的外壳只是一个外部接口,设备本身的主体可能延伸进了仓库内部的管道空间。“ 他站起身走到白板前,在G区仓库中段的平面图上画了一条短横线连接百叶窗和仓库内部通风管道系统的走向。“如果设备主体通过通风管道延伸到了仓库内部,那它在仓库内部可能还有一个操作端口。操作员可以在仓库内部完成存储卡的更换或者数据读取,不需要暴露在室外的卷帘门前。“ 顾晏跟着他走到白板旁边,在仓库平面图的内部区域画了一个方形框,标注在通风管道主线路与百叶窗位置之间的交汇点上。“这个交汇点如果存在,它所在的位置在仓库内部的机电夹层或者吊顶空间里。操作员进入仓库内部比在室外卷帘门前操作更容易隐蔽——他只要在非营业时段通过仓库的侧门进入,走到机电夹层下方,然后打开吊顶板进入操作位置。“ 陆维桢在脑中模拟了一遍这条路径。北区仓储区的仓库在非营业时段上锁,侧门可能装有普通挂锁或者电子门禁,但仓储区的管理强度低于敏感科研单位。如果操作员持有仓库的备用钥匙或者能复制门禁卡,进入仓库内部的时间窗口是充裕的。 他转身走向通讯终端,给周承岳发了一条简短的消息,询问G区仓库在最近一个月的维修报修记录和内部人员进出登记。周承岳在几分钟后回复了一份经过筛选的电子文档——记录显示G区仓库在过去一个月内有三次报修,报修内容均为“通风系统检修“,每次报修的时间都在上午,持续时间不超过两小时。 三次报修,时间分别分布在最近一个月的前中后三个时段。这些报修记录和仓储区常规的设施维护频率相似,但如果结合凌晨通风系统被启动过这个事实,报修记录的实际用途可能就是为在设备位置上进行操作提供合法的进出理由。 “操作员利用报修作为掩护进入仓库内部。“陆维桢说,“每一次报修对应一次在设备位置上的操作。最近一次报修在四天前——也就是CR-07记录中的上一次确认时间附近。下一次报修如果按同样的间隔出现,应该在三到四天之后,恰好和操作窗口吻合。“ 他把报修记录时间线标注在白板上,三条时间线平行排列。每个报修日的上午时段都被他用方框圈了出来,他分析方框之间的间隔之后注意到每次报修间隔的波动幅度——第一次和第二次之间间隔十二天,第二次和第三次之间间隔十天。间隔并不完全均匀。 “时间间隔在收窄。“顾晏说,“第一次到第二次间隔十二天,第二次到第三次间隔十天。如果这个收窄趋势继续,下一次报修可能会在八到九天之后,而不是七到八天。操作员可能正在缩短周期,可能是为了加快数据周转速度,也可能是响应了主控端的调度调整指令。“ 陆维桢在报修时间线上方加了一个箭头,标注着“周期变化“四个字。如果操作周期在主动缩短,那就意味着主控端在沿海专线中断后可能已经开始调整蓉城节点的运行策略了。备用链路本来用于应急,现在主链路断了,备用链路的运行频率可能被调高来补偿主链路的数据传输空缺。 “记录器下一步需要捕捉的不仅仅是人员接近信号。“陆维桢说,“它需要捕捉到仓库内部通风系统启动的声音特征,以及内部操作口打开时的机械摩擦音。如果下一次操作在仓库内部进行,百叶窗外侧的设备不会被动,我们装在外面的记录器可能只能捕捉到声音背景变化,而无法直接记录操作内容。“ 顾晏走回工作站前调出了记录器传感器的灵敏度设置界面,在低频声波接收通道上调整了一组增益参数,把对低频机械振动的感知阈值降低了约六个分贝,使记录器可以更敏感地捕捉到通风管道系统和建筑结构传导的微弱振动。“低频增益调整后,G区仓库内部的风机启动信号和操作口的金属开合声都可以被墙体和地面结构传导到记录器位置。虽然不能穿过墙体直接录音,但结构传导的振动信号足以标识操作的发生时间和时长。“ 陆维桢在报修记录和操作员夜间活动的时间线之间又连了一条虚线。三组报修记录和三组确认时间之间的对应关系已经足够清晰了,结合记录器捕获的凌晨通风系统启动信号,基本可以判定操作员在仓库内部的维护工作不是只在报修日的上午进行,在凌晨的非营业时段也有过进出。 他的视线在那条虚线上停留了一段时间,然后移到了白板最右侧的空白区域。那条虚线的走向如果继续延伸,会和G区仓库与仓储区北侧围墙之间的路径在空间上交叉一次。交叉点的位置在北侧围墙的某一段,附近有一片没有被仓库灯光覆盖的阴影区域,那片区域的地面硬度可能足以支持人员进出而不留下明显痕迹。 他把叉号标注位置用红笔在平面图的对应坐标上描了一个小圈。圈内的区域现在还没有详细的物理信息,但根据操作员多次进出G区仓库的规律,北侧围墙那段阴影区很可能有一个不经过主入口的进出通道。他放下笔,退后一步看着白板上新补上的那几道连线,地图上未标注的区域在圈出的范围内保持空白,等着被下一次发现的信息填充。 第41章 北墙 记录器回传数据的持续分析在下午时段产生了一个新的发现。顾晏在处理仓储区记录器的低频声波通道时,将凌晨四点零七分那组振动信号与前一天同时段的数据做了叠加对比,发现在振动信号出现之前约三分钟,低频通道曾经捕捉到一个极短的瞬态冲击信号,持续不到一秒,频率集中在金属与硬质材料接触的范围内。瞬态冲击之后,通风系统启动,中间间隔时间足够一个人从围墙位置走到仓库侧门。 陆维桢在下午两点左右对照着仓储区的卫星地图重新校准了北侧围墙阴影区域的范围。那段围墙的走向和G区仓库北墙之间确实存在一处位置偏移——围墙在此处向内凹进了一段,形成了一块大约两米深、四米宽的凹陷空间。凹陷空间的外侧被一排密集的灌木和一棵树冠较大的梧桐遮挡,从卫星图上看,那片区域被植被覆盖形成了一片暗斑。 “北墙凹陷处可能是进入点。“陆维桢在平面图上标出了凹陷区域的精确坐标,“围墙在凹陷处的高度可能降低过,或者有一段被替换成了较矮的铁栅栏。灌木丛和梧桐树冠提供了视觉遮蔽,操作员从围墙外进入凹陷处然后翻越或者穿过围墙,直接到达仓库北墙墙根。北墙墙根距离室内机电夹层的位置是整排仓库中最近的一段。“ 周承岳看了一眼时间,下午两点二十分。他没有多话,只是从座椅上站起来拿起了车钥匙。车辆在下午的阳光下沿着北向道路再次驶向仓储区,这一次没有停在加油站空地,而是沿着仓储区北侧外围的一条土路缓慢行驶到接近围墙凹陷处的位置。周承岳把车停在一处灌木丛与农田排水渠之间的遮挡位置,从这个角度透过梧桐树冠的间隙可以看到围墙凹陷处的外侧。 围墙的墙体在那段凹陷处的表面涂抹了与周边相同的浅灰色涂料,但在围墙顶部的金属栏杆段,有一段栏杆的漆面颜色比周边略浅——像是更换过,或者经过重新焊接,焊接处新刷的防锈漆未经足够长时间的风化氧化,颜色存在可察觉的差异。梧桐树的树冠顶端覆盖在凹陷处上方,在地面上投下一大片斑驳的阴影,墙根处的杂草长势高于围墙其他地段,有些草茎的倒伏方向呈一致的倾斜状,像是被人的衣物边缘反复拂过后的定向。 陆维桢坐在副驾驶座通过车窗观察了大约五分钟。围墙凹陷处的杂草茎叶被定向压弯的角度表明有人曾反复从同一个方向穿过草丛,压痕的深度和宽度与一个人的躯体通过时留下的痕迹接近。 “穿过次数不少。“他说,“杂草的倒伏方向一致,压痕已经形成了固定的通道,不是临时路径。操作员每次进出都走同一道路线,保持了相当长时间。围墙顶部的栏杆更换过,换了之后重新喷漆,时间不会太久。“ 周承岳发动车辆缓慢驶离,沿着土路绕了一圈从另一方向返回主路。途中经过北墙凹陷处外围时,陆维桢观察到围墙根部的泥土表面有一处被覆盖过的痕迹——一块尺寸与落叶堆一致的石板,表面落着干枯树叶,但石板和周围地面之间有一道极细的缝隙,缝隙边缘的土壤比周边更松散。 “石板盖住了什么东西。“他说。 回到龙科院之后,陆维桢在白板上把北墙凹陷处的位置和G区仓库中段的设备位置用一条直线连接起来。线路的走向穿过梧桐树冠和建筑北墙之间的空隙,绕过仓库外墙的转角延伸到百叶窗所在的墙段。如果操作员按照这条路线行进,从北墙外进入凹陷处到抵达仓库侧门入口需要大约两到三分钟。凌晨四点零七分之前约三分钟出现的瞬态冲击信号正好落在了这个时间窗口内。 “明天早晨再去一次。“陆维桢说,“在操作员可能出现的相同时间段,沿着他的路径走一遍,确认实际通过时间和路径上的关键节点。如果能在路径中段发现装设了同样型号的被动监测设备,就说明操作员自己也在监控这条路径的进出情况。“ 他把这条行动计划加在了备忘录的“下一项“条目中,紧跟在仓储区北墙凹陷处的发现之后。写完他停了一下,在条目的末尾补了一行备注:“如路径中段有监测设备,其型号和频段可能与物流园中继器系统不同,需准备相应的扫频工具。“ 顾晏从工作站前抬起头来。她在纸上记下了扫频工具和频段列表的交接时间,没有抬头看他。她的笔在纸上顿了一下,然后继续写完了那行字。记录器的回传系统会持续扫描并缓存来自仓储区北墙凹陷处的环境背景信号,数据日志按照每两小时的间隔打包回传,等待下一组波形数据进入记录器的存储区。他的目光在时间和路径节点之间来回移动,确认了这两者之间的对应关系。石板和灌木丛间的空隙在围墙根部的阴影里继续安静地保持着,等待着下一次被掀开的时刻。 第42章 循迹 凌晨三点五十分,车停在距北墙凹陷处约一百五十米的土路拐角。陆维桢从副驾驶座下来时,风从农田方向吹过来,带着湿泥和植物根茎的气味。他把一只小型扫频仪别在腰带上,没开任何照明,靠着前一天观察记下的参照物方向,穿过一片被露水打湿的短草坪,向梧桐树冠的暗影区接近。 他在距离围墙凹陷处约十米的位置放缓了步伐,改为每走两步停顿一下、确认周围的声音和光线分布再继续移动。凹陷处外围的灌木丛轮廓在无月光的夜间模糊成了一片深色的连续面,只有围墙顶端与天空交界处保留着一条微亮的边界线。他在那片连续面的边缘停下脚步,蹲在草丛中观察了大约两分钟,确认凹陷处的植被分布和石板覆盖的位置与他白天记忆中的细节一致。 围墙上方的栏杆浅色漆面在微弱的天光下隐约可辨,凹陷处内墙根的石板表面落着几片干枯梧桐叶。他走近后用手指沿着石板边缘摸了一圈,石板和地面之间的缝隙宽度可容纳工具探入,石板本身不厚,重量适中,可以被单手翻起。他掀开石板的一侧,下方露出的土壤表面比周围地面低了大约十厘米,形成了一个浅坑,坑底的土质被反复踩踏后压得非常密实,表面有几组鞋印叠加在一起。鞋印的纹路宽窄均匀,呈现出多次经过同一地点后形成的固定轨迹。 陆维桢没有翻动石板另一侧。他把石板放回原位,贴着凹陷处的内墙面向仓库方向移动。仓库北墙的墙面在近处呈现出灰色的抹灰纹理,有几处管道穿墙孔洞用密封胶填塞着,密封胶表面平整,无近期被重新开凿的痕迹。他沿着墙面到达了仓库侧门的位置——一扇涂成深灰色的铁门,门框和墙壁之间的密封条完整,门锁是一把普通的弹子锁。锁芯周围没有明显的撬动痕迹,操作员很可能持有钥匙。 他从侧门位置返回凹陷处,从原路退出了围墙范围。回到车辆旁边时扫频仪上没有记录到任何异常信号或触发,这附近没有额外的监测设备。 “路线通畅,没有加装监控。“陆维桢上车后把扫频仪摘下放在座椅上,“石板下的鞋印叠加层数很多,操作员使用频率高,每次经过都踩在同一个落点上。通过时间估算在三点五十分到四点十分之间的三分钟内。“ 周承岳没有熄火,引擎怠速声在安静的土路上形成一层持续的低频背景。他在黑暗中保持着观察姿态,两只手搭在方向盘上,目光落在梧桐树冠方向。陆维桢坐在旁边重新过了一遍路径上的细节。从围墙凹陷处到仓库侧门只需要经过一段约二十米的北墙墙根路径,没有遮挡物,但那段路径处在仓库墙体投下的阴影带里,从远处看几乎完全融入了墙体本身的暗色轮廓。 “他在路径上不需要额外遮蔽。“陆维桢说,“围墙凹陷处进入后,沿着墙根走到仓库侧门。墙根的阴影带覆盖整段路径,从任何方向观察都不会看到移动的人影。只需要注意脚下不要踩到碎石或者枯枝。“ 他停了一下。从墙根阴影带经过仓库侧门到机电夹层下方的位置之间,还有一段室内路径没有走过。如果操作员每次都在仓库内部通过通风系统的报修记录来接触设备主体,那么仓库侧门进入后他需要穿过一段堆放物资的过道区域才能到达机电夹层位置。这就有可能在过道区域留下其他的痕迹。 “需要知道仓库内部过道的布置方式。“陆维桢说,“侧门到机电夹层之间是否经过货架区、是否有监控摄像头覆盖、以及过道地面是什么材质。这些信息决定了操作员进入仓库内部的行动时间窗口宽度。明天调仓库内部的平面布局图,核对过道与机电夹层之间的路线。“ 他的目光从天窗上方变暗的树影轮廓上收回来,落回到车内的记录页上。从围墙凹陷处到仓库侧门的路径已经被扫过,没有发现额外的安全装置或人员活动痕迹。下一步是操作员进入仓库侧门之后的路线——那条路线位于仓库内部,和外部路径的物理条件完全不同。仓库侧门外的路径在路灯和树影之间保持着安静的状态,没有新的声音或震动传入周围的空气中。夜间的风从远处吹来,穿过梧桐树的树叶,在围墙的凹陷处上方形成了一圈微弱的声响循环。 第43章 内径 仓储区G区仓库的内部平面图在第二天上午通过规划部门的存档系统调取到了。图纸的电子版被加载到工作站的屏幕上时,仓库内部的柱距、通道宽度、机电夹层的通风管线和检修井位置以标准化的线条清晰地呈现在图层上。陆维桢站在屏幕前把图纸的分辨率调到最高,从侧门入口开始沿着墙体标注的走道方向一路移动到仓库中段区域。 图纸显示G区仓库内部的结构分为三个主要分区:南侧的货物存储区、中央的装卸区以及北侧的设备夹层区。侧门位于北墙东段,进入后经过一段约六米长的过道连接到设备夹层区的外侧走廊。走廊北侧排列着三间机电小室,分别对应通风系统、配电和弱电管线。机电小室的门在图纸上没有标注锁具类型,但在门框上有一个标注“检修通道“的标记,指向其中一间小室内部的管线走向与百叶窗位置所在的墙体之间存在的垂直连接。 “设备位置在通风机电小室内部。“陆维桢的手指沿着图纸上机电小室的轮廓画了一圈,“机电小室的墙体厚度标注为二十四厘米,通风管道从机电小室的顶部横向穿过,方向与百叶窗所在的墙体相交。WEST-NODE-BK-03的外壳固定在百叶窗内侧,但设备主体可能从机电小室内部通过管道延伸到外墙处。操作员在机电小室内部就能完成整台设备的维护和介质更换,不需要打开外墙的百叶窗。“ 顾晏从旁边移了一步,在图纸上标注了机电小室到侧门之间的净距和过道宽度。过道宽约两米,两侧墙面由混凝土构成,地面材质标注为环氧地坪,没有铺设地毯或吸音材料。这种硬质地面在人员走动时会产生清晰可辨的脚步声,脚步声会在过道的垂直墙面之间形成多次反射,在仓库夜间安静的环境中的可听距离会超过十米。 “操作员进入机电小室后,他的脚步声会被过道的反射效应传出到仓库内部。“顾晏说,“如果他是在无人时段操作,那脚步声本身不会引起注意。但如果仓库内有其他人员留守,声音可能暴露他的存在。“ 陆维桢把图纸的窗口缩小,在另一侧打开了仓储区的值班排班记录和夜间巡逻安排。巡逻安排在图纸上以时间轴形式排列,显示每天夜间九点后有一名值班人员在全园区范围流动巡检,巡逻路线的周期约九十分钟。G区仓库的北侧在巡逻路线上的曝光窗口每次持续约五分钟。操作员的进入时间如果落在两次巡逻之间的间隔内,他可以在仓库内部完成操作而不被人员经过。 “时间窗口匹配。“陆维桢在巡逻时间轴和操作员行动时间线之间画了一条平行对应线,“凌晨四点左右是夜间巡逻已经完成最后一遍、早班值守尚未到岗之间大约两小时的交接空档期。操作员利用这个窗口进出。仓库内部没有监控覆盖,过道的脚步声在夜间会被部分吸收或者被远处通风设备的低频噪音覆盖,进一步降低暴露概率。“ 他重新翻了一遍图纸上的机电小室细节,在通风管线与外墙交汇的位置找到了一个用虚线标注的检修面板——大约五十厘米见方,位于机电小室内侧的墙面上,面板周围标注了螺栓孔位和密封条型号。面板正对着通风管线的垂直转向节点,被打开后可以通过管道空间直接接触外墙百叶窗内侧的设备外壳位置。 “机电小室的检修面板是进入设备位置的关键点。“陆维桢在白板上画了一个简化的位置示意图,“操作员进入机电小室,打开检修面板,穿过一段通风管道空间到达外墙设备处,完成介质更换,然后原路退出。整个过程不需要接触仓库主存储区,也不需要打开外墙百叶窗。“ 白板上的示意图加上这个新节点后,从北墙凹陷处开始的完整操作路径终于闭合了:围墙凹陷处→沿墙根阴影带→仓库侧门→过道→机电小室→检修面板→通风管道空间→外墙设备位置。这条完整的内部路径与外部观察到的设备位置和操作时间节点之间存在严密的对应关系,没有任何步骤需要暴露在仓库主空间中。 周承岳在看完路径示意图后没有立刻发表意见。他的目光在白板和图纸之间来回比对了几次,然后开口问了一句:“机电小室的门如果从外部上锁,操作员的钥匙来源需要追溯。仓储区管理处的备用钥匙存放在哪个位置、由哪些人经手,需要确认是否有记录显示钥匙曾被外借或复制过。“ 陆维桢在笔记中添加了一条新的待办项。他重新打开图纸查看了机电小室的门锁类型标注——标注显示为普通弹子锁,而非电子门禁。弹子锁的钥匙容易被复制,且管理处对弹子锁钥匙的借出和回收记录通常较粗糙,可能存在管理空白。 “如果钥匙出处无法追溯,“陆维桢说,“那操作员可能持有未经登记的副本。这种情况下,内部路径的进入权限属于硬件漏洞,不依赖管理处的人员配合。操作员只需要获得一把钥匙样品就能自行复制。“ 他收起图纸的电子窗口,在仓库平面图的图纸图层上添加了一组标注:从围墙凹陷处到机电小室入口的完整路径被连成一条连续的线,在终点处用一个小方块表示检修面板的位置。这条线现在出现在地图图层的最上层,仓库实景的整个结构特征都在图层的堆叠中被完整覆盖了,机电小室内部的虚线检修面板被推到了最上层,位于所有标注线的末端,轮廓比周边的结构线更突出一些。所有线条的末端都汇集到同一个位置,在那片窄小的方形区域内收束成一条线。 第44章 夜勘 围墙凹陷处的碎石在靴底发出短暂的滚动声之后恢复了静止。陆维桢在石板侧面蹲下来,从工具袋里取出那枚改造过的扫频仪,重新调了一遍仓储区的信号背景曲线。凌晨的电磁环境比白天干净得多,市区和园区内部的设备信号已经进入了低活跃度的夜间模式,只有附近的基站和电子围栏系统在稳定运行。扫频仪屏幕上的波峰保持在静默状态的正常区间内,没有意外的新增信号出现。 他从工具袋里取出那枚便携式低频噪声记录仪,固定在石板内壁侧面与地面接缝的夹层中。记录仪的外壳轮廓在石板放回原位后完全被覆盖住,从外部看不到任何安装痕迹。固定完成后他沿着北墙墙根的阴影带向西段方向走了一遍,确认在路灯覆盖范围内的每一个位置都没有能直接看到墙根阴影带的观察点。 凌晨四点零二分,他站在距离仓库侧门约三米的位置进行了一次低光摄影。侧门的门框在长曝光下完整显示出了门缝的贴合状态和合页的安装方式——合页是普通外装式,可以用通用工具拆卸合页轴心后使整扇门在不破坏锁具的情况下被取下来。他在合页轴心顶端发现了一小片金属反光,像是经过了打磨,不是出厂时的毛坯表面。那几枚合页的轴心顶端在长曝光下呈现出不同的反光特征,其中一只的反光亮度略高于另外两只,表明那一只的顶部表面被打磨得更平整。可能是为了降低合页拆卸和重装时的摩擦力而做过的局部调整。 陆维桢把相机收起来,沿着墙根的阴影带原路退回围墙凹陷处。他掀开石板把记录仪的电池盒重新拧紧了一次,然后放下石板把表面的落叶散布均匀,退出了凹陷范围。 回到车辆内部的时间是凌晨四点二十一分。顾晏在副驾驶座的位置仍然保持着观察姿态,她手里的笔记本上画着侧门合页的简图和轴心反光的标注。她在陆维桢上车后把笔记本转向他的方向,用笔尖点了一下合页简图上那只反光较高的合页轴心的位置:“如果操作员定期拆卸侧门合页进出,那他的操作工具中可能包括一只专门用于快速拔装合页轴心的组合工具。通过现场测量合页的间隙尺寸,可以推断工具的类型和操作方式。“ 陆维桢把车门轻轻合拢。车辆在夜色中沿着土路缓慢驶离,田间道路表面碎石松动,但车速保持得很低,把轮胎滚动的声音控制在自然风噪的范围内。驶入主干道之后他看向窗外,蓉城北部的工业区正从灯光稀疏的夜间状态缓慢过渡到凌晨的备用照明模式。他低头在笔记本上写下了侧门合页型号和轴心打磨特征,在标注旁边加了几个关键词,合上了笔记本。 回到龙科院地下三层后他没有开主灯,只开了操作台上的局部照明。他在操作台前把凌晨拍到的侧门照片上传到工作站,放大了合页轴心顶端那一小片反光的区域。打磨痕迹的走向和深度在放大显示中呈现出连续、平直的纹路,是手持研磨工具进行过的细微调整。磨合面的宽度和合页轴心本身的直径之间存在一个紧凑的尺寸关系,其精度与标准加工工艺不符,表面处理方式属于后期改造。操作员对侧门的这组合页做过精细处理,使其可以在数秒内完成拆卸和重装,无噪音、无受力形变。 陆维桢在照片旁边添加了一行注释:“合页轴心顶端经过研磨处理,配合度精确。拆卸侧门可在不使用任何工具的情况下完成,耗时约三秒。“ 顾晏把侧门照片和合页轴心特写图同步备份到了仓储区的加密文件夹中。她在文件命名栏填入了时间和地点信息,然后在备注栏里补充了一句:下次进入窗口预测在约四天后,满月后三天,夜晚光线条件中等。她把笔记本电脑合上,显示屏的余光在桌面上停留了一会儿才完全熄灭。 陆维桢站在操作台和白板之间的位置,视线落在白板末端那处尚未闭合的空白处。合页的打磨痕迹指向一个精确的操作习惯——操作员为侧门做过改造,使进入过程更快、更安静、不留痕迹。这个做法和他之前多次经过墙根阴影带时都会刻意落在同一个踩点位置上的习惯是同一类行为特征:可重复、低成本、低风险。他把这个习惯性动作在白板的对应位置记了下来,然后站到工作站前,等待仓储区凌晨的巡逻记录被回传到系统里,供第二天分析。 第45章 标位 天亮之后,陆维桢把凌晨拍到的侧门合页照片和北墙凹陷处的石板结构整理成了一张标注图,标出了合页轴心的打磨方向、石板与地面之间的缝隙宽度、以及墙根阴影带在凌晨不同时段的光线衰减估算值。他在标注图的右下角注明了一个新的观察点:机电小室内部检修面板的安装方向与侧门轴线之间的偏角约为十五度,操作员在进入机电小室后需要用右手打开检修面板的螺栓。 顾晏站在白板侧面,在机电小室的平面图标注上补了右手开合的备注。 下午时段,周承岳从仓储区管理处调取了G区仓库机电小室的报修登记表。登记表显示在过去三个月内,机电小室的巡检记录共八次,其中四次标注了“通风系统检查“,三次标注为“电气线路检测“,一次空白。八次巡检均安排在上午十点到十一点之间,签字人同一姓名,职务为“设施维护员“。陆维桢核对了报修登记表上的签字时间和人员姓名,与凌晨记录到的侧门合页状况进行了对照,合页轴心的打磨痕迹与仓储区维修工具的磨损特征接近,但维护员本人配备的工具类型在备案中没有包括带精密研磨功能的电动工具。 “八次巡检中有四次标注'通风系统检查',时间集中在过去两个月内。“陆维桢把签字人姓名单独写在了白板角落的一个方框里,“他白天做合规报修登记,凌晨做实际的设备操作。白天的报修记录为他进入机电小室提供了合规理由,凌晨的操作才是真正的介质更换时段。“ 顾晏从工作站的电子档案中调取了那名维护员的入职信息和考勤记录。入职时间在六个月前,考勤记录显示他的排班多为白班,极少加班,深夜时段考勤机没有记录。他白天正常上班、正常打卡,在上午的巡检时段内进入G区仓库机电小室完成报修流程,然后回到办公室继续处理常规维护单据。但在没有考勤记录的凌晨时段,他沿着北墙路径进入仓库侧门,通过机电小室的检修面板完成数据介质的交换。 “他白天和凌晨的路径完全分开。“陆维桢说,“白天的报修路径经过主通道,会经过值班岗亭和园区监控视野,有合法记录可查。凌晨路径绕开了所有监控点,不留电子记录。两条路径在不同时段为他提供了进入同一目标位置的不同合法性掩护。“ 陆维桢把白板上操作员路径的草图重新梳理了一遍。两条路径在机电小室汇合,在白板上形成了一个V字形交汇。从机电小室出发,白天路径向北侧偏转,进入仓储区的主通道区域;凌晨路径向南侧偏转,经由侧门和墙根阴影带通向围墙凹陷处。他在V字形的下端画了一个实心圆点,标注为“检修面板“。 “如果他要进入检修面板的操作位置,白天和凌晨的路径在机电小室内部的落点是一致的。“陆维桢转身面向白板的方向说,“无论从哪条路径来,操作位置始终固定在检修面板前。那么检修面板本身的状态能否反映出他更换介质的具体频率和操作时长——面板内侧螺栓的锁紧力矩变化?“ 顾晏从工作站前抬起头来。“操作员多次打开检修面板,面板的固定螺栓会累积锁紧力矩的变化。每一次开启和重新拧紧都会在螺栓头和垫片接触面上留下对应的摩擦痕迹,累积次数可推算。如果能在不触发报警的前提下测量其中一枚螺栓的当前力矩值,再结合已知的最近一次操作时间,就能推算出操作员在这个检修面板上累计的打开次数。“ “明天凌晨。“陆维桢说,“在操作员下次窗口前确认面板螺栓的当前力矩值。之后等操作员完成下一次操作,再测一次,两次之间的差值就是本次操作中面板被打开所用的力矩变化量。如果差值保持不变,说明他的操作手法固定。“他的视线在白板上的V字形路线图上停留了一下,然后移向了工作站屏幕上G区仓库机电小室的内部结构图。 白板上用不同颜色的线条标注着不同路径,V字形的两条分支在机电小室的位置汇合成一个完整的回路。最下方的圆点画在V字形的末端,在圆点的周围,白板表面的光滑质地反着光,轮廓的边缘经过照明灯的斜射投在了墙面的浅色表面上。 第46章 测隙 凌晨三点十一分,陆维桢第二次穿过G区北墙根部的阴影带。这次的路线比前几次更精确,每一步都落在了之前踩实的那条轨迹上,鞋底与地面接触时几乎没有产生新的摩擦声。到达仓库侧门后,他没有直接处理门锁,而是用测隙规探入合页轴心与支撑座之间的缝隙,读取了间隙宽度。数据比上次的记录宽了大约零点一毫米,说明轴心经过又一次拆卸和重新安装后,间隙配合产生了积累性的微量松弛。 他从侧门侧面的维修通道绕到了仓库主外墙与设备夹层之间的狭窄空间里,打开了一只小型手持式力矩测量仪的电源。测量仪的探头能精确检测螺栓头与垫片之间的接触面摩擦力,通过多次测量同一枚螺栓的扭紧力矩变化来推算操作频率。他把探头对准了机电小室检修面板外露的螺栓头,抵住螺栓头顶端,让测量仪的传感器与螺栓头表面贴合了大约十秒后,读数稳定在了一个预设的范围内。他调整了探头的角度重新测量了一次,测量结果之间的差异在正常波动范围内,取均值后作为本次的基线记录。 他把测量仪收回工具袋,在原地站定了几秒,确认机电小室内部没有异常声响或光线变化后,沿着原路退出。经过北墙凹陷处时他检查了记录仪的外壳位置,石板表面的覆盖状态与前一天一致,没有新增的移动痕迹。到达车辆停放处的时间是凌晨三点四十分,比预计提前了约四分钟。 顾晏在车辆内部把力矩测量仪的记录数据导入工作站,生成了第一组基线数据。她用电子表格整理了螺栓的当前力矩值、侧门合页间隙宽度、以及检修面板螺栓的光学影像,将其标记为“初始状态参考点“。她在备注栏写下了本次测量的时间戳和环境温度。 车辆返程途中,陆维桢在副驾驶座把侧门合页间隙宽度的数据和之前记录的旧数值进行了对比,差值在零点一毫米左右。零点一毫米的松动,对于普通门体来说几乎可以忽略,但对于一扇被人在深夜反复拆卸过的门来说,它是累积使用的痕迹。操作员已经多次使用这种方法进入仓库内部,每次拆卸都微幅扩大了轴心和支撑座之间的接触间隙。 回到地下三层后他把力矩测量仪的数据线和计算机接口连接好,然后把原始数据转存到了仓库节点文件夹中,创建了一个新的子文件夹来保存力矩测量仪的全部记录。操作台的主屏幕上显示着一张实时更新的节点状态图,图上G区仓库机电小室对应的图标旁边新增了一个测量状态的标记符号,表明该位置的物理访问路径已经完成了初始数据采集。 光屏上的状态图标记随着他的视线移动而更新了对应的细节显示,机电小室的灰se区域内部,检修面板的螺栓位置标了一个微小的测量标记符号,侧门的合页处则用另一组不同的标记同时显示着时间轴信息。这些标记按照颜色和形状分层排列在屏幕上的示意图中,合页间隙测量结果和力矩测量数据被各自独立存储在对应的子文件夹内,在屏幕上对应的区域用同一组指标线连接着。 顾晏在做完数据同步后从工作站前站起来,走到操作台侧面把力矩测量仪的探头重新进行了零位校准,然后放回了工具袋的相应隔层里。她直起身时看了一眼屏幕,机电小室的灰se区域内部,那枚螺栓的测量标记符号与侧门合页的时间轴信息互相独立存在于同一屏幕区间内,两组数据之间保持着各自完整的显示区域。 第47章 叠痕 基线数据的分析在下午两点左右有了结果。陆维桢把力矩测量仪记录的螺栓数据与侧门合页间隙宽度的变化做了一次交叉对照,两组数据曲线在时间轴上的分布没有完全同步。合页间隙的扩张速率在最近两次测量之间保持均匀,没有出现突变;但力矩数据在相同的时段内出现了一次波动——操作员对检修面板螺栓施加的锁紧力矩比基准值低了大约百分之八。 他重新调出了报修登记表上的签字记录,把波动发生的时间段和八次巡检中的第七次进行了叠加。第七次巡检记录在报修登记表上标注为“电气线路检测“,签字日期在当天下午。如果操作员在凌晨完成了设备的实际介质更换,那么下午的报修巡检可能只是用于覆盖凌晨活动,让他自己在记录上出现在G区仓库这一区域——白天的记录和凌晨的实际操作在时间上是分离的。 顾晏把力矩波动曲线和报修时间线做成了同一张图层叠图,叠加图上的数据点依次与对应的报修记录排列在一起。第七次巡检之后的力矩值曲线出现了一个低点,然后在第八次巡检之前恢复到接近基准值的水平。恢复过程表明操作员在某个时间点重新调整了螺栓的锁紧度,可能是为了确保面板在下次操作前保持正常的密封性。 “他在修正自己的痕迹。“陆维桢说,“每次操作后隔一段时间他都会回来一次,把螺栓的锁紧力矩调回标准范围。这样即使有其他人定期检查机电小室的维护状态,看到的也是正常的紧固数值。“ 他在笔记本上单独记下了这个发现,在旁边加了一条时间线标注——操作员每次操作后约四十八小时回来一次做锁紧力矩修正。这条附加的时间线和CR-07的七天主周期不同,属于他个人的维护习惯。如果把这条时间线和主周期叠加在一起,暗潮在仓储区的节点运作就呈现出两层节奏:七天一次的数据介质更换,加上操作员每次更换后约两天回来做一次工具痕迹复位。 “下次操作窗口预计在约四天后。“陆维桢说,“如果要完整观察到他的操作流程,我们需要在他做完介质更换之后继续观察约四十八小时,看他是否按惯例回来做螺栓力矩修正。“ 他站到白板前,把这条新发现的时间线添加到了操作员的行为模式图中,用虚线标注在七天主周期下方。两条时间线在图中保持平行,操作员在完成介质更换后的第四十八小时左右会回来做一次快速调整,然后在主周期的下一轮开始前再次回到仓库位置完成新一轮介质更换。 周承岳在下午三点左右从外边回来,带来了一条来自沿海方向的消息。白色面包车截停后从车上缴获的那组数据存储卡已经完成了初步内容提取,其中一部分文件的元数据创建者字段指向了蓉城航空动力研究所的一个内部账号,账号名称对应一间名为“材料测试数据室“的办公终端,位于测试台所在楼层。那台终端在近期的工作日白天时段保持着规律的登录记录,所有登录者在系统内的操作日志都停留在正常的数据读取和归档范围内。 “测试台那台终端被用作了数据转存的前端。“陆维桢说,“廖维在测试台面板上安装分流接口后,数据通过光纤进入弱电系统,从那里有两个出口——一个去公交站台方向,另一个可能在终端所在的位置做本地存储,然后以正常的工作流程从终端外发数据,这样在系统日志中显示的是一个合规的操作记录。数据从测试台上产生后,已经被自动复制到了至少两个独立的目标出口上。“ 他重新打开物流园存储卡的目录树,在EXT_MY文件夹的下层目录中找到了一个与那台终端账号名称格式一致的文件索引标记。标记对应的是一个在终端本地生成的输出文件序列,文件创建时间戳和测试台的运行节拍完全同步,生成后的文件在几秒到几分钟内被转存到外部存储介质中。整个过程不需要任何人工干预。 “廖维的职责范围包括日常的数据维护工作。“陆维桢说,“他在白天通过合规的流程操作终端,把数据转存到正常的归档路径中。夜间和凌晨的物理介质更换则是另一条完全独立的渠道,通过公交站台设备和仓储区设备完成。他在同一天内同时运行着两条输出链路:一条合规,一条隐蔽。两条链路共享同一个数据源。“ 他把这个发现加在了白板上已经闭合的V字形路径图的顶部,在标题下新增了一行备注。两条链路共享同源意味着如果合规链路被截断或审计,廖维可以完全依托隐蔽链路继续运行。只要他的物理访问权限还在,数据就能持续流到仓储区的设备上,即使合规终端上的所有操作都被实时监控,也不会影响第二条链路的工作。 “所以截断合规链路只能挡住一半。“陆维桢在白板的空白处画了一个新的分支图,“只要物流园存储卡和仓储区设备还在运行,数据仍然可以绕开合规路径流向沿海方向。现在合规链路在面包车截停时已经断了,但隐蔽链路的部分仍然在运行。“ 陆维桢转身走向工作站,调出了仓储区记录器的实时状态界面。界面上显示记录器的存储区尚未被新的数据写入,说明自他安装记录器以来没有人靠近过G区仓库中段的设备位置。下次写入预测窗口在几天后。他的目光落在那条时间轴上等待写入的数据块标记上,标记的位置在时间轴末端偏左的位置,还没有被填入数据,在显示屏边缘保留着一段大约一个字符长度的空白区域。 他保持站姿看着那个空白区域,视线没有移开屏幕。操作台旁边的工作站电源指示灯持续亮着稳定绿色,环绕在屏幕边框四周的内框边缘形成一圈均匀的间歇性亮纹。 第48章 芯影 第四天凌晨的记录器数据回传中,出现了一段不属于常规通风系统运行的声音。波形显示在凌晨两点十七分,有一组持续约十二秒的低频振动传导到了记录器安装位置,频率和振幅与普通人员走动或开关门等动作不同,更接近某种金属结构受力后的弹性释放声。声音的频率以特定的节奏重复了两次,每次持续约六秒,两次之间的间隔时间在波形图上形成了一个间距均匀的双脉冲。 陆维桢把那段波形从记录器的存储区完整提取出来,用频域分析工具剥离了背景噪音后,两个脉冲的波形轮廓呈现出明确的对称性。对称中心的位置对应一个约零点五秒的静默间隔,像是同一件金属件被施加了两次方向相反的扭矩,第一次受力后弹性复位,第二次受力后锁定在另一个位置。 “他在测试检修面板的锁紧机构。“陆维桢对站在操作台侧面的顾晏说,“两次施加相反方向的扭矩,第一次可能是打开面板,第二次是关上并重新锁紧。中间零点五秒的静默间隔是他更换介质或者操作设备的时间窗口。“ 顾晏没有回答。她走到工作站前,把记录器原始数据的波形文件和自己预先存储的背景基线做了差异叠加。叠加后的波形图中,双脉冲信号从背景噪底中清晰地分离出来,两个脉冲的幅度几乎完全相等,结束后的波形回到基线水平。她标记了两脉冲末端的时间点,将它与操作员之前的行为模式时间线做了对比,发现凌晨两点十七分不在之前记录的任何行为窗口内。它在七天的主周期和四十八小时的力矩修正周期之间都没有匹配的位置,属于一组全新的时间节点。 陆维桢在操作台前坐下来,把记录器安装后的全部数据按时间顺序重新排列了一遍。他注意到在波形出现之前约半小时,记录器的低频通道曾经捕捉到一次微弱的瞬态冲击,位于检修面板所在墙体结构的方向。冲击出现的时刻距离双脉冲出现大约三十三分钟,当时周边的环境声音处在常规的夜间值班噪声水平内,瞬态冲击的幅度低到被通道的背景基线几乎完全包裹,滤去基线后只在波形的上沿凸出一段微弱的振幅尖峰。 他调出了冲击出现时段的仓储区外围交通流量记录——该时段内没有重型车辆经过附近道路,气压和风速也没有出现剧烈变化。墙体结构方向的瞬态冲击像是人为造成的,来自仓库内部或紧邻外墙的位置。瞬态冲击之后经过三十三分钟,双脉冲出现。如果两次事件属于同一序列,操作员可能在三十三分钟前进入了机电小室,然后利用这段时间等待或准备了某些条件,最后在检修面板前完成了两次扭矩操作。 “他今晚来过。“陆维桢说,“三十三分钟前他从某个入口进入了机电小室区域,然后经过大约半小时的准备或等待,在检修面板前完成了两次操作。操作结束后离开,双脉冲结束之后没有捕捉到返回的脚步声或开关门声。“ 他在记录器的时间轴上标记了这段序列的起始点和结束点,在白板的仓储区路径图上画了一条经过侧门和过道的短连线,连线的末端停在机电小室图标的位置,然后在图标旁边打了一个圆圈,表明本次操作发生在和上次不同的时段。 “他在测试新的操作时间窗口。“顾晏说,“提前进入仓库,在安静的凌晨时段做了一次确认或校准,然后才操作检修面板。双脉冲的时间窗口在凌晨两点十七分,比主操作窗口的常规时段提前了大约两小时。他在调整自己的进场时间,使周期规律更加分散,降低被预测的可能性。“ 陆维桢把这段新的操作时间记录添加到了CR-07的时间轴旁边。CR-07的主周期仍然在七天一次,但它的操作窗口出现了分化,可能对应不同的操作类型或者不同的数据取送方向。这种分化在单一操作模式下不常见,它意味着机电小室内部的设备可能支持不同的操作入口或不同的介质接口类型。 他把目光从波形图上移开,转向工作站的存储卡目录树。在物流园中继器的原始数据目录的底层,有一个之前没打开过的隐藏配置文件,以压缩包格式存储,文件名的后缀是一组压缩格式标记。他用系统内置的解压工具打开后,得到了一组以数字顺序排列的配置文件副本,文件名中出现了G区和机电小室的关键字组合。其中一份配置文件的命名规则和存储卡目录树中,WEST-NODE-BK-03设备的命名格式相似。两套命名规则属于相同的根目录,并在系统的同一层级文件夹下排列,由同一套文件系统的底层逻辑管理,共用同一组子目录参数。也就是说,WEST-NODE-BK-03设备本身属于物流园中继器所辖的节点体系,只是它的表面命名代码和主设备不同。 他在工作站的标签系统中把WEST-NODE-BK-03和物流园中继器之间的关联建立为同属一个节点群的从属关系。同属一个节点群意味着仓储区设备和物流园中继器之间的数据流可能通过软件层面的映射实现单向或双向的连接,而不需要外部的物理链路支持。 操作台侧面的顾晏把这段新关联在她的记录表上补充了一个标签。标签的内容和主目录的命名标记一致,附注栏写着从属于物流园中继器节点体系,但操作时间窗口与主节点不同,可能存在独立的调度指令系统。 陆维桢关闭了配置文件压缩包的窗口。屏幕上恢复了记录器实时数据的显示界面,界面上最新一段波形已经超过了双脉冲信号的结束位置,继续保持着背景噪音基线的常态运行。新的波形在一段时间内以固定的节奏持续输出,当前的持续输出状态尚未到达结束位置。