卡索拉在清理镇子东侧那间废弃的电子回收仓库时,翻出了两块灰绿色的塑料壳子。GBA。任天堂的古老掌机,屏幕布满划痕,电池仓盖用胶带缠着。他把它们揣进口袋,纯粹出于一种收藏者的习惯——就像他囤积286一样,说不清为什么,只是觉得不该让这些东西被碾碎。
当晚,他在机房里把其中一块拆开。32位ARM处理器,简陋的LCD屏,一切都在微米级制程的安全区内。帝国病毒可以碾碎任何现代芯片,但对这块2001年的小东西毫无兴趣。卡索拉翻出那本手册的附录——他记得有一个章节专门讲古董游戏机的I/O映射。第247页,他找到了GBA的LCD控制寄存器地址。
他用汇编写了一个极简的程序:点亮每一颗像素,赋予它们随机的灰度值。屏幕上开始落下一片噪点,像电视没信号时的雪花,又像一场永远下不完的灰雨。他把GBA放在机房窗台上,屏幕朝外,没指望它做什么。
第三天凌晨,卡索拉被值班员的叫喊声惊醒。他冲进机房,看见那块GBA屏幕上,雪花噪点出现了异常——一片像素被整齐地排列成一个圆形,像水中倒映的月亮。三秒后消失,恢复为无序的灰雨。卡索拉愣住,然后冲向配电室的电磁场监测仪。读数证实了他的猜测:那个圆形出现的同时,一股定向的探测脉冲沿着输电线掠过小镇。
GBA的雪花噪点捕捉到了它。
原理很简单:EMP攻击前的探测脉冲会在空气中产生微弱的磁场波动,足以让那片随机的灰色像素发生偏移。算法太复杂的东西捕捉不到这种细微变化,但一块靠物理像素直接驱动的老LCD,反而成了最敏感的探测器。那些随机噪点就像一片平静的湖面,任何外来干扰都会在水面留下痕迹。
卡索拉花了四小时写出第二版程序。噪点不再是纯随机,而是按照特定算法排列——每一帧都是独特的指纹,卡索拉称之为“灰幕”。任何电磁扰动都会在灰幕上留下可辨的图案:圆形代表探测脉冲,锯齿形代表定向攻击,波纹状代表大面积扫频。他甚至在代码里加入了简单的模式匹配,让GBA在识别到威胁时通过Link Cable接口向286发送一个中断信号。
第二块GBA被他连上一台286的串口,充当远程传感器的接收端。他把它装在无人机残骸上,用线缆放飞到镇子边缘的一座水塔顶端。两块GBA一近一远,构成了一个简陋的三角定位系统。
帝国再也无法偷袭。
第四天拂晓,灰幕上出现波纹状图案,方向来自西北。卡索拉调出第三台286上的地图程序——他手绘的ASCII风格网格——标记了波纹的衰减梯度。帝国正在向邻近的柳溪镇发动新一轮探测。卡索拉没有犹豫,通过已建立的中继网络向柳溪镇深处那台即将激活的286发送了指令:提前启动“播种程序”,让那边的继电器在探测脉冲抵达前完成闭锁。
柳溪镇的灯光在黑暗中最先亮起。帝国的探测脉冲扫过时,收到的是一整片伪造的死寂回声。攻击波次越过柳溪镇上空,扑向更远处的无人区。卡索拉在绿屏上看到柳溪镇的水泵继电器顺利合闸,流量数据缓慢爬升。他的嘴角微微动了一下。
从那天起,机房窗台上的那块GBA从不关机。灰幕日夜流淌,像一片沉默的预警海面。卡索拉偶尔会盯着它出神——那些随机像素在电磁扰动中形成的短暂图案,有时像字母,有时像星空,有时像雨滴落在水面上的涟漪。他说不清那是什么,但总觉得那些图案在告诉他某种事情。
有一回,屏幕上出现了一个极微弱的、近乎不可见的螺旋。卡索拉翻遍手册、核对所有已知的攻击模式,都没有匹配。那个螺旋持续了大概四秒就散去了,恢复为普通的灰雨。
他把它记录在日志里,标题下只写了一行:
; 也许帝国也在寻找答案
; 也许它在寻找我们
又过了一周,十七台286变成了二百三十七台。弧光覆盖的范围从三十公里延伸到了七镇两县。GBA灰幕上每天都会出现几次圆形或锯齿形,卡索拉总能提前三到五分钟做出应对——断开即将受攻击的节点,或伪造一片更大的死寂回传。帝国始终没有突破他们的防线。
某个午夜,他坐在机房中央,膝上是那两块GBA。一块连在窗台上,灰幕缓缓流淌;一块连在286上,LED灯安静地闪烁,像一颗绿色的心跳。窗外,柳溪镇和另外三个乡镇的灯光沿着输电线依次排开,温暖而克制,像一张被小心点亮的棋盘。
卡索拉把手册翻到第247页,在GBA寄存器表旁边添了一行新注释:
; 2001年,任天堂不知道他们造了什么
; 它只是被设计来玩游戏
; 但游戏机也可以看见闪电
窗外,又一片灯光沿着旧电缆亮起。而那块灰幕,继续安静地注视着黑暗中无声的来客。