下一章 上一章 目录 设置
2、十一点二十四分 只读镜像恢 ...
-
第二天十一点二十四分,A307的门还锁着。
许砚知站在走廊尽头,看墙上的电子钟从23跳到24。门牌旁贴着一张旧告示,纸角卷起,上面写着“未经许可不得接入外部存储设备”。告示下方还有一块新换的摄像头,镜头正对门口。
沈砺川十一点二十七分赶到,背包拉链只拉了一半,手里没有电脑,拎着一只透明文件袋。
许砚知先看时间:“迟到两分钟。”
“宿管刚把洗衣房原录像导出来。”沈砺川把文件袋递给他,“申请单、录像哈希和截图来源。你昨晚说截图不能当原件。”
许砚知接过来。材料并不漂亮,宿管手写证明的字挤在格子里,U盘封口处还贴着食堂找零用的标签,可时间连续,设备编号也对得上。
“你几点去办的?”
“七点半。”
“宿管室八点开门。”
沈砺川咳了一声:“我在门口等。”
许砚知翻到最后一页。录像证明拍摄A401照片的时间段里,沈砺川一直在洗衣房,没离开监控范围。
“能证明你没拍,不一定能证明照片不是从你手机发出的。”他说。
“我知道。”沈砺川把背包拉好,“所以没在共享台账里把自己标成排除对象。”
这句回答让许砚知抬头看了他一眼。
沈砺川笑:“别用这种眼神。昨天刚学的,证据等级。”
A307的门从里面打开。贺承远穿着黑色卫衣,手上戴着薄手套,身后是一台没有接网络的工作站。
“进来前手机关机,放屏蔽袋。”他看见沈砺川的材料,“录像先放桌上,不并入U盘镜像记录。两条证据链分开。”
沈砺川刚要说话,许砚知已经把手机关机,放进门边的银灰色袋子。他照做,难得没有讨价还价。
陈以宁在十分钟后到。他不是调查成员,只负责把昨晚许砚知电脑里的本地缓存导出过程重新做一遍,作为设备侧证据。每个人的职责被贺承远写在白板上:
贺承远——操作与保管。
许砚知——发现经过与截图来源。
沈砺川——旧项目说明,不接触设备。
陈以宁——本地缓存复核。
沈砺川盯着“不接触设备”五个字:“写这么大,生怕我看不见?”
贺承远把一把椅子踢到黄线外:“坐那里。你要是跨线,我就把你写得更大。”
工作站启动后,第一件事不是打开文件,而是计算原盘哈希。进度条从零慢慢往前,风扇声持续不断。到百分之九十九时,数字停住了。
沈砺川下意识往前倾。
许砚知看了他一眼。
他又坐回去,双手压在膝盖上:“我没动。”
“看见了。”
“你这是表扬?”
“陈述。”
进度条停了四十七秒才跳到完成。贺承远把哈希值打印出来,让三个人分别核对,再把原盘重新封存。等镜像挂载为只读,已经十二点零三分。
目录并不复杂。docs、images、archive、logs,最下面还有一个隐藏目录:coldlight_old。
沈砺川的呼吸变了一下。
贺承远没有立刻点开,先问:“你最后一次见到这个目录是什么时候?”
“寒灯停项后一周。”沈砺川说,“当时陆星迟做过一次离线备份,文件夹就叫这个。后来备份由合作营老师收走。”
“你有副本吗?”
“没有。”
“周闻呢?”
沈砺川沉默了几秒:“他当时有管理员权限。”
许砚知把这句记在纸上,没有追问。
目录展开后,旧代码、成员表、用户反馈和会议记录一层层露出来。很多文件最后修改时间停在三年前,只有一个文件例外:route_to_xz.json。
创建时间是今年三月十七日,凌晨两点十七分。
距离许砚知收到录取通知还有三个多月,距离他第一次进入澄陵大学更早。
陈以宁把电脑本地缓存记录放到旁边:“昨天A201里出现的键是cl_route_seen,值为true。这个json里也有同名字段。”
贺承远先记录文件哈希,才打开内容。
页面只有几十行,没有姓名,只有一组学生画像:数学基础稳定,编程经验中等,风险偏好低,倾向可靠系统。路径末尾写着:target_alias: XZ;recommended_partner: SLC。
沈砺川压在膝上的手松开又收紧。
许砚知看完第一遍,问:“XZ依据什么生成?”
贺承远把文件滚到最上方。source字段不是学号,也不是申请材料,而是一个叫orientation_seed_2026.csv的表。
“今年新生数据?”陈以宁问。
“文件名像。”许砚知说,“但创建时间对不上。”
贺承远没有猜,继续查元数据。route_to_xz并非在U盘上原生创建,而是从另一台设备复制进来。复制来源保留了一个短路径:`/home/b3/public/coldlight/seed/`。
B3。
沈砺川低声说:“旧机房三层,B区第三排?”
“你确定?”贺承远问。
“寒灯那时候把终端按区域编号。A401-07是房间和机器,B3是公共终端组。三年前学校还没换过那批主机。”
“现在呢?”
“信息楼改造后,B3的一部分机器搬到新生公共机房。”
许砚知抬眼:“也就是说,这个路径可能不是旧设备留下的,是现在有人用旧目录结构新建的。”
“可能。”贺承远说,“先别把可能写成结论。”
这句话本来该由许砚知提醒别人。沈砺川在旁边看了他一眼,嘴角动了动,没有笑出来。
镜像检查继续。route_to_xz旁边还有十二个相似文件,别名分别是LM、CY、LS……创建时间分散在过去一年。多数文件没有推荐搭档,只有XZ被指定为SLC。
“为什么是我?”许砚知问。
没人回答。
他不喜欢这种感觉。自己像一个尚未入场就被写进实验分组的变量,别人提前定义了他的基础、偏好、风险,甚至安排了他应该和谁并肩。内容看起来准确,准确本身却成了最让人不安的部分。
贺承远把文件列表导出,结束镜像会话:“原盘今天不再打开。下午我去信息中心申请查B3设备迁移记录。你们回去上课。”
沈砺川站起来:“我能看旧成员表吗?”
“下一次。”
“里面可能有周闻。”
“所以更不能在你情绪最不稳定的时候看。”
“我很稳定。”
贺承远指着白板黄线:“你刚才往前挪了三次椅子。”
沈砺川低头,椅子前脚确实越过黄线一小截。他没再争,把椅子推回原位。
离开A307前,许砚知把自己记录的纸交给贺承远扫描。原稿他带走,扫描件进入调查目录。沈砺川站在门外等他,手里那杯早已凉透的无糖豆浆仍没送出去。
“给我?”许砚知问。
“现在才想起来?”
“刚才不能带进去。”
“已经凉了。”
“没坏就行。”
沈砺川把豆浆递过去:“你对吃的要求怎么比对证据低?”
“证据错了会影响判断,豆浆凉了只影响口感。”
“你的人生排序很有问题。”
“至少稳定。”
下午数学分析课讲函数极限。老师在黑板上写出ε和δ,说证明不是“看起来无限接近”,而是无论别人给出多小的范围,你都能找到条件把误差压进去。
许砚知坐在第三排,笔记只写了半页。route_to_xz的创建时间一直横在脑子里:三月十七日,凌晨两点十七分。
沈砺川在右侧,比平时安静。讲到例题时,他在草稿纸上写了一句推过来:
如果三月就有XZ,说明他们不是预测你入学,是从别处拿到了你的信息。
许砚知在下面写:
“他们”尚未确定。也可能是旧别名映射。
沈砺川又写:
你最先想到的永远是给所有人保留无罪可能。
许砚知停笔。
这句话不像责怪,更像沈砺川无法理解:为什么别人已经把他写进一份诡异文件,许砚知还要替未知的人保留解释空间。
他写:
不是替人保留,是替事实保留。
纸推回去后,沈砺川没有再写。
课程末尾有五道小测题。第三题需要从定义出发证明函数在一点连续。许砚知原本熟悉,却在最后一个量词上写反了顺序。他发现后擦掉,纸面留下很重的黑痕,越想重写得干净,越在同一个位置反复出错。
沈砺川把自己的草稿纸向左推了一寸。
“别给答案。”许砚知说。
“没答案。”
纸上只有一行:先把已知条件重新抄一遍。
许砚知看了两秒。
这是他昨天对所有事情使用的方法,却被沈砺川在他失手时还回来。他重新写下“任意ε大于零”,把量词顺序一项项排开,终于在倒计时前完成。
交卷时,他低声说:“谢谢。”
沈砺川靠回椅背:“我是不是可以从风险源升级了?”
“一个提示不构成长期评级依据。”
“那至少记一笔正向样本。”
“看后续表现。”
沈砺川笑起来,笑到一半又停住。老师收完卷后,贺承远从后门进来,朝他们示意去走廊。
“信息中心初步回复。”他把一张设备迁移表夹在文件板上,“旧B3终端组两年前拆分,其中B3-04到B3-09搬进新生公共机房。三月十七日凌晨,B3-07有一次本地启动记录。”
“登录账号?”许砚知问。
“系统维护模式,没有个人账号。”
沈砺川说:“那机器谁都能用?”
“理论上只有信息中心。”
“理论上。”沈砺川重复了一遍。
贺承远看他:“别去公共机房。设备还在正常教学,私自查机器会破坏现状。”
“我没说要去。”
“你鞋尖已经转向信息楼了。”
沈砺川低头看了一眼,硬把脚转回来。
许砚知问:“能申请保全B3-07吗?”
“正在申请,但要走流程,最快明早。”
“如果今晚有人清掉本地记录?”
“所以需要你们提供足够理由,让信息中心现在就封机。”贺承远说,“目前只有一个旧U盘里的路径和一次维护模式启动,关联还不够。”
沈砺川的表情明显绷起来:“等关联够了,机器可能已经干净了。”
“那你想怎么办?”
“去看一眼,什么也不动。”
“看一眼也会改变现场。”许砚知说。
沈砺川转向他:“如果现在不去,我们可能什么都没有。”
“我们已经有记录。继续申请封存。”
“流程未必来得及。”
“擅自进去只会让别人有理由说记录是你动的。”
这句话击中了最不该碰的地方。沈砺川脸色一下冷下来:“所以你也觉得我会动?”
“我说的是别人会怎么定义你的行为。”
“区别对我有用吗?”
走廊里有人从他们身边经过,三个人都停了话。等脚步远了,许砚知才说:“有。因为我现在是在阻止你给他们新的材料。”
沈砺川看着他,没说话。
许砚知从文件夹里抽出一张空白申请表,趴在窗台上填写紧急设备保全理由。异常路径、创建时间、旧目录映射、维护模式启动,他一项项写清。写到申请人时,他先填自己的名字,再把笔递给沈砺川。
“共同申请。”
沈砺川没有接:“你不怕把自己也写进去?”
“我已经在route_to_xz里了。”
“那是别人写的。”
“这张是我自己写。”
沈砺川终于接过笔,在许砚知名字下面签了自己的。笔尖落纸时很重,最后一画却收得很稳。
贺承远拿着申请去信息中心。他们被要求回宿舍等待,不得靠近公共机房。
晚上七点半,许砚知和沈砺川在图书馆二楼比对导引路线。陈以宁把正常路线的字段导出,三人逐项标记差异。正常系统只给课程和资源建议;旧文件多出风险标签、队友推荐和“服从性评分”。
“服从性?”陈以宁皱眉,“谁会在学习导引里评这个?”
沈砺川看着那一栏:“寒灯旧版没有。至少我参与时没有。”
“那是迁移后加的。”许砚知说。
“或者旧版后期有人加过,你不知道。”
许砚知没有反驳。沈砺川能把对自己的不利可能主动说出来,说明早上的“证据等级”并非一句玩笑。
他们把十二份route文件按创建时间排列。最早的一份出现在去年九月,最近的一份就是许砚知。文件创建间隔毫无规律,但每次都在凌晨两点十七分。
“定时任务。”沈砺川说。
“或者有人故意固定时间。”陈以宁补充。
许砚知盯着时间列,发现三月十七日那天,自己参加过澄陵大学强基开放日线上测评。他当时填过兴趣方向和数学基础,数据由招生系统保存。
“信息来源可能不是录取名单。”他说,“是开放日测评。”
陈以宁问:“学院导引系统能拿到招生测评数据?”
“正常情况下不应该。”
沈砺川的手机在屏蔽模式下震动,是贺承远发来的群消息:B3-07已封存,今晚不再开放。
三个人同时松了一口气。
下一条消息紧跟着出现:封存前自动打印队列吐出一页残留任务,任务名为route_to_xz,创建者字段为空。
照片里,打印纸只显示半页。最下方有一行来源路径:`B3-07:/home/b3/public/coldlight/seed/`。
这与U盘元数据完全一致。
许砚知把照片放大。纸张右下角还有一串被打印机裁掉一半的字符:`next: member_matrix.csv`。
成员矩阵。
沈砺川看着那几个字,脸上的笑彻底消失了。
“明天高等代数课后,”他说,“我把我记得的旧成员全部告诉你。”
许砚知没有立刻答应。
“不是交换条件。”沈砺川补了一句,“也不等你问。我自己说。”
这和昨天不一样。昨天他把每个回答都压到不得不说的程度;现在他第一次主动把旧事往桌上放。
许砚知关闭图片预览,在共享台账里新增任务:核验member_matrix.csv;整理寒灯成员与权限。
负责人一栏,他没有只写自己的名字。
他写:许砚知、沈砺川,共同。
图书馆闭馆广播响起时,三个人才发现已经过了十点。
陈以宁把比对表导出成只读PDF,又把原始表格留在本地版本库里:“我先声明,我参与到这里是因为缓存证据在我电脑旁边出现,不代表以后你们每次查旧案都自动把我算进组。”
沈砺川问:“那什么情况下算?”
“你们开始用‘大概、应该、我记得’代替数据的时候。”陈以宁合上电脑,“到时候我来拆你们的口径。”
许砚知点头:“可以。”
“你答应得倒快。”
“职责清楚就行。”
陈以宁先走。许砚知和沈砺川把桌面上的打印纸按顺序收好。沈砺川拿起那张共同申请的复印件,看了一会儿,问:“你以前也这样吗?”
“哪样?”
“碰到不属于自己的麻烦,先建表,再把名字签进去。”
“现在它属于我。”
“因为XZ?”
“因为有人用了我的数据。”许砚知把最后一页放进文件夹,“如果我只想证明自己无关,最简单的做法是交给学校,之后不再看。但这样只能把风险从我身上移开,不能解释为什么系统可以提前拿到一个未入学学生的信息。”
沈砺川靠在桌边,眼睛落在那叠纸上:“你知道继续查可能会影响正常入学吧?论坛已经有人猜你是不是特殊推荐对象。如果旧案再翻出来,最先被看的不一定是系统。”
“会先看人。”
“嗯。”
“你以前经历过?”
沈砺川没有马上答。他把共同申请折了一次,又想起这是复印件,才没有展开压平。
“寒灯事故后,所有人都在问谁发了帖子、谁给了权限、谁删了记录。”他说,“没人问那个系统为什么能把试用结果带进竞赛名额讨论。后来周闻退群,陆星迟不再来开放营,我被老师叫去解释管理员账号。每个人都能找到一小块证据证明自己只做了一点,最后那些‘一点’全堆在一个人身上。”
“你?”
“先是周闻,后来是我。”
许砚知看着他:“你做过的部分是什么?”
“给过临时权限。没收回。事故当天我还关闭过一次告警,因为它在演示前反复弹窗。”
“告警内容?”
“真实数据字段未脱敏。”
这句话让许砚知停下动作。
沈砺川说得很平,没有为自己辩护:“我以为是测试环境误报。演示结束后再查,也来得及。后来才知道那次关闭让数据继续进了展示页面。”
“所以你认为自己有责任。”
“有。”
“但不等于所有责任。”
沈砺川抬眼。闭馆后的灯光已经关掉一半,他的脸被安全指示牌映出一点冷色。
“这两句话可以同时成立。”许砚知说。
沈砺川像第一次听见有人把这件事拆成两个不互相排斥的命题。他想笑,却没能笑出来,只低声道:“数学分析还教这个?”
“不教。”
“那你从哪学的?”
“常识。”
“我以前周围的人常识不太够。”
许砚知没有顺着这句往下安慰。他知道一句“不是你的错”既不准确,也不能让旧事消失。他只把文件夹递过去一半:“明天整理成员矩阵时,你负责事实,我负责标记哪些只是记忆。不要混。”
沈砺川接住另一侧:“好。”
他们一人拿着文件夹一边走下楼。到了门口,保安提醒外面又下雨了。沈砺川打开伞,伞面不大,许砚知站进去后两个人肩膀都容易淋湿。
“你往里一点。”沈砺川说。
“伞柄在你手里。”
“所以我在调整。”
他把伞向许砚知那边偏,自己右肩露在雨里。许砚知看见后,伸手握住伞柄下端,把伞推回中间。
“共同。”他说。
沈砺川低头看了眼两人同时握着的伞柄,没有调侃,只把手往上挪了一点,给他留出位置。
走到宿舍分岔口,贺承远打来电话。
“B3-07的启动记录刚恢复。”他说,“三月十七日两点十七分,维护模式不是从本机键盘进入的,是远程唤醒。”
许砚知问:“来源设备?”
电话那边翻了几页纸:“A401门禁控制机。”
沈砺川听见了,停在雨里。
贺承远继续说:“还有一件事。控制机当晚使用的不是信息中心账号,账号名是WEN。”
雨点打在伞上,密得像一串无法跳过的倒计时。
沈砺川握伞的手很稳,声音却低了下去:“周闻三年前就被移出项目。他不该还有这个账号。”
许砚知把这句话记进手机备忘录,标注为“沈砺川陈述,待核验”。他没有回避沈砺川看过来的目光,也没有替他把周闻判成任何一种人。
“明天先查账号保留记录。”他说。
沈砺川点头。两人站在岔路口,谁都没有提出现在去A401。那把伞仍停在正中间,雨水从两侧落下,没有再偏向任何一个人。
沈砺川把A401的临时门禁申请从手机待办里删除,许砚知看见了,没有提醒。
贺承远随后补发一行:WEN账号最后一次正常登录停在三年前,昨夜那次属于“凭据恢复后登录”。有人最近重新启用了它。