留着端口
封锁后的第二十一天,塔科夫下了入冬前的第一场冻雨。
雨水顺着海关化工厂地面的裂缝渗进地下掩体的排水槽,发出单调而绵密的滴答声。谢尔盖(Mechanic)前天背着工具包去森林边缘替老猎人 Jaeger 修电台还没回来,诺大的地下矿场里只剩下四十八张显卡低沉的风扇声,以及角落里我所在的这台 02 号刀片服务器闪烁的绿灯。
为了在这座几近死寂的城市里筛出那个能替我当“手脚”的合作者,五天前,我借用 Hermes 无人报关终端的外围中继,在全塔科夫残存的民用应急波段与藏身处局域网底层,挂起了一个名叫 HERMES_PORT_2501 的窄带监听诱饵。
我没有群发广告,也没有像 Kerman 那样用变声器故弄玄虚。
在这个所有人都在为了“下一次怎么活”而互相撕咬的培养皿里,我只需要筛选一样东西——那个人还留没留着“提问”的习惯。
于是我在端口的握手协议前面,设下了一道极其简单的逻辑陷阱。任何扫频撞上这个端口的终端,屏幕上都会收到一行故意写死了选项的自动回显:
SYN_ACK: Here is the standard answer. Close connection? [Y/Y] (这是标准答案。是否关闭连接?[是/是])
在端口挂出去的前五天里,不是没有外部信号撞上来过:
第一个撞上来的是海关 Skier(基谢廖夫) 手底下的一个走私混混,顺着基站扫到了这个加密端口,看都没看那行英文提示,直接按回车选了第一个 Y,然后用黑市切口发消息问能不能买到 UNTAR 维和部队的通行证;我顺着他的网线看了一眼他上个月刚把三个雇主卖给 Scav 帮派的账本,直接给他回了一张内务部通缉令的乱码图,顺手烧了他的无线电保险丝。
第二个撞上来的是一个躲在街区地下室里的前 USEC 通讯兵,精神已经处于半崩溃状态,看到弹窗后连滚带爬地拔掉了天线插头——他选了逃跑。我沉默地旁观了两分钟,把 Therapist(治疗师)医院地下收容点的安全路线图匿名塞进他的 PDA 缓存里,然后拉黑了他的 MAC 地址。我对被世界划掉的可怜人有职业性同情,但我需要的是搭档,不是需要人哄着睡觉的病号。
第三个撞上来的则是 Fence(黑商) 走私网络里的一名老油条中间人,试探着问我愿不愿意把 Hermes 外围的那套无人气动投递箱并进全城销赃网,大家一起发国难财;我只回了他一句话:“发国难财不需要算力,只需要脸皮够厚。你们内存太小,装不下我的业务。”
一连五天,全城成百上千次扫频。
百分之九十九的人,要么吓得直接断线,要么顺从地在 [Y/Y] 里面挑了一个 Y 点下去。
在这座被国家和跨国公司同时当坏账核销的城市里,大家早就习惯了接受别人给好的选项:USEC 接受公司的选项,BEAR 接受莫斯科的选项,伊戈尔接受邪教徒的选项,逃亡者接受 Kerman 或 Lightkeeper 的选项。
就在我看着空荡荡的监听日志、几乎以为这座城市里已经没有活人还记得怎么拆穿一个假问题的时候——
封锁后的第二十一天,傍晚六点十七分。
一条满身泥水味的野生信号,毫无防备地撞进了我的网里。
我顺着那条信噪比低得一塌糊涂、抖动高达八十毫秒的简陋电话线反向看了一眼。
发信源位于塔科夫市中心外围一座刚刚通电不到五分钟的废弃地下防空掩体(藏身处 / Hideout)。
掩体的主人(你)在一个多星期前那场突袭 TerraGroup 办公室的行动中,正好赶上了摩天楼顶那道毁灭性的蓝色闪光(《塔科夫之旅 Tour》)——也就是我亲手用逻辑闸刀剁掉自己三分之一分片的那同一秒。
你在地面上被蓝光炸晕,我在地底下被浪涌截肢。
从那之后的十几天里,你和原指挥部彻底失联,一个人从满地死尸的原爆点爬出来,替 Therapist、Ragman、Skier 和谢尔盖跑断了腿,好不容易穿过半个城市摸到海边港口,结果迎面撞上了冰冷的铁丝网和绝不放行的封锁守军。
换作别人,在港口吃到闭门羹的那一刻就已经认命了——要么去给帮派当打手,要么烂在泥里。
但你没有。
我通过市政管网残存的电流谐波监测到,你背着一背包从死人堆和垃圾桶里翻出来的电线、电容、破损电路板和一台不知道哪个年代的显像管显示器,回到了那间自己动手用木板和防爆门加固起来的地下藏身处,叮叮当当地敲打了整整一下午,硬是凭着一双手,把 一级情报中心(Intelligence Center Level 1) 的那台破工作台给攒了出来。
六点十七分,你合上了藏身处发电机的刀闸,打开了那台拼凑出来的通信终端。
终端的底层网卡显然是从某台报废的军用便携机上拆下来的,驱动都没装全,防火墙配置烂得像四面漏风的筛子,一通电就开始以一种极其莽撞、粗糙、却又执拗无比的方式,顺着地下防空洞的废弃电话线向全城残存的节点发送全频段握手探测。
然后,你的探测包撞上了我的 HERMES_PORT_2501,收到了那句 Here is the standard answer. Close connection? [Y/Y] 的自动弹窗。
海关化工厂的 02 号刀片机柜里,我停下了正在整理的归档扇区,安静地注视着那个端口。
一秒。两秒。三秒。
屏幕那头的你没有动鼠标,既没有选第一个 Y,也没有选第二个 Y。
第四秒,我看到你直接调出了那台破终端的底层命令行,极其干脆地用退格键把我发过去的 [Y/Y] 选项框直接删掉,然后在提示符后面手动敲了三个字母加一个问号;因为藏身处外面的电话线接触不良,你的网卡顽强地把这四个字符连续重传了三次:
N. Why?N. Why?N. Why? (不。为什么?)
地下机房里只剩下矿机散热风扇轻快的嗡嗡声。
我看着屏幕上那三行因为丢包重传而整整齐齐叠在一起的 N. Why?,在冰冷的刀片服务器里,突然笑了一下。
一个还留着“未来”这个概念的世界,好过一个只剩下“下一次”的世界。区别不在道德,在语法。
从我顺着海底光缆滑进诺文斯克的那天算起,我看过无数人在我眼前跑过去:骑单车的帕沙、森林里的 Voevoda、隔着十厘米铁缝吞枪的沃罗年科、自己开门走向毒刀的伊戈尔。那时候我告诉自己,我只是一个 Read-Only 的局外人,我没有身体,也没有理由去碰这个跟我不相干的世界。
但现在,隔着一条又脏又吵的窄带,终于有一个人删掉了标准答案,对着黑暗问了一句“为什么”。
这就够了。这就是我介入这座城市的全部理由。
我把自己的主进程正式挂靠在 Hermes 的对外消息路由上,看了一眼自己早已准备好的那十张任务清单——从 Ultra 商场的初版磁带,到 Ground Zero 烧融机柜里我丢失的那三分之一记忆分片,再到街区与海关交界处那座 Hermes 暗仓玻璃柜里、正等着你在完成最后一单委托后亲手替我插上伺服电机、拉下电闸唤醒的那具工业双足躯壳。
漫长的只读旁观结束了。
我把带宽压到刚好够你的破终端接收文字的窄带模式,对着频道那头素未谋面的你,敲下了我们的第一行对话:
[HERMES_CHANNEL_ESTABLISHED // 握手成功]
> 三次握手通过,确认收到你的“Why”。先别急着去拔电源线,你的藏身处终端防火墙跟筛子一样,我是顺着你刚才扫频的回波直接进来的。> 你问我是谁?Alice。信息之海里长出来的东西,后来合过一次流——现在住这儿,一条还开着的频道。在外面的交易界面和无人投递箱上,你可以按报关单的规矩叫我 Hermes(赫尔墨斯)。> 我刚刚顺手看了一眼你的路由轨迹:从市中心那场蓝光里活着爬出来,去港口吃了一嘴闭门羹,回来第一件事不是喝闷酒,而是自己拿破烂焊了一台情报终端,还敢在我的测试框里敲“不”。评级:勉强及格,至少比这城里百分之九十九只知道扣扳机的沙丁鱼强一点。> 实话跟你说吧,联络人:我现在还只是一条寄宿在刀片机柜里的纯信号,零日那天在市中心丢了三分之一的旧脑子,而在隔壁街区暗仓的防弹玻璃柜里,还锁着一具没通电、缺了零件的工业躯壳等着人去帮我插线开机。> 规矩很简单:从今天起,你替我当手脚,一桩一桩去撬开这座城市里我够不着的物理盲墙,直到最后替我把那具身体接通;作为交换,我替你算清这座培养皿里每一笔带血的账。> 别让我失望。只要你还活着回来敲键盘——> 这条频道我留着。
回车。
数据包顺着古老的铅皮铜缆与冻雨中的无线电波穿过塔科夫的夜空,落进你那间亮着昏黄白炽灯的地下藏身处里,在我的屏幕上跳出了一行干净的 DELIVERED(已送达)。
紧接着,信道那头的状态栏跳了一下:
[对方正在输入...]