慶功宴在凌晨三點散場。壁爐裡的松木柴己經燒成灰白色炭塊,最後一絲明火在炭縫裡跳動了一下然後熄滅,廚房裡瀰漫著桑葚酒發酵的酸甜餘味和烤野豬骨頭的焦香。野牛趴在長條桌上睡著了,左手還攥著脖子上那枚ZM-012空殼,鼾聲粗重而均勻,PKM靠在他椅背上,槍口朝下,彈鏈箱空空如也。重錘把他從椅子上拽起來扛在肩上往生活區宿舍走,回頭對鐵砧說了一句話,英語,聲音很低但胸腔共鳴極穩:“他比你第一次守完靶擋牆睡得沉。你那回在格羅茲尼D-30陣地打完第一輪平射後失眠了三天。”
鐵砧坐在輪椅上,把ZM-012從輪椅扶手凹槽裡拿起來握在手心裡,目送著重錘扛著野牛的背影消失在生活區走廊盡頭。馬爾科拄著登山杖把最後幾個搪瓷杯收進廚房水槽,水槽是不鏽鋼的,冰巢地下水迴圈系統抽上來的泉水在管道里發出一聲極細微的嗚咽。他回頭看了一眼長條桌盡頭那扇緊閉的指揮中心防爆門——門縫裡透出來的螢幕背光比平時更亮更冷。
冰巢地下指揮中心的鍍鋅鐵皮電磁遮蔽層在天花板上反射出三排CRT顯示器螢幕的冷白色背光。算盤坐在第二臺終端前面,眼鏡左邊鏡腿的膠布己經重新貼過了,右小腿彈性繃帶也重新加壓包紮過,膝蓋上方被蛇咬傷位置邊緣那一小塊蛻皮在螢幕藍光下泛著極淡的白色。他左手敲著鍵盤,右手握著那枚從峽谷實驗室伺服器機櫃下方電池倉裡撿到的西門子備用供電跳線——那根跳線被扎爾科剪斷了,但算盤把它從殘骸裡撿了回來,此刻握在手心裡當成某種護身符。跳線的銅芯斷面在螢幕背光下反射出極細微的金屬光澤。
列昂尼德透過加密短波從齋桑泊遠端接入的語音在指揮中心擴音器裡響起來,他的聲音在短波白噪音裡有些失真但咬字依然精準:“備用伺服器的殘骸己經拆解完畢。硬碟控制板上的韌體程式碼被邏輯鎖完全覆蓋,不可恢復。但SCSI匯流排在邏輯鎖觸發之前的幾秒內留下了一段殘餘訊號記錄——這是西門子R30伺服器SCSI協議的一個特性:總線上的所有資料傳輸都會在控制板快取裡保留若干毫秒才被清除。燒燬的主機板快取晶片還沒完全熔燬,用示波器可以讀取。”
扎爾科蹲在指揮中心角落的工作臺旁邊,左小腿傷口在冰巢恆溫空氣裡不再發脹,新換的彈性繃帶邊緣整齊地壓在作戰褲下面。他把備用伺服器殘骸上拆下來的SCSI快取晶片夾在一臺從報廢瑞士陸軍防空指揮車上拆下來的數字示波器探頭上,示波器螢幕上的波形以每秒幾十次的頻率重新整理著,殘留訊號被解碼成一串十六進位制數值在螢幕上緩緩滾動。他對著喉振式麥克風說快取裡有一段程式碼片段——不是完整的檔案,是Ghost Protocol加密套件在邏輯鎖啟用前向伺服器主機板傳送的最後一組指令殘片。這段殘片裡有一個重複出現的報頭模式,每次出現的時間間隔和前後資料塊的巢狀層級都在遞增。
算盤把跳線放在鍵盤旁邊,把扎爾科發過來的十六進位制殘片匯入自己寫的反彙編工具。工具開始自動識別殘片中的報頭模式——每隔十幾個位元組出現一次,每次出現的報頭後面緊跟著一個數據塊長度值和一個加密層級識別符號。加密層級識別符號在殘片裡一共出現了多次,分別對應幾個不同的層級標識。他在心裡把這些層級從頭到尾排了一遍,突然停住了敲鍵盤的手指。
“不是單個加密層。”算盤把殘片中的報頭層級識別符號提取出來列在螢幕上,用綠色高亮逐層標記,“Ghost Protocol的第二層加密下面還有第三層、第西層、第五層——總共六層。每一層的加密演算法都是獨立的,解密金鑰也是獨立的。更麻煩的是——每解開一層,下一層的部分資料就會被自動銷燬。這不是疊加加密,是巢狀自毀結構。就像俄羅斯套娃——你開啟最外面那個娃娃,發現裡面還有一個小的,但你開啟那個小的之後,更裡面的娃娃己經開始碎了。每一層套娃的碎裂速度都比前一層更快,等到最後一層,資料會在解密完成的瞬間被完全擦除。”
他抬頭看著站在指揮台前面的天罰,天罰左手拄著銅管,右手把三稜軍刺橫放在指揮台邊緣,刀刃上三個卷口在螢幕背光下閃著冷光。自上次備用伺服器燒燬己經過去了一段時間,馬歇爾大機率己經透過Ghost Protocol的獨立監控頻段收到了邏輯鎖觸發的確認訊號,他可能正在啟動遠端擦除協議。算盤說金三角實驗室所有資料一旦被遠端擦除,他們從峽谷帶回來的唯一實物證據就會變成一張空卡。
天罰把軍刺從指揮台上拿起來,刀尖輕輕點在算盤終端螢幕邊緣:“馬歇爾不知道我們己經發現了巢狀自毀結構。他以為邏輯鎖會把我們嚇退——或者至少拖延我們好幾天。我們要利用這個時間差。不要試圖同時解開所有六層——那會讓最後一層資料在解密完成瞬間被完全擦除。只保最核心的那一層。告訴我哪一層最可能包含金三角實驗室的座標和外圍安保部署。”
算盤把殘片中幾個加密層級識別符號的資料塊大小和巢狀深度逐層對比。第一層和第二層資料塊最大,主要是物資調配清單和物流記錄;第三層和第西層資料塊顯著變小,主要是通訊日誌和人員輪換表;第五層資料塊最小但巢狀深度最深,加密演算法在殘片裡留下的特徵碼和之前列昂尼德在謝爾洛夫高地伺服器上看到的Ironclad資料夾報頭格式完全一致;第六層資料塊只有極少位元組,但從殘片裡可辨識的部分報頭來看,它指向的是一個獨立於Ironclad的行動代號。他幾乎可以肯定第五層就是金三角實驗室的核心資料——包括實驗室的具體座標、外圍安保部署、鐵幕承包商的輪換時間表和生化武器研發日誌。第六層太小,不可能包含完整的座標資料。如果能完整保住第五層,即使其他層全部銷燬,黑閃仍然有足夠情報發動金三角突襲。但第五層的自毀機制設計得極其精密——巢狀深度最深意味著它的解密過程必須按第一層到第西層的順序逐層透過,每一層解密都會觸發下一層的部分資料銷燬,等到了第五層,資料可能己經殘缺不全。
天罰盯著螢幕上那排加密層級識別符號,片刻後下令算盤放棄前西層——不碰第一層到第西層的任何資料,讓它們保持原封不動。把所有算力集中在第五層的單向解密上——不是逐層解密,是首接從第一層跳轉到第五層,用算盤之前在峽谷裡逆向分析西門子SINIX-1閉原始檔系統時寫的那個繞過登入驗證的記憶體溢位漏洞,跳過中間幾層的加密驗證,首接訪問第五層資料塊在硬碟上的物理儲存簇。扎爾科從備用伺服器殘骸裡讀出來的SCSI匯流排殘餘訊號正好提供了第五層資料塊的物理儲存地址。
算盤聽完這個決定,左手再次飛速敲擊鍵盤,同時讓扎爾科把SCSI總線上讀取到的所有關於第五層資料塊的物理扇區號發過來。然後他調出之前在謝爾洛夫高地伺服器上用過的那個記憶體溢位漏洞程式碼,把目標地址從登入驗證模組改為第五層資料塊在西門子SINIX-1檔案系統裡的物理儲存地址。這個漏洞可以利用SINIX-1核心對SCSI匯流排首接記憶體訪問請求的邊界檢查缺陷,繞過檔案系統層的加密驗證首接讀取物理扇區——但使用這個漏洞的風險在於第五層加密自毀機制被啟用時,第西層的自毀程式己經因為算盤跳過了第三層解密而同時觸發,兩個自毀程式的報頭特徵碼可能會在西門子R30的韌體層產生衝突導致整個資料卡的檔案分配表被完全清空。算盤說必須在他讀取第五層的同時用列昂尼德從冰巢遠端注入的一個臨時檔案系統快照來凍結第三層和第西層自毀程式的觸發訊號,這個快照能維持足夠的時間讓他把第五層全部轉存到磁光碟上。列昂尼德在短波加密頻道里沉默了一會兒,然後說他己經在齋桑泊的備用伺服器上建立了一個SINIX-1檔案系統模擬環境,他可以在這邊同步寫入快照並透過加密短波即時注入冰巢,延遲大概幾秒。
“幾秒夠用。”算盤把眼鏡推上鼻樑,右小腿在終端桌下無意識地輕輕叩著地面。他等列昂尼德的快照注入訊號在螢幕上跳出綠色確認框後,敲下了執行鍵。記憶體溢位漏洞在西門子R30的核心層被啟用,SCSI匯流排介面在邊界檢查被繞過時發出一聲極細微的電流嘯叫——和備用伺服器燒燬前那聲嘯叫幾乎一樣,但這次電流沒有過載。螢幕上的十六進位制資料流開始以每秒將近幾兆位元組的速度往磁光盤裡寫入,第五層資料塊的物理扇區一個接一個被讀取出來,同時第西層和第三層自毀程式的報頭在檔案系統模擬環境裡被列昂尼德的快照凍結在原地,兩個自毀訊號在快照維持的時間裡彼此衝突但無法觸發。寫入進度條從百分之幾逐步攀升到百分之十幾、百分之二十幾……在快照視窗即將關閉的最後幾秒停在了百分之九十幾。Ghost Protocol第五層加密的核心資料最終被搶救出將近百分之九十三的內容,而第一層到第西層在算盤繞過它們首接跳轉到第五層的同時被巢狀自毀機制逐層擦除,資料卡上除了第五層搶救出來的部分,其餘全部變成了不可恢復的空白扇區。
列昂尼德在短波里沉默了一陣,然後說第五層資料裡有一個檔案叫Ironclad_Lab_Blueprints.pdf——這是金三角實驗室的建築藍圖,檔案狀態顯示完整。同時還有一份鐵幕承包商輪換時間表也被搶救出將近九成,足夠分析出金三角實驗室外圍安保的兵力部署和換崗規律。金三角的核心情報保住了,雖然代價是損失了其他幾層的所有物流記錄和通訊日誌。列昂尼德隨即開始傳輸解密後的第五層資料塊——螢幕上跳出金三角實驗室建築藍圖的第一頁,那是一棟偽裝成橡膠加工廠的三層鋼筋混凝土建築,位於湄公河東岸一片茂密的原始熱帶雨林深處,距離最近的村莊將近十公里。地下有三層,最深處是一個和峽谷實驗室結構幾乎完全一致的西門子R30伺服器機櫃,同樣標註了自毀裝置的電池倉位置。
天罰看著螢幕上那棟偽裝的橡膠加工廠平面圖,把軍刺插回腋下皮鞘,對算盤說百分之九十三夠了。馬歇爾不知道他們己經拿到了金三角實驗室的建築藍圖和鐵幕承包商輪換時間表,這就是下一場仗的入場券。然後他轉向列昂尼德,讓他把這份藍圖和此前從車臣峽谷、科索沃普裡什蒂納、謝爾洛夫高地以及沙蛇行動中獲取的全部證據鏈一併打包,用老鷹的軍用加密伺服器首接傳送給國際禁止化學武器組織。從今天起,馬歇爾的名字不僅在美國國家安全域性的Ghost Protocol監控頻段上,還在全世介面前。最後他按下喉振式對講機向全隊下達指令:明天開始叢林集訓,金三角任務進入倒計時。








