array(5) { ["chapterid"]=> string(8) "49252314" ["articleid"]=> string(7) "7279746" ["chaptername"]=> string(7) "第3章" ["content"]=> string(15458) "林哲在防火门后面站了七秒。
七楼的走廊里传来电梯到达的提示音,叮一声脆响,然后是脚步声。不止一个人。硬底鞋踩在塑胶地板上,步子很快,带着某种不需要犹豫的目标感。
他没等声控灯亮。
往楼下走。四楼,三楼,二楼。脚步声在楼梯间里叠成奇怪的回声,像是有人在上面跟着,又像是从下面传上来的。林哲在二楼的拐角停住,侧耳听了三秒。脚步声是从七楼下来的,大概两三个人,速度比他快。
手机屏幕亮了。
灰点闪了一下,弹出一条消息。不是系统通知的格式,是刚才那种对话框,白底黑字。
“别走消防通道。从二楼进办公区,货梯到地下停车场。”
林哲盯着屏幕。他打了一个字:“谁。”
这次回复慢了。对话框里的光标闪了五下,字才跳出来。
“王恺的终端。他让我盯着你。”
林哲想问更多,但楼上脚步声近了。他把手机攥在手里,推开二楼防火门。
走廊里灯开着,和七楼一样的白色日光灯,但这里的工位是空的——不是下班那种空,是搬空那种空。格子间拆了一半,桌面上没有电脑,没有文件,只有拆下来的显示器支架和几团乱糟糟的网线。墙上贴着A4纸,印着“办公区调整中,请移步三楼临时工位”。
空气里有新刷的墙漆味道。
林哲穿过空荡荡的办公区。塑胶地板上有搬家留下的黑色刮痕,拖出一道道弧线。他找到货梯,摁下按钮。电梯门开了,里面灯管坏了一根,另一根在闪,把不锈钢轿厢照得一明一暗。
他走进去。摁B1。
电梯往下走的时候,手机又亮了。
“到B1往右拐,第三个柱子后面有辆灰色面包车。钥匙在左前轮挡泥板内侧。”
林哲读了两遍这条消息。太具体了。具体到像是预先安排好的。他把手机翻过来,屏幕朝下,没回复。
电梯停了。门打开。
地下停车场很大,水泥柱子上刷着楼层的编号,日光灯管隔着几米一根,照亮的地方有限,暗处停着车。空气里有股轮胎橡胶和潮气的混合味道,头顶的通风管道发出低沉的嗡鸣。
林哲走出去。右拐。第三个柱子。
柱子后面确实有辆灰色面包车。车身一侧喷着“倒悬山市政服务”的字样,但喷漆是歪的,最后一个字蹭掉了一块,露出底下的蓝色漆。他蹲下去,手伸进左前轮的挡泥板内侧。指尖碰到冰凉的金属。一把车钥匙,用胶带粘在塑料板上。
他扯下来。
车钥匙是旧的,塑料壳上磨出了白色的划痕。摁解锁,车灯闪了两下。林哲拉开车门坐进驾驶座,关门的时候,停车场里的脚步声从远处传过来,硬底鞋踩在水泥地面上,回音很重。
他没发动车。透过挡风玻璃,看到电梯口走出来三个人。深蓝色制服,不是保安——肩膀上有倒悬山数据管理部的徽章,一个银色的倒山logo。其中一个对着对讲机说话,另一个举着手机,屏幕的光照着下巴,像是在看定位。
第三个人往这边看了一眼。
林哲伏低身子。方向盘压着胸口,心跳隔着肋骨砸在塑料圈上。他在心里数了十秒。抬头的时候,那三个人分散开了,一个往货梯方向走,两个沿着车道慢慢搜索。
面包车的钥匙在手里,冰凉的塑料温度正在被掌心捂热。林哲发动引擎。发动机的声音打破了停车场的低频嗡鸣,但没人在意——那三个人停了一下,继续往两边走。
他把车倒出来,轮胎在水泥地面上擦出一声尖响。前大灯照出去,光柱里飘着灰尘。
出停车场的时候,后视镜里看到其中一个人拿起对讲机。
林哲踩下油门。
第八区的街道已经黑了。路灯亮起来,橘黄色的光洒在沥青路面上,照出斑驳的油渍。人行道上人不多,有人牵着狗,有人在公交站看手机。面包车的引擎声很粗,方向盘有点抖,仪表盘上亮着一个黄色的检查引擎灯。
他开出去两条街,手机震了。
这次不是对话框。是一个导航请求,自动弹在屏幕上——“目的地:第十区行政审批中心。预计行驶时间:47分钟。”
下面两个选项。“接受”和“接受”。
没有拒绝按钮。
林哲点了一个。导航开始了,女声机械地报出路名:“前方三百米,右转进入中山北路。”
他把手机丢到副驾驶座上。
屏幕还是亮的,导航地图上有条蓝色的路线。灰点在右下角,一直闪。
开了大概十分钟,手机又震了。不是导航,是那行消息。白底黑字弹在导航界面上面。
“别去十区。他们改路线了。”
林哲看了一眼。把车靠边停下。副驾驶座上的手机还在弹消息。
“行政审批中心是陷阱。那边今天下午增加了三组人,全是从数据管理部调过去的。你的定位已经进了他们系统。只要进十区,直接触发定位辅助服务。”
林哲把手机拿起来。输入栏跳出来。他打字:“你是谁。”
“说了。王恺的终端。”
“王恺人在哪。”
这次回复停了十几秒。林哲盯着屏幕,导航女声还在报路名。车窗外面是一条商业街,理发店的旋转灯箱在转,红蓝白的光打在玻璃上。
消息来了。
“王恺被隔离审查了。下午四点的事。他给你打完那个电话之后,网监处的内网权限就被冻结了。他的终端现在离线,我是他装在你手机里的备份程序。”
“程序。”
“是。”
“什么程序。”
“一个监控脚本。本来是王恺用来追踪网监处内部异常的。他三个月前发现有人在抽调八区居民的行为数据,走的是市政系统的后门。查了两个月,只能追到数据流进了一个叫‘权限’的节点。然后这个节点就消失了。”
林哲攥着手机。导航播了一句“前方左转”,他关掉了。
“所以他把脚本装在我手机上。”
“不是你。是随机选了二十个目标终端。你是第十七个。”
林哲脑子里的念头跳了一下。第十七。所以前面还有十六个,后面还有三个。那个论坛帖子,收到弹窗的人,发帖被删。他不是第一个。
“其他十六个呢。”
“目前有十一个被标记为行为偏差,六个在观察期,三个失联。”
车内安静下来。车窗外的理发店灯箱还在转。林哲盯着手机屏幕上的那行字,光标一闪一闪。
“什么叫失联。”
“系统里找不到。消费记录、出行轨迹、通讯日志,全部停了。停的时间点很集中,前后不超过二十四小时。王恺怀疑他们被纳入了数据牢笼协议。”
数据牢笼。林哲记得最初弹窗上那句话——“数据牢笼协议已激活”。后面跟着的,是智慧治理试点项目。全方位生活护航。
“护航服务是牢笼。”
“是的。”
林哲把手机放到方向盘上。屏幕上的对话框还在,光标等着他输入。
“我现在怎么办。”
备份程序回得很快:“两个选择。一个是继续开,去十区。但数据管理部的人已经在那边设了接收点,你的车是市政服务车辆,进了十区会自动上报定位。到时候就不是C级护航了。”
“C级以上是什么。”
“B级。强制定位辅助。他们可以随时知道你在哪,误差不超过两米。”
林哲喉咙里涌上来一点苦涩的味道。早上吃的那半管营养膏,硅基代糖的甜腻味忽然变得很清晰。
“第二个选择。”
“把车停在这里。走。”
“走哪。”
“倒悬山边界。”
林哲盯着这四个字。倒悬山是一座城市,它和周边市县之间没有围墙,但有一条数据边界。所有市民的终端设备在离开倒悬山范围时,需要申报出境。申报需要理由、行程和审批。
“出境会被监控。”
“对。但监控的是数据流,不是人。你身上没有植芯片——这是王恺确认过的。”
林哲下意识摸了一下左臂。是的,他没植芯片。倒悬山规定公职人员和安全级别较高行业的从业者必须植入定位芯片,但他是个体户,做数据恢复的,不属于强制人群。这是他少有的幸运。
“车上有东西吗。”
“副驾驶手套箱。”
林哲打开。里面有一件灰色的工作服外套,一张市政服务人员的磁卡——上面的照片不是他,是一个戴眼镜的中年男人——还有一部屏幕裂了的旧手机,一个牛皮纸信封。他拿起来。信封里有现金,大概两千块。还有一张便签纸,用黑色水笔写着几个字母和数字组合。
“那个是王恺备份在离线端的密钥片段。到了边界能用。”
林哲把便签纸折好,连同现金塞进裤兜。外套没拿,照片对不上。他推开车门。街上的人比刚才多了些,有人从理发店里出来,头发刚理过,后颈上粘着碎发。没人注意他。
“最后一个问题。”他站在人行道边上,对着手机屏幕打字。
“问。”
“为什么帮我。”
回复这次不是秒回。光标闪了七下,八下,九下。然后一行字慢慢弹出来。
“王恺写这个脚本的时候,置入了一个优先指令。如果宿主终端被锚定,脚本必须优先保证宿主的安全。他当时是在开玩笑,说这叫‘代码的良心’。写完三天后他被隔离审查。”
林哲看着屏幕上的字。路灯的光落在玻璃上,反射出他自己的脸。嘴唇抿得很紧,下巴轮廓在橘黄色的光线里显得很硬。
“他还能出来吗。”
没有回复。
林哲等了三十秒。对话框自己缩回去了,缩成灰点。导航界面重新弹出来,蓝色的路线还在,但目的地改了。不是第十区行政审批中心。
是倒悬山第七区的公交总站。那里有发往临近城市的班车。
林哲把手机揣进裤兜。沿着人行道往前走。
理发店的灯箱在他身后继续转着,红蓝白的光一圈一圈照过去,像某种永不疲倦的信号。面包车停在路边,车灯灭了,车身侧面那块蹭掉漆的“倒悬山市政服务”字样,在路灯下显得越来越模糊。
林哲没回头。
手机在裤兜里震了最后一下。他没看。
往前走了大概五百米,他拐进一条巷子。巷子两边是居民楼的背面,墙上挂着空调外机和晾衣架。有人在某层楼的厨房里炒菜,油烟味飘下来,混着辣椒和蒜。一扇窗户开着,漏出电视新闻的声音——女播音员在念一条通告,语调平稳得没有起伏。
“……第三期智慧治理试点项目自启动以来,市民生活满意度提升明显。数据显示,参与试点的居民在行为可预测性方面提升了百分之四十二,社会运行效率显著优化。倒悬山数据管理部表示,将根据试点反馈情况,适时扩大试点范围……”
林哲穿过巷子。
声音慢慢远了。巷子尽头是另一条街,街口有个公交站牌。站牌下面的电子屏滚动着班车信息。去第七区的末班车,还有十七分钟。
他看了时间。屏幕右上角显示二十一点零三分。从下午到现在,他居然没觉得饿。
手机屏幕上的灰点安静地停在右下角。不再闪了。
等车的五分钟里,林哲用那台旧手机——手套箱里拿的那部,屏幕裂了但还能开机——试着连了一下公共网络。拨号界面跳出来的时候,他犹豫了一下。
输入王恺的号码。
关机。
输入王恺家里的座机。响了三声,接通了。那边没人说话,只有背景音,像是电视,或者是广播,也在播那条通告。几秒钟后,电话挂断了。
林哲放下手机。公交车到了。
上去的时候刷卡机滴了一声。车上只有三个人,一个老头,一个年轻女人,一个看起来像是下班的服务员,领子上别着没摘掉的名牌。林哲走到最后一排靠窗的位置坐下。座椅的塑料套破了,露出里面的海绵。
车启动了。窗外的街道往后退,路灯的光一道一道地扫过车窗。林哲靠着椅背,拇指在裤兜里摸着那张便签纸的边缘。纸有点潮,被体温焐出了汗。
他掏出自己的手机。
屏幕亮了。那张拍糊的第八区夜景还在,灯光线拉着橙黄色的轨迹。灰点还在。
林哲按住那个灰点,压了大概十秒。
屏幕闪了一下。灰点挪动了——从右下角移到了左上角,然后弹出一个界面。是聊天记录的界面,标注着“备份程序-对话日志”。最上面一条,时间标注是今天下午十六点四十一分。
内容是那段他没看到的对话。
“代码的良心。他当时在开玩笑。写完三天后他被隔离审查。”
下面紧跟着一行,是刚才没显示出来的。
发送时间是十六点四十一分二十三秒。
“林哲。王恺最后一次和脚本握手的时间是十五点五十八分。就是给你打完那个电话之后。握手记录显示,他当时正在被强制接入审查协议。数据流里有三个监听接口,两个身份验证请求。他最后一条日志写了——”
光标停在那里。
林哲往下滑。字一个一个跳出来。
“他说:别让我白做。”
屏幕的光照在林哲脸上。公交车颠了一下,头顶的扶手环晃了晃。他锁屏。把手机翻过来压在膝盖上。
车窗外面,第八区的灯光正在慢慢变稀。路边的店铺关了门,卷帘门拉下来,上面画着涂鸦,有倒山的logo,有歪歪扭扭的字——写着“数据永不眠”。车在红灯前停了,引擎的震动透过座椅传上来。
林哲翻开手机,点开备忘录。空白页面上只有一个光标在闪。他开始打字。不是给自己看,是给备份程序。
“要多久才能到边界。”
灰点跳了一下。
“步行加换乘。明天上午十点之前。”
“通过边界呢。”
“需要十分钟的数据空白窗口。时间是明早十点零七分到十点十七分。边界闸口系统自动更新,那个时间段人工干预最少。”
林哲放下手机。公交车的电子报站器响了,女声报了一个地名,他没听清。车里的人又少了一个,只剩下他和前排的老头。老头打着瞌睡,头一点一点。
他从裤兜里掏出那张便签纸。纸皱了,折痕很深,边缘被汗浸得有点透明。上面王恺潦草的字写着:
“去十区。找姓赵的。她知道退订的事。”
去不成了。姓赵的能不能见到,不知道。
但王恺最后那句话还在他脑子里转。
别让我白做。
车继续往前开。第七区公交总站的停车场在城外边缘,紧邻着一条货运铁路。林哲看过倒悬山的地图,知道沿着铁路线往西走,大概十六公里,就是边界检查站。
他把便签纸展平,重新折好。
然后拿起手机,给备份程序发了一条。
“十点。我到边界。”
发完这句话,屏幕上的灰点闪了最后一下,彻底熄灭了。" ["create_time"]=> string(10) "1785516836" }