客厅的灯光调到了最暗,只有于蕊笔记本电脑屏幕的光芒,映照着她专注到近乎紧绷的小脸。键盘敲击声密集如雨,在寂静的深夜里格外清晰。屏幕上,黑色的命令窗口飞速滚动着常人无法理解的代码和日志,另一个分屏显示着复杂的网络拓扑图和实时数据流。
于远坐在旁边的沙发上,手里端着杯早已凉透的水,目光紧盯着屏幕,又忍不住望向窗外沉沉的夜色。苏清颜下午离开时那个平静却意味深长的眼神,像一根细刺扎在他心里。他知道,那绝不是什么“电力局技术顾问”的例行公事。对方带着专业设备,精准地探测到房间里的异常残留,每一句问话都暗藏机锋。侥幸过关,只是因为对方暂时没有确凿证据,也或许是因为她选择了一种更谨慎的观察策略。
但网络上的数据痕迹,是另一回事。那是铁证,是苏清颜或者她背后部门真正需要的、可以坐实“异常源”定位的东西。下午的检查只是敲门砖,后续的数据追踪和分析,才是致命的杀招。
“哥,运营商核心数据库的访问日志和原始流量记录,防护很严,有动态令牌和物理隔离,短时间硬闯风险太大,而且会留下更明显的攻击痕迹。”于蕊头也不抬,语速飞快,“但小区本地网关的缓存日志、以及昨晚信号受影响最严重的那个基站的临时诊断数据,是薄弱环节。这些数据通常不会第一时间同步到中心机房,会在本地保留12到24小时,用于故障初步定位和维修参考。”
“能处理掉吗?”于远声音干涩。
“不是删除,删除本身就会触发告警。”于蕊手指不停,调出几个复杂的脚本界面,“是覆盖和混淆。用大量的、符合常见故障模式的垃圾数据流和日志条目,去冲刷、覆盖掉昨晚那个特定时间段、带有特定频谱特征的异常记录。同时,在基站诊断数据里,插入几条指向其他方向的可能性记录——比如,记录一次瞬间的市电电压暂降事件,或者一辆疑似搭载了违规大功率无线电设备的车辆短暂经过的幽灵信号。把水搅浑,把‘单一明确异常源’变成‘多种可能因素叠加导致的偶发故障’。”
她说得冷静,但额角已经渗出细密的汗珠。这不是学校信息课教的编程,这是游走在灰色地带的网络渗透和数据伪造,每一行代码都在挑战规则和防护。但她没有犹豫,眼神里只有专注和一股不服输的狠劲。这是她哥,是那个会默默帮她修好摔坏的模型、会在爸妈忙时给她做夜宵、会认真听她讲那些别人觉得枯燥的技术问题的哥哥。谁想动她哥,先过她这关。
“蕊蕊,如果太危险,或者你感觉不对,立刻停手。”于远看着她紧绷的侧脸,心里涌起巨大的愧疚和担忧。是他修炼失控,惹出祸事,现在却要把才上高中的妹妹拖进这种危险的境地里。“大不了……我们想别的办法。或者我跟伯父伯母坦白……”
“哥,你说什么呢!”于蕊打断他,终于转过头看了他一眼,眼神里带着责怪和坚定,“现在坦白?怎么坦白?说你其实不是普通人,昨晚搞出那么大动静是因为在修炼?爸和妈会怎么想?那个苏清颜要是拿着证据上门,你怎么办?我们现在是一根绳上的蚂蚱,你出事,这个家还能安稳吗?”
她深吸一口气,语气放缓了些,但依旧坚决:“别胡思乱想。相信我,我能处理。这种本地缓存和日志的防护级别没那么高,主要是防普通黑客和误操作,我有把握。而且,我不是在破坏,是在……做数据清理和优化,让记录更‘合理’。”她甚至试图开了个小小的玩笑,虽然笑容有些勉强。
于远鼻尖一酸,重重地点了点头,不再说话,只是将水杯轻轻放在她手边。
于蕊转回头,重新投入代码的世界。她先是用几个代理跳板,伪装成一个海外学术机构的IP地址,尝试性地触碰小区网关的管理端口。端口开放,但需要认证。她没有暴力破解,而是利用网关固件一个已知的、未修补的低权限信息泄露漏洞,绕过了登录界面,直接进入了日志管理模块。
屏幕上快速滚动着过去24小时的海量网络连接日志。于蕊目光如电,迅速锁定时间范围:凌晨1:15到1:25。日志条目如瀑布般刷下,她编写了一个过滤脚本,专门抓取那些记录连接异常中断、高延迟、协议错误的条目。很快,几十条标红的记录被筛选出来,时间集中在1:18到1:20之间,错误代码都指向“不明干扰导致链路层协议失步”。
“就是这些了……”于蕊喃喃道,手指在触摸板上快速滑动,仔细查看每一条记录的详细参数,特别是其中记录的异常信号强度、误码率特征。她要确保自己伪造的“垃圾数据”在数值范围和特征上,能与这些真实记录的前后上下文“合理”衔接,不能出现断崖式的突变。
她新建了一个文本文件,开始快速编写伪造的日志条目。不再是单一的“不明干扰”,而是变成了:“1:18:23,用户A,大流量P2P下载突发,导致短暂拥塞,触发QoS限速,连接卡顿。”“1:19:05,用户B,WiFi路由器老旧,信道自动切换至与邻居家重叠频段,相互干扰,丢包率上升。”“1:19:41,网关自身散热风扇轴承老化,产生轻微高频振动,可能影响板卡稳定,日志记录模块误报一次CRC校验错误”……
一条条看似普通、在各种小区网络中都可能零星出现的“小毛病”日志,被她巧妙地插入、覆盖到那些关键的异常记录时间点附近。她用脚本批量修改了原始日志文件的时间戳、事件ID和描述字段,将那些指向性明确的“不明干扰”记录,稀释、淹没在一片看似杂乱无章的常见故障日志海洋中。
处理完网关日志,她立刻转向下一个目标——那个基站的临时诊断数据存储区。基站的防护比小区网关稍强,但于蕊早有准备。她之前因为对移动通信技术感兴趣,研究过一些开源基站项目的代码和架构,知道这类为城市覆盖补充的微基站,其运维接口和本地存储往往存在一些为了调试方便而预留的、不那么严密的访问路径。
她尝试了几个常见的默认维护密码组合,失败。又尝试利用基站软件某个用于远程性能诊断的API接口,这个接口理论上需要密钥,但有时配置疏忽会留下空口令或弱口令。运气不错,这个基站的这个接口,竟然真的用了出厂默认的弱口令。
“安全意识太差了。”于蕊撇撇嘴,手上动作不停,迅速登录进去。
基站诊断数据更为专业,包含了无线信号强度、信噪比、切换成功率、各种无线链路告警等详细信息。于蕊需要找到的,是记录昨晚异常电磁脉冲特征的那部分数据。她在海量的性能计数器和事件告警中仔细搜寻,终于找到了几行关键记录,明确提到了“检测到外部宽频带突发干扰,中心频率约2.4GHz,持续时间约45秒,导致服务区下行信噪比骤降,用户终端脱网”。
“找到了,硬证据。”于蕊眼神一凝。她不敢直接删除这几行,而是在其前后,利用基站诊断工具本身允许的“模拟测试数据注入”功能(这个功能本意是让工程师模拟各种故障场景来测试基站性能),向系统里注入了好几组“模拟数据”。
一组数据模拟“市电电压瞬间跌落10%,导致基站射频功放供电不稳,产生频谱杂散”。另一组数据模拟“附近有车辆使用未经认证的大功率车载无线设备(如私装大功率电台),短暂占用相邻信道”。还有一组甚至模拟了“高空疑似无人机短暂悬停,机身金属反射及可能搭载的图传设备对基站天线造成扇区间干扰”。
这些模拟数据被她精心设置时间戳和参数,与真实异常记录的时间段部分重叠,特征上各有侧重但又有相似之处。然后,她写了一个小小的排序脚本,将真实的异常记录和这几组模拟测试数据在时间线上稍微打乱、混合排列,让原本清晰的一条“异常事件”时间线,变成了好几段似是而非、可能由不同原因引起的“小故障”集合。