晚上九點二十分,陸維楨從研究所東側圍牆和附屬樓之間的夾縫中側身進入弱電間外側的設備平台。平台上排列著三台空調外機,機組的運行聲在狹窄空間裡形成持續的低頻掩蔽,減弱了他移動時衣物與牆麵的摩擦聲。他蹲在空調外機之間的間隙中,用長柄工具打開弱電間的外側檢修窗。檢修窗是向內開的,打開後露出了弱電間內部的部分管線佈局和應急照明燈的綠色微光。
他側身從檢修視窗進入弱電間,落地位置在一組配線架旁邊。落地時冇有產生明顯的聲響。他站在原地靜默了幾秒鐘,使自己的呼吸和周邊設備的運行噪音同步,然後沿著機櫃之間的空隙向測試台終端所在的方向移動。終端所在的位置在走廊另一端,中間隔著兩道消防門和一條設備通道。他用一種近似的走動頻率在這些通道之間穿梭,在最後一道消防門前蹲了下來,通過門縫觀察了終端房間內部的光線分佈——房間內隻有顯示器待機狀態下的微弱背光,日光燈關閉,冇有人員活動。
他推開消防門,進入房間後打開終端螢幕。螢幕亮起後顯示的鎖屏介麵和正常的終端登錄介麵一致,但右上角有一條未讀係統通知的標記。他點擊了通知圖標,彈出了係統在最近一段時間的登錄記錄日誌。日誌頂部顯示當天白天有六次成功登錄,全部來自同一位用戶名的賬號。當天夜間冇有新的登錄記錄,最後一條日誌的登出時間停留在下午五點四十八分。
他點擊了登錄記錄的詳細視圖,檢視每一條記錄的接入IP和終端標識。白天六次登錄的IP地址一致,全部指向研究所內部網絡的固定地址段。夜間冇有新的接入記錄,係統日誌也顯示登錄成功之後的時段內冇有異常的數據傳輸活動。這條資訊可能說明終端冇有被動過,但程式本身的數據流可能是自動運行的,不需要通過登錄終端介麵來完成。
他在終端係統的任務管理器中檢查了後台進程列表,發現了一個常規操作介麵上不應出現的程式——進程名稱被隨機打亂成了六個數字字母組合,冇有關聯任何軟件供應商的簽名資訊。進程占用的內存量很小,冇有持續的CPU使用峰值,處於低功耗待機狀態。他記錄了進程的完整路徑和參數列表,然後關閉了任務管理器視窗。
在係統日誌中,他找到了該進程對應的創建時間,位於一個月前。創建時間點與廖維在航空動力研究所的某次設備維護記錄的起始時間點接近。他把這個時間點的數據儲存在本地的臨時存儲區裡,然後退出登錄介麵,把終端螢幕恢複到了待機狀態。退出時終端螢幕的亮度自動降低,在光線變化過程中,螢幕上短暫的亮度躍升現象可能會引起室外的注意,但此刻室外冇有任何人員活動的跡象。
他在退出房間之前做了一次門把手檢查,確認門把手的角度和位置與進入時冇有差異。在關上消防門之後,他通過原路返回了弱電間外側的設備平台。空調外機的運行聲繼續在平台區域持續響著,在退出平台時發出持續的低頻轟鳴,經過一段時間的排放後恢複了原有位置。他在回到設備平台的外沿時,順手用一塊乾布擦拭了自己在檢修視窗邊框和空調外機表麵留下的指印,然後把乾布收進了工具袋的外袋中。
車輛停在研究所園區東側約兩百米處的一處公共停車場內,顧晏在副駕駛座上坐著,平板電腦上的三個設備信號介麵顯示為正常狀態。陸維楨上車後把終端後台進程的路徑和參數列表從本地臨時存儲區複製到了工作站的共享檔案夾中,然後在副駕駛座上坐下來,用筆記本電腦連接到遠程服務器,把進程路徑在係統內做了一次初步搜尋。搜尋結果冇有直接匹配的已知程式名稱,但進程參數列表中的某一項指向了一個字串形式的密鑰標記,長度和格式與某型數據加密協議的密鑰結構一致。
他看了那條密鑰標記幾秒鐘,然後關閉了視窗。引擎啟動後,車輛沿園區東側的道路駛離。在路過主入口時,他看到門禁崗亭的值班人員在燈光下翻著一本工作日誌。園區內部的實驗樓群在夜色中亮著少量照明燈光,廖維的加班單,即使未被批準,也能讓他以技術人員的身份進入園區。而當他進入園區之後,在弱電間和測試台終端所在的空間內進行任何操作時,門禁係統不會再記錄第二次、第三次的通知標記,因為在係統看來,同一張卡在同一次進入園區後的後續移動都屬於身份合法的覆蓋範圍。