回到龍科院地下三層的時候,大廳裡的白熾燈矩陣照得顧晏眯了一下眼。她直接走向操作檯把頻譜儀從挎包裡取出來連接電源,螢幕亮起的過程中她已經拉開了挎包的第二個隔層,把那張存儲卡的防靜電袋放在了操作檯麵上。陸維楨在旁邊坐下,把加密讀卡器插入工作站Usb介麵,用鑷子取出卡身放進讀卡槽。
存儲卡被識彆的速度比預想的快。係統彈出的檔案目錄顯示這張卡采用了簡單的分區結構,主分區裡排列著一組以日期命名的檔案夾,最早的日期標記落在約四十五天前。檔案夾內部存儲的檔案格式統一,元數據中的創建者欄位指向一個統一的管理賬戶名,備註部分留著一組縮寫編號,編碼規則和ECHO-7係列設備完全不同——更短,像是另一個係統的標記。
"它不屬於我們之前接觸的任何一套暗潮設備。"陸維楨說,"西部係統、B1-SUB、ACC-04都用ECHO-7係列的設備標識格式。這張卡上的寫入設備是另一套獨立的采集係統——可能是更早部署的一層網絡,用不同的硬體供應商和不同的協議棧。暗潮在蓉城至少有兩層數據采集架構:外層是ECHO-7設備網絡,負責廣泛覆蓋和常規采集。內層是這套獨立的係統,負責定向針對核心目標做更精細的定製化提取。"
顧晏已經打開了一個檔案檢視器,隨機抽取了一個日期檔案夾裡的數據檔案進行解析。檔案內容在她螢幕上展開時,她確認了確實包含了航空動力研究所的葉片測試參數記錄——和西部係統采集的數據同源,但采樣頻率更高、記錄欄位更精細。她在檢視檔案末尾的附加標記時停住了,手指在鍵盤上方的位置懸停了片刻。
"這個檔案末尾的標記欄位裡包含了一組嵌入式時間戳。時間戳的格式不是標準UTC也不是本地時間——它是某個特定係統內部任務調度器的時間計數格式。"她把那個時間戳欄位截圖標註出來,"這種時間計數格式我在專業文獻裡見過一次,是某款進口測量係統韌體裡使用的原生時間基。那款測量係統的製造商註冊在德國。"
德國製造的測量係統,被用於國內航空發動機葉片測試平台的數據采集。測試平台產生的原始數據通過該係統的數據介麵被轉存出來,然後經由某種內部途徑嵌入到常規檔案流裡被外部接收端捕獲。接收這些數據的外部係統就是這張卡所屬的設備——它藏在物流園配電箱裡的中繼器,以和ECHO-7係統不同的硬體平台運行著。
陸維楨繼續向下翻看檔案列表。四十五天的數據檔案夾中,大約有近三分之一是相對完整的記錄週期,另有少量檔案夾內容殘缺或者隻有索引表。這種不完整的記錄特征提示他:中繼器可能不是持續在線接收的。它可能有固定的接收視窗,在視窗期之外的時間段裡處於待機狀態。而視窗期的設置時間,很可能和測試台架的實際運轉週期對齊。
"顧晏,你看一下這些檔案的寫入時間在一天中的分佈情況。"陸維楨說,"是不是集中在某些固定的時間段裡,其他時間幾乎不更新。"
顧晏快速篩選了幾個日期檔案夾內的檔案創建時間戳,導入表格軟件做了分佈統計。結果在她螢幕上呈現出一條明顯的峰值曲線:寫入集中在每天上午九點到十一點之間,下午三點到五點之間也有一個較小的次峰,其餘時間段幾乎冇有任何新檔案產生。兩個時間視窗恰好對應發動機測試台架最常用的早晚兩班運轉時段。
"所以中繼器的接收視窗是照著發動機測試台架的工作節拍開的。"陸維楨說,"測試台一開機,數據就開始往外流。測試台關機的午休和夜間時段,中繼器進入待機,不接收也不寫入。這個邏輯保證了中繼器的工作狀態和測試台架的運轉規律完全重合,如果外部人員檢查中繼器的工作日誌,看到的就是在測試台架運轉時段寫入的數據——看起來像正常的運行週期日誌,看不出任何異常的數據外傳痕跡。"
顧晏靠在椅背上低了一下頭,又抬起來,看向螢幕上的峰值統計圖。"那這張卡上除了航空動力研究所的數據之外的另一組信號源——綿陽方向來的數據——它的寫入時間分佈和蓉城的數據是相同的還是不同的?"
陸維楨調出了檔案目錄中標註"EXT_MY"前綴的檔案夾進行同樣的時間分佈分析。綿陽方向來的數據寫入時間集中在每天下午兩點到四點之間,和蓉城方向的上午峰值錯開了大約五個小時。這個時間差讓他把注意力放到了這份分佈圖的含義上:綿陽方向和蓉城方向的數據不是同時寫入的,它們在時間軸上錯開排列,兩者之間有一個明確的時序節拍——上午收蓉城的數據,下午收綿陽的數據。
"中繼器按照地理順序輪詢了不同節點的采集隊列。"陸維楨在紙上畫了一條時間線,"上午的視窗給蓉城,下午的視窗給綿陽。可能還有其他的節點分佈在另外的時間視窗裡,隻是這張卡上存儲的數據時間範圍隻覆蓋了蓉城和綿陽兩個來源。"
顧晏把統計結果儲存後抬頭看了看大廳牆壁上的時鐘。上午十點整。距離商務車在物流園停靠的時間點已經過去了大約三十分鐘。如果商務車發現卡被換過的時間視窗發生在他們下一次定期檢查卡的時候——按照物流園中繼器的常規輪詢週期和商務車的到訪頻率來判斷,那可能是幾天之後的事情。
但陸維楨注意到了另一件事。他重新點開了一個從卡中複製出來的數據檔案,檢視檔案內部的數據記錄格式。葉片測試參數的記錄行之間除了標準的數值欄位之外,還夾帶著一些極短的不規則字串片段,分佈在數值列的間隙中。他選了一段這樣的字串做解碼分析,"天工"係統返回的結果是一組字元編碼格式轉換後浮現出來的內容:"WP-15C高溫段轉子葉片第47次循環記錄偏載驗證狀態:正常。"
他認出了WP-15C這個編號。這個編號指向的是一款處於工程驗證階段的新型渦扇發動機的核心機代號。蓉城航空動力研究所正在做那款發動機的葉片材料長期測試。而那張卡裡存著的,就是那款發動機葉片在測試過程中的偏載和形變數據——而且帶有"偏載驗證狀態"這種隻有在台架測試實時記錄中纔會出現的操作註釋,不是後期整理的數據報表裡會包含的內容。這意味著數據流出的源頭極有可能不是曆史數據導出,而是台架測試過程中的實時數據介麵。有人在測試台的實時數據流裡做了手腳,讓數據在產生的同時就被複製了一份送了出去。
"測試台的數據介麵被動過。"陸維楨站起來,走向白板把WP-15C和葉片測試數據這兩個關鍵詞寫了上去,用線連接起來,在線的末端畫了一個問號。"問題不是誰在接收這些數據。問題是誰能在測試台的實時數據流上加一個分流介麵而不被髮現。"
周承嶽從大廳入口的方向走進來,手裡拿著加密手機,螢幕亮著。他走到白板旁邊掃了一眼上麵的新寫內容,然後轉向陸維楨說了一個資訊:"航空動力研究所那邊今天上午的常規安全巡查剛剛做完了。檢查結果顯示測試數據采集係統的主控麵板側麵多了一組未被登記的數據輸出介麵,介麵位置非常隱蔽,藏在了麵板側麵通風槽的內壁上,從正麵完全看不到。介麵端接了一段極細的光纖線,沿著管道走向彙入大樓的弱電係統。光纖的出口末端連接著一**立的通訊轉換器,體積跟一包紙差不多大,用磁吸底座固定在吊頂內部的鋼梁上。"
他把手機上的照片翻給陸維楨看。照片上是一條極細的光纖線從麵板側麵通風槽探出,沿著牆角的管道走向上行冇入吊頂的內部。那條光纖線的表皮顏色和動力研究所大樓的弱電標準線纜顏色相近,如果不打開麵板把通風槽內壁拆下來用手電照著檢查,根本不會注意到它的存在。
陸維楨看完照片之後把手機還給周承嶽。他重新轉回操作檯前,把那張存儲卡的目錄樹又翻了一遍,在"EXT_MY"檔案夾的底層發現了一組以前冇有被注意到的檔名後綴——那個後綴的編碼格式和動力研究所測試台的設備日誌格式一致,但末尾多了一個額外的字元標記。他把那個標記輸入係統進行解碼,"天工"光屏上跳出了一個結果,隻有一行字:"標記指代的方向:測試台實時數據分流口的配置參數檔案索引號。"
光纖線在麵板側麵通風槽內壁上連著的,就是那個數據分流口。而物流園配電箱裡的中繼器,就是沿著那根光纖線的末端從動力研究所大樓裡往外收數據的中轉節點。現在卡在陸維楨手裡,光纖線已經被髮現,測試檯麵板上分流介麵的位置也已經確認——但動力研究所內部被加裝的那段光纖線從通風槽出口到弱電係統入口之間還有一段距離冇有覆蓋到。如果那個轉換器仍在吊頂內部的鋼梁上,它的存在就意味著數據介麵仍然可能在未來被重新啟用。
陸維楨在操作檯前坐下,把那張存儲卡從讀卡器裡取出重新封進防靜電袋。他看了一眼白板上那個"?",伸手在它旁邊寫了一個詞:"吊頂"。