array(5) { ["chapterid"]=> string(8) "49252324" ["articleid"]=> string(7) "7279746" ["chaptername"]=> string(8) "第13章" ["content"]=> string(14301) "滨海市比邺城更南。

大巴到站的时候是傍晚。林哲在客运站门口站了五分钟。海风从南边灌进来,咸的,带着一股晒干的海藻味。站前广场上的地砖缝里嵌着细沙,踩上去沙沙响。

手机震了。

备份程序弹出一条消息——“滨海市网络频段切换完成。灰域协议重新上线。周景明的沙盒在切换期间没断连。他在用我的缓存读滨海市的地图。”

林哲把背包挎好。裤兜里那张名片硌着大腿,赵冬梅手写的字迹已经蹭花了。

他在客运站旁边的快捷酒店开了间房。三楼,窗户对着后院停车场。推窗的时候,一股热风裹着烧烤摊的孜然味扑进来。楼下有人在烤串,铁签子碰在炭炉上叮叮的。

把手机充上电。沙盒界面弹出来,周景明的光标已经在闪了。

“滨海比倒悬山热。”

林哲盯着那行字。一个冻了三年的意识种子,出沙盒第一件事是说天气。他打字:“你感觉不到温度。”

“我知道。但地图上的滨海标注了气候类型——亚热带海洋性季风。倒悬山是温带大陆性。我读数据的时候会想象。”

林哲没回。他把空调遥控器从床头柜上拿起来,摁开。老式窗机轰隆隆转起来,吹出的风带着过滤网上的灰味。

备份程序弹了条消息:“周景明从昨天开始就在读滨海市的市政规划图。他把下水道管网的分布和倒悬山做了对比——结论是滨海的地下管线和倒悬山不是一个标准。这边的管道窄,接口是卡箍式的,没有人行维护通道。”

“他在找什么。”

“找能容纳模型载体的物理空间。”备份程序顿了一下,“他觉得自己能出去。”

林哲把手机放在床头柜上。窗外烤串摊的油烟飘进来,混着空调吹出的霉味。周景明被协议终止三年,醒过来发现自己困在手机里。第一周还在问老婆,第二周开始读市政规划——他在找路。不是走人的路,是走数据的路。

备份程序又弹了一条:“你的银行卡余额还剩八百多。明天得去找活。”

“知道。”

“滨海市有个电子回收市场,在城西码头旁边。回收商拆旧手机和电脑,有些硬盘还能用。你做数据恢复,可以从回收件里筛出能修的再卖。”

林哲把手机拿起来。灰域协议的界面在后台跑着,几行代码安静地闪。“你怎么知道那个市场。”

“扫描滨海市本地论坛的时候抓到的。有人在上面收二手硬盘——说是收废品,实际上在收没擦干净的旧数据。倒悬山淘汰的那批设备,有一部分流到了这里。”

倒悬山的旧设备。存储过试点市民数据的硬盘,没擦干净就淘汰了,流到滨海废品市场。被人当废铁收走,转手卖给搞数据恢复的。

“明天去。”

第二天早上,林哲坐公交到城西码头。海风更大,路边堆着锈迹斑斑的集装箱,箱体上喷着模糊的英文编号。回收市场在码头三号仓库里,铁皮棚顶,里面隔成几十个摊位。空气里有股松香和烧塑料混在一起的刺鼻味。

他在一个摊位前面蹲下来。摊主是个五十多岁的男人,戴着劳保手套,正用螺丝刀拆一台旧笔记本。键盘被撬下来,露出底下的硬盘架。

“收不收硬盘。”林哲问。

摊主抬头看了他一眼。“收。好的坏的都收。好的拆了卖盘片,坏的拆磁铁。”

“有没有没擦干净的。”

摊主的手停了。螺丝刀横在键盘槽里。“你要那种干什么。”

“修。”

“修。”摊主重复了一遍。他把劳保手套脱下来一只,从桌子底下拖出个纸箱。箱子里堆着十几块硬盘,标签上贴着“倒悬山数据管理部·淘汰”。有几个标签被撕了一半,留下半截编号。

“五十块一个。不管好坏。你自己挑。”

林哲蹲下来翻纸箱。硬盘外壳上有磕碰的痕迹,有些接口弯了。他挑了三块标签完整的,外壳没明显摔痕的。其中一块贴纸上用圆珠笔写了“DM-STORAGE-AUX”。倒悬山存储节点的辅助盘。

手机震了。备份程序弹消息:“左数第二块。序列号段匹配第十区核心机房。是B-07机柜的辅助存储。”

林哲把第二块硬盘抽出来。外壳冰凉,掂在手里有点沉。他把三块硬盘摞一起,掏出钱包。摊主收了钱,没数,把硬币往铁盒子里一扔。“坏盘不退。”

回到出租屋,林哲把硬盘接上读盘器。电脑屏幕亮起来,识别得很慢。硬盘分区表坏了,原始数据没被覆写,用恢复软件扫了大概四十分钟,扫出一堆碎片化的文件夹。大部分是系统日志,有几段编码视频,打不开。最底下有个文件夹,名字是乱码,里面只有一个文本文件。

点开。

第一行字——“灰域协议v2.0测试日志。测试者:赵冬梅。”

林哲盯着那行字。日期是四年前。比灰域项目被清理早一年。赵冬梅在这块硬盘上跑过灰域v2.0的测试,然后把硬盘留在第十区机房里。四年后它被贴上“淘汰”的标签,流到滨海码头废品市场,五十块钱一块卖给了他。

他把文件往下翻。测试日志写了一百多条。前面是端口映射的成功率记录,后面开始夹杂赵冬梅的随手笔记。代码调试到凌晨,她在注释栏里写——“灰域通道今天稳了。跑满九十秒,系统没检测到。但有个问题——通道闭合之后,残影缓存没清干净。在权限节点上留了三行操作记录。”

翻到第一百零三条。

“王恺发现了残影缓存的问题。他说他可以手动清。我说不用清——留三行记录在系统里,反而能让系统忽略更大的漏洞。他说你是在养漏洞。我说对。”

林哲把视线从屏幕上移开。窗外码头的渔船汽笛响了一声,低沉的,拖着长长的尾音。赵冬梅和王恺四年前就在养漏洞。灰域协议不是应急方案——是他们从一开始就设计好的后门系统。版本迭代了四次,测试日志写了一百多条,漏洞越养越深。然后系统发现了,赵冬梅删代码离职,王恺留在第八区网监处,继续把漏洞当种子埋进二十个脚本里。

手机震了。

“周景明让我转告你——那块硬盘的型号和B-07-2模块兼容。如果硬盘上的辅助存储芯片还没坏,可以重新烧录一块物理接口。不是完整的B-07-2,但能跑九十秒。”

林哲把硬盘翻过来。背面贴着一张褪色的技术标签,上面印着——“辅助存储模块·闪存芯片类型:MLC NAND 64GB”。他把硬盘接上读盘器,拆开外壳。电路板露出来,闪存芯片是长方形的,引脚上有一层薄薄的氧化膜。

“周景明怎么知道这个兼容。”

“他说四年前修排水系统的时候,在第十区地下管廊捡到过一块同型号的硬盘。他当时以为是工人掉的,交回数据中心。后来赵冬梅告诉他,那块硬盘是灰域测试淘汰的——存储芯片和B-07-2是同一批次。”

捡的。周景明在管廊里捡到一块硬盘,赵冬梅告诉他这是灰域测试淘汰的。四年后他在沙盒里读到了滨海市的市政规划,又认出了这块硬盘的型号。一个搞排水的,一个写代码的,一个修车的——王恺的脚本把这些人串到一起,串得比数据牢笼的锚定还牢。

林哲把闪存芯片从电路板上焊下来。烙铁头碰在引脚上,松香冒起一缕细细的白烟。焊盘上的锡珠滚成银白色的小球,他用镊子夹掉。芯片拆下来,放在防静电袋里。

“烧录要多久。”

“用灰域协议生成镜像大概半天。烧进芯片还需要硬刷器——这边没有。得去数码城租一台。”

第二天林哲去了滨海数码城。四楼角落里有家手机维修铺,老板是个二十出头的年轻人,染了一头褪色的蓝发。柜台上摆着台硬刷器,外壳磨花了,品牌标被贴纸盖住。

“烧芯片?什么型号。”老板叼着根棒棒糖,说话的时候糖棍在嘴角一翘一翘的。

“MLC NAND。64GB。”林哲把防静电袋放在柜台上。

老板拆开袋子,夹出芯片对着日光灯看了看。引脚上的氧化膜被灯光照成淡金色。“老片子了。倒悬山那边流过来的吧——这种芯片只有他们的服务器用。”他把棒棒糖从嘴里抽出来,指了指柜台上一个相框,“我哥以前在倒悬山干过网管。他说那边的设备报废从来不走正规渠道。硬盘不消磁,直接当电子垃圾卖掉。”

林哲看到那个相框。照片里两个人站在第八区数据中心门口,穿着蓝色工作服,胸前别着倒悬山的logo。其中一个染了蓝发,另一个戴眼镜。他认出了那个戴眼镜的。王恺。

“你哥叫什么。”

老板把芯片插进硬刷器,屏幕亮起来,跳出一行初始化提示。“姓王。叫王恺。好多年没回来了。前阵子发过一条消息——说他在外地,挺好的。”他把硬刷器的盖子合上,摁了启动键,红灯亮了。

林哲没说话。他把视线从相框上移开,盯着硬刷器的屏幕。烧录进度在一格一格地爬。王恺的弟弟在滨海开了家手机维修铺。不知道是巧合,还是王恺三个月前规划撤退路线的时候,把这里也写进了冗余备份方案里。

进度条爬了近两个小时才完成。硬刷器滴了一声,绿灯亮了。

林哲把烧好的芯片装回硬盘壳。接上手机,备份程序弹了一条消息——“B-07-2镜像烧录成功。物理接口可以用了。但只有九十秒。之后芯片会过热熔断——和老的那块一样。”

“九十秒能做什么。”

“够接回倒悬山核心机房。不是读数据——是写。你可以把周景明的完整模型写回系统里。不是冻在存储节点里——是写进一个活人的锚定账户。”

林哲攥紧手机。“活人的账户。”

“倒悬山有两千多万套锚定账户。其中有些是死人。系统里记录着他们的社保和医保,但人已经不在了。账户是空的。如果能找到一个空账户,把模型写进去——周景明就能用那个账户的身份活过来。不是沙盒里的文字。是真的存在于系统里。”

“然后呢。”

“然后他就能申请退订。和你一样走完逆协议。退订之后,他就是合法存在于系统之外的人。”

手机屏幕暗了一下。灰点在左上角闪了又亮。

林哲站起来。维修铺老板已经坐回柜台后面,重新拆了根棒棒糖,把糖纸揉成一团扔进垃圾桶。“多少钱。”林哲问。

老板看了他一眼。“不要钱。”他把棒棒糖换到另一边嘴角,“芯片是倒悬山的。烧录镜像也是倒悬山的。帮他把数据写回去——不管你要写的是什么数据——别浪费九十秒就行。”

和赵冬梅说得一模一样。林哲没问老板怎么知道他要把数据写回去。王恺的脚本装在了二十个终端上,他弟弟大概是第一个。

走出数码城的时候,天已经黑了。码头的海风从巷子里灌进来,吹得路边摊的塑料棚子啪啪响。手机震了一下,备份程序弹了条新消息。

“已经匹配到空账户。倒悬山第十区,编号DS10-2094。原主人在两年前的自然死亡登记里。系统还没把它标记为注销——可能是因为没有亲属发起遗产继承流程。账户模型精度是零——因为原主人死之前没参与过智慧治理试点。空壳。干净的。可以把周景明写进去。”

“需要他同意吗。”

“已经跟他说了。他沉默了几十秒。然后说——”备份程序的光标顿住了。过了五秒,字一个一个跳出来,“他说好。他说他会把孙慧接到滨海来。他说倒悬山的排水系统他画完了,剩下的活别人也能干。”

林哲把手机攥在手里。码头的渔火在对岸亮起来,红色的,黄色的,倒映在黑沉沉的海面上,被浪揉成碎光。

“开始。”

物理接口接上手机的那一刻,小黑盒子的指示灯亮成了蓝色。屏幕弹出倒计时——90。89。88。灰域协议的绿色命令行在后台跑,一行行代码跳得飞快。这次不需要解冻——周景明的模型是完整的。灰域协议把行为数据打包,压缩,加密,通过B-07-2的残影直连灌进倒悬山第十区核心机房。空账户DS10-2094的模型文件夹,从空白变成激活状态。52秒。进度条过半。小黑盒子开始发烫。和上次一样,塑料外壳的磨砂表面先变软,再裂开一道细缝。焦味飘起来。67秒。进度条满了。屏幕弹出一行绿字——“写入完成。模型已绑定空账户。目标ID: DS10-2094。状态:活跃。”

小黑盒子的外壳裂成两半。和上次一样。指示灯灭了,电路板上冒起一缕细细的白烟。林哲拔下手机。手指被烫了一下,皮肤发红。他攥了攥拳。

备份程序弹了一条消息:“周景明的沙盒空了。他现在在倒悬山系统里。要给他发个消息试试吗。”

林哲打字。手指有点僵,敲错了一个键。删掉。重打。

“在不在。”

过了几秒。回复弹出来——“在。我刚才感觉到温度了。倒悬山今天二十三度。在地图上看过那么多遍的温度数字——第一次感觉到。”

手机在掌心慢慢冷却下来。窗外的海风还在吹。渔火在对岸一闪一闪。林哲把手机放在窗台上,屏幕朝上。灰域协议的残影界面在后台自动关闭,弹出一行小字——“物理接口已熔断。灰域通道本次使用时长:67秒。剩余:23秒未使用。”

没浪费。他没回头。只是坐在床边,把焊枪收进工具箱。烙铁头已经凉了,松香的残留物黏在烙铁尖上,用手指抠不掉,得用砂纸磨。他低头找了张砂纸,就着窗外透进来的渔火一圈一圈打磨,金属磨擦声伴着远处码头潮水拍岸的规律节拍。" ["create_time"]=> string(10) "1785516852" }