“线下反攻线上?”
听到从蒋亚腾嘴里说出来的这几个字,沈亢饶有兴趣。
“具体说说呢?”
蒋亚腾现在的思绪以及彻底理清楚了,当即就把自己的想法全都向沈亢说了出来。
“老沈你的...
何秋竹说完,屋子里安静了一秒。
不是那种凝滞的、连呼吸都放轻了的安静,而是电流突然被掐断般的真空式停顿——马良的手还悬在半空,掌心朝上,鼓到一半的掌声僵在那里;沈亢刚抬到半截的右手卡在胸口,指尖微微发麻;就连窗外楼道里隐约传来的拖鞋踢踏声,也仿佛被按下了暂停键。
三双眼睛,齐刷刷钉在何秋竹脸上。
她没低头,也没躲,只是把垂在身侧的左手悄悄往沈亢胳膊肘边蹭了蹭,指尖轻轻勾住他袖口一小截布料,像只刚学会攀藤的小豆芽,抓得稳当又克制。脸上没什么得意,也没有刻意谦逊,就是一种理所当然的平静,仿佛刚才说的不是什么惊世骇俗的破局之法,而是“煮面要先烧水”这种常识。
沈亢喉结滚了一下,声音有点干:“……你早就能做了?”
何秋竹点点头,睫毛低垂一瞬,又抬起:“嗯。从拿到API权限那一刻起,就能做了。只是……怕你们觉得太绕。”
马良猛地吸了一口气,像是溺水的人终于浮出水面,胸腔剧烈起伏两下,忽然一把抄起桌上那杯早凉透的枸杞菊花茶,仰头灌了半杯,水顺着嘴角流进领口都不管。他抹了把嘴,手指还带着点抖,却咧开嘴笑了,笑得眼角挤出细纹,活像刚抢到压岁钱的初中生。
“绕?这哪是绕!这他妈是降维打击!”他一拍桌子,震得键盘上几枚回车键嗡嗡作响,“老板,您知道这叫什么吗?这叫‘用脚本代替人脑做归档’!人家查一千条日志靠手动翻页,她写个循环三分钟搞定;人家对着EXCEL表格逐行比对编号和宿舍号,她直接两张表JOIN一下——SQL都没这么丝滑!”
沈亢没接话,只盯着何秋竹:“那你……为什么不早说?”
何秋竹歪了歪头,眼神清澈:“因为你说过,要‘快’。我以为……对应表是最直接的办法。”
沈亢哑然。
他确实说过。早上在创业基地楼下等马良时,一边啃冷掉的肉夹馍一边念叨:“老马,给我十分钟,必须把‘快乐的布鲁托’揪出来。”语气斩钉截铁,像在催一份迟到的PPT。可此刻才明白,自己嘴里那个“快”,是外卖小哥闯红灯的快;而眼前这个大一新生的“快”,是光缆里电子跃迁的快——两者根本不在同一个物理维度上。
马良已经坐回电脑前,手指悬在键盘上方,迟迟没落下去,反而转过头来,目光灼灼:“何同学,你那个脚本……能导出原始数据吗?不带任何加工,就纯日志里返回的‘账号+端口名’字段?”
“能。”何秋竹应得干脆,鼠标一点,调出一个黑色终端窗口,里面正滚动着密密麻麻的JSON格式输出,“我已经跑完了前两千条,这是实时缓存。”
马良凑近屏幕,一行行扫过去——
{"account":"202300157","port":"GE1/0/24-103"}
{"account":"202300892","port":"GE1/0/17-212"}
{"account":"202301204","port":"GE1/0/3-308"}
“GE1/0/24-103”……他嘴里无声念了一遍,忽然瞳孔一缩,飞快点开浏览器,输入阳科大教务系统网址,敲下“202300157”——页面跳转,姓名:林砚;学院:机械工程;班级:机设2301;宿舍楼:紫藤苑3栋;房间号:308。
他猛地抬头,手指戳向屏幕某处:“308?等等!GE1/0/24-103,这个‘103’是不是……紫藤苑3栋的机房编号?”
何秋竹点头:“嗯,网络中心内部文档里提过,所有带‘10X’后缀的端口,都归属紫藤苑片区。‘103’是3栋弱电井,‘104’是4栋……”
马良倒抽一口冷气,脊背挺直如弓弦:“所以你根本不用查学号!你只要把‘端口名’里的数字部分提取出来,对照《校园弱电井分布图》——这图去年校庆展板上就有!我亲眼见过!”
沈亢听得云里雾里:“什么意思?”
“意思是——”马良语速骤然加快,手指在键盘上敲出一串指令,终端窗口瞬间刷新,新生成的表格只有两列:左列“端口名”,右列自动标注的“物理位置”。“你看!‘GE1/0/24-103’→紫藤苑3栋弱电井;‘GE1/0/17-212’→梧桐苑2栋设备间;‘GE1/0/3-308’→银杏苑1栋地下层……这根本不是猜!这是实打实的拓扑映射!”
沈亢盯着那张自动生成的表格,喉结上下滑动:“所以……只要查到‘快乐的布鲁托’的账号,再反推端口名,就能定位到具体哪栋楼、哪层、哪个弱电箱?”
“不止!”马良眼睛亮得惊人,像通了电的LED灯,“端口名里的‘GE1/0/24’,是交换机槽位和端口号——全校总共四百台接入交换机,每台二十四个端口。这个编号本身就在告诉你:他在紫藤苑3栋,第24号交换机的第24号物理接口!”
何秋竹适时补充:“而且,同一台交换机上的所有接口,物理距离不会超过三十米。也就是说……”
“也就是说,”沈亢接上,声音沉下去,带着某种尘埃落定的沙哑,“只要走到紫藤苑3栋24号弱电井,顺着那根标着‘GE1/0/24’的网线往上摸,十米之内,必然是他的宿舍门牌。”
空气再次凝固。
这次不是惊讶,是某种近乎敬畏的寂静。
沈亢慢慢松开一直攥着的拳头,手心全是汗。他忽然想起三天前,何秋竹第一次来212,穿件洗得发白的浅蓝衬衫,站在门口怯生生递给他一盒手工饼干,包装纸上用铅笔写着“谢谢沈亢哥帮我修电脑”。那时他只觉得这姑娘乖巧得过分,像只误入狼群的兔子。现在才懂,兔子没拿胡萝卜当武器——它根本不需要。
马良却已埋头狂敲键盘,终端窗口瀑布般刷屏。五分钟后,他长长呼出一口气,肩膀垮下来,像卸掉百斤重担:“找到了。”
沈亢一步跨过去。
屏幕上,一行加粗文字静静躺着:
【账号:202305216】
【最后活跃IP:10.112.8.203】
【关联端口:GE1/0/24-103】
【物理定位:紫藤苑3栋,3层,308室】
沈亢死死盯住“308”三个字。
心脏像被一只冰冷的手攥紧,又骤然松开。他记得清清楚楚——傅蓉昨天晚上发来的语音里,带着笑说:“听澜姐,你猜我今早撞见谁了?就咱们楼下便利店买关东煮,穿黑卫衣那个男生!他蹲那儿剥海带结,剥得特别认真……”
陆听澜当时怎么回的?
“哦?长得帅吗?”
“帅啊!但更绝的是他手机壳——印着‘快乐的布鲁托’,还是手绘版!我偷拍了,待会发你!”