凌晨三點,倉庫二樓的燈還亮著。
唐魁泡了一杯三合一速溶咖啡,擱在舊主機旁,屏幕藍光映得他眼神沉靜。窗外風刮得呼嘯,像夜色中有什麼東西正慢慢逼近。林澈打了個哈欠,揉揉眼楮,盯著顯示器上跳動的數據線。
“這函數調用數不對。”唐魁忽然低聲說。
“你說哪個?”林澈也警覺起來。
“就是你剛剛推送那段後端模塊,默認調用次數應為三十七次,但現在日志顯示已達九十一次。你看這堆棧路徑,從中間開始出現不明反向回調。”
林澈瞳孔一縮,迅速敲下幾行代碼,調出完整系統日志。在他屏幕上,幾十行紅字警示如火苗般跳躍——異常觸發回調,源地址異常,指令被劫持,強制訪問內存緩存區。
“是入侵。”他喃喃,“不是掃描,是有人故意反向注入。”
“別動系統,我來封口。”唐魁沉聲說,隨即雙手飛快地在鍵盤上起舞,一邊打開網絡流量分析器,一邊開始對內網數據包進行清洗。
五分鐘後,攻擊源頭的ip被追蹤到——南境創業園,同園區另一家小公司︰“鑫淵智控”。
林澈訝然︰“他們搞我們做什麼?”
“這叫‘反向技術盜用’。”唐魁冷笑,“他們上線的新版本,我們上周剛部署測試;他們知道自己寫不出這算法,想把我們做好的部分反編譯了拿去用。”
“他們瘋了?這是犯罪。”
“不——這是他們最擅長的游戲。”唐魁說完,起身,去辦公室找淨空。
半小時後,倉庫主控室里。
淨空坐在老舊木椅上,眉頭緊鎖。唐魁和林澈一左一右站著,把剛才的技術日志、ip追蹤路徑和異常調用曲線一一呈給他。
他看得極慢,仿佛在每個細節中尋找“動機”的線索。
“鑫淵智控。”他低聲念了一遍,“那家老做政府單的公司?辦公室就在我們樓下三層?”
林澈點頭︰“我今天下午還在共享茶水間見過他們的技術主管,一臉油光。”
“你確定不是誤判?”淨空望向唐魁。
唐魁苦笑︰“我三十年碼齡,這種事不會看錯。他們用了一個隱蔽算法,把我們模塊底層結構打散偽裝,但我寫過這部分代碼,連換行格式我都認得出來。”
“我們報園區還是報警?”林澈急切問。
“都不報。”淨空緩緩說。
唐魁抬頭︰“你要忍?”
“不是忍。”淨空搖頭,“是記。”
他從抽屜里抽出一份新的檔案表格,寫上“鑫淵智控”,在“行為備注”一欄寫下八個字︰“夜間注入,系統反用。”
林澈不解︰“就這麼算了?不怕他們再來?”
“他們下次會更小心,也更陰。我們報了警,他們只會銷毀證據,園區反而可能覺得是我們‘搞事’。”淨空低聲說,“留證、截圖、比對——這些資料到時候要比指責更有力。”
他沉默片刻,又道︰“別讓憤怒毀了我們的記錄系統。記下他們,比聲張更重要。”
唐魁點頭︰“好,我去把所有觸發日志轉存本地,再打印一份。”
林澈咬牙道︰“可我們什麼都不做,他們會以為我們怕。”
淨空看著窗外的夜色,“他們不是以為我們怕,而是怕我們做得比他們好。他們怕我們繼續活著。”
“我們不是危險,是讓他們看見了鏡子。他們才知道自己那麼差。”
這一晚,無聲收尾,卻留下濃墨重彩的伏筆。
第二天上午十點,唐魁發現又多了一封郵件。發件人是“園區安全監察組”,內容是︰
“貴公司近日代碼更新頻繁,請提供開發日志及許可證復印件,以備年度安全審核。”
林澈一眼掃過,笑得冷︰“他們不是舉報我們寫得不好,是舉報我們寫得太好。”
淨空點點頭︰“他們想借許可證做文章。”
“但我們系統有注冊登記號,也申報過試點資質。”唐魁說。
“問題在于,他們想讓我們把一切都交出來。”林澈冷笑,“否則就制造‘程序可疑’的口風。”
淨空沒說話,只走回桌前,調出園區發來的公函,然後打開一個新的文件夾︰“外部干擾歸檔”。
這是他新加的一個子項目,分類名稱︰“合法干擾行為分類表”。
唐魁盯著那些新建目錄,忽然輕聲問︰“淨空……你真覺得我們是走在正確的路上?”
淨空沒回頭,只說︰“我們不是走在路上,我們是在拿命刨路。”
唐魁點頭︰“那我願意當你手里的鐵鏟。”
中午時分,林澈將一份厚厚的系統架構圖交給淨空。“這是我們舊系統的邏輯骨架,我打算這周開始徹底重構,避免他們再趁虛而入。”
淨空翻了幾頁,贊許地說︰“很好。但別讓他們以為我們是在防他們,而是我們本就該這麼做。”
林澈點點頭,轉身回工位繼續畫圖。他剛打開ide,忽然手機震動了一下——是園區內部小道消息,發信人備注是“老胡”。
內容只有一句話︰“鑫淵智控昨晚的雲服務調用次數異常,今早被運營商臨時封號。”
林澈嘴角揚起︰“這回輪到他們睡不好覺了。”
當晚,淨空獨自在倉庫外的垃圾區坐了許久。冬夜的風又干又冷,他指尖凍得發紫。
他點了一根煙,低頭看著地上亂七八糟的紙殼和碎電線頭,忽然想起葉星曾經在編程課上說過一句話︰“我們不是為理解世界而寫程序,而是為了讓這個世界能讀懂我們。”
他低聲喃喃︰“如果他們看不懂我們寫的,那我們就寫得更徹底一點。”
煙頭快熄滅時,他寫下一條新的組織準則︰
“我們不反擊陰謀,只擴大光亮;不逃避污蔑,只清楚標注。”
深夜,燈火漸熄,系統仍在默默記錄。