駭客靠一台「示波器」,成功還原 20 多年前的磁片資料!

Oscilloscope

【為什麼我們要挑選這篇文章】七八年級生有使用 3.5 磁片的經驗,雖然它的容量只有 1.44 MB,但足以存當時的小遊戲,讓大家互相交流。20 年後的今天,有駭客想讀取磁片的資料,但磁片年代久遠已損壞,為了修復寶貴的檔案,於是他用「示波器」成功還原資料。他是怎麼操作的?(責任編輯:郭家宏)

本文經 AI 新媒體量子位(公眾號 ID:QbitAI)授權轉載,轉載請連繫出處
作者:量子位

又到了考(ㄆㄨˋ)驗(ㄌㄨˋ)閲(ㄋㄧㄢˊ)歷(ㄌㄧㄥˊ)的時候了。

朋友,你可識得此物?

在 80 年代 90 年代,可是有不少寶貴的程式碼數據,都是儲存在這樣的載體之中的,比如 DOS 版的仙劍 1。

那麼,如果現在有一張儲存古早程式碼的磁片到了你手裡,你該如何解開其中的歷史秘密?要知道,在今天,你可能連讀取磁片的設備都很難找到。

如果磁片撞傷了,那就更完蛋了。

最近,vsftpd 作者、Google Project Zero 創辦人 Chris Evans 大佬就遇到了這樣的難題:

在和 Phil Pemberton 一起恢復儲存在磁片中的幾個古早遊戲程式碼時,他們發現,部分磁片出現了不同程度的損壞,以致於直接用 Greaseweazle 這樣的設備是無法讀取的。

Greaseweazle F7 Plus

怎麼辦?大佬決心要搞出一個全新的方案,搶救寶貴歷史程式碼。

設備也簡單,就用萬能的示波器。

沒錯,就是那種用來測試電路、顯示波形的儀器。

恢復出來的遊戲程式碼竟然還能玩,而且頁面顯示清晰:

這波操作,看得網友直呼:數據考古不要太酷。

用示波器讀取磁片訊號,再透過人工判讀解碼

磁片通常以模擬信號的方式儲存數據。

這裡面儲存的模擬信號,用的是最原始的 FM 調製(頻率調製)。

也就是說,它所儲存的信號 0 和 1,分別會以不同的波形頻率表示。

這代表的是 00101100

以下面這段波形為例,單位週期下,在信號為 0 時,輸出的頻率是比較慢的;而當信號變成 1 時,頻率就會突然變快。

因此,只需要找到週期規律,就能判斷一個週期裡,信號代表的是 0 還是 1。

但也不能僅僅看峰值來判斷信號是否為 1。例如,在這個週期裡,就出現了一個「假峰值」,然而人工解讀的結果還是 0。

因為這個峰值其實是一個噪音,信號的整體趨勢仍然是下降的,波形的頻率本質上並沒有變化。(但信號為 1 時,波形會呈現一個完整的週期,起始點和終點的值是非常接近的)

有網友給出了簡單的判斷方法:一個週期過去,如果信號值變化很大,則代表 0;如果信號值幾乎不變,則代表 1。

據 Chris Evans 介紹,代表 0 的正弦波信號,是 8 μs 一個週期;而代表 1 的正弦波信號,則是 4 μs 一個週期。

這種情況下,用 Greaseweazle 等「現代設備」直接讀取數據,會出現一個問題。

如果磁片中的數據,由於各種外部原因(時間久遠、使用次數過多)出現了損壞,那麼僅憑機器,是無法從這些帶有大量噪音的數據中完成解讀的。

就像這樣,有一個扇區出現了問題

但人卻可以輕易看出這些數據中的「規律」,從而判斷信號的狀態。

因此,用示波器將磁片中傳輸的模擬信號展示出來,再由人工進行解讀,會是個更好的方法。

於是 Evans 和 Pemberton 將示波器直接連上了磁片驅動器的測試點,看看磁片到底都輸出了些什麼信號。

其中,輸入信號會呈現一正一負兩個波形,用來消除一部分雜訊。

從各種「年代久遠」的磁片解讀出的信號來看,難怪 Greaseweazle 這些設備讀不出來(連人也得仔細分辨一會兒)

接下來,就是處理這些神奇的波形了。

為了更好地處理噪音、繪製信號圖像,Evans 和 Pemberton 還用上了 Audacity 來處理模擬信號。

Audacity 是一個免費開源的音頻分析和編輯工具,能夠快速放大和檢查波形,還具有多功能低通濾波器,以及直接繪圖的功能。

另外,Audacity 也支持 CSV 文件的導入。

Evans 和他的小夥伴還利用這樣的音頻工具搞出了新的衍生玩法,例如將速度放慢 100 倍,聽一聽磁片記錄的聲音(磁片每轉一次時間為 0.2 秒)

恢復出來的數據,效果還不錯。

但上面這些,還只能用於數據比較正常的信號。

對於磁片本身有輕微損壞的信號,想要恢復就變得更困難了。

磁片壞了,就需要驅動器的協助

要是磁片上有劃痕,這部分的信號就會變得非常難以辨認。

這是 Evans 和 Pemberton 還原的其中一個凹痕的信號,顯然中間那部分,信號振幅(圖中信號的強度)丟失得非常厲害,還自帶噪音。

其中一種方法是,多用幾種不同的磁片驅動器試試。

先用 MF504C 磁片驅動器過濾一下噪音:

好像效果不大。

換上另一個 TEAC 磁片驅動器後,顯示的信號更加給力了,但強度還是很小:

用肉眼分辨的話,難度還是太高了。

鑒於此,Evans 和 Pemberton 又換上了 TEC 磁片驅動器,效果好多了,峰值也變得清晰可辨。

除此之外,應對這類信號振幅丟失的情況,還有另一種方法:手工繪製修復。

由於峰值缺失得實在太厲害,只能透過人為修復,繪製部分峰值信號,來解決強度過低的問題。

但無論如何,這些信號都可以被修復。

據作者介紹,上面這些辦法 100% 可以恢復磁片中的數據,除非真的出現了不可抗力的因素,例如:磁片的一部分被損壞得很徹底:

這種情況下,磁片數據就徹底沒辦法恢復了。

所以,家裡有「上古寶物」的小夥伴,一定要保護好自己的磁片!

神人身分:曾被特斯拉延攬的知名駭客 Chris Evans

這個專案的作者之一,是最受歡迎的 Linux 發行版 FTP 伺服器程式 vsftpd 作者、著名駭客 Chris Evans。

他畢業於牛津大學,畢業後進入甲骨文工作,其後又在 Google 工作了 9 年時間,是 Chrome 瀏覽器安全團隊和 Google 駭客團隊 Project Zero 的建立者。

據報導,Project Zero 團隊由 Google 內部頂尖安全工程師組成,使命是找出全球範圍內高價值的安全漏洞,並將其徹底消除。

2015 年,特斯拉把這位駭客大神攬入麾下,負責領導安全工作。2016 年,Evans 從特斯拉離職。

Evans 還是漏洞賞金平台 HackerOne 的成立顧問。

現在,據老哥自己說,他處在「半退休」狀態。

最後的最後,你是否也對 80 年代的遊戲程式碼長啥樣產生了好奇?

Evans 表示,這些恢復出來的原程式碼已經交給遊戲原作者,是否開源就要看原作者的意思了,如果你感興趣,不妨蹲個後續。

不過,此前量子位還介紹過另一個從 21 張磁片中被「搶救」出來的紅白機遊戲,程式碼已在 GitHub 上 開源

參考資料

Security》、《Y Combinator

(本文經 AI 新媒體量子位 授權轉載,並同意 TechOrange 編寫導讀與修訂標題,原文標題為 〈用示波器恢复软盘里的游戏,这个程序员大神的操作太硬核了 〉。首圖來源:Wikimedia Commons CC Licensed

延伸閱讀

用 21 張「磁片」還原 30 年前未曾發行的紅白機遊戲,這群超狂遊戲玩家還真辦到了
【童年回憶】還記得史萊姆的第一個家嗎?創站 23 年並沒有關站!現在還在更新 ^_^
【老婆,我買的是最佳發明】PS 5、《動森》、Xbox Series S 都上榜!《TIME》公布「年度百大最佳發明」


訂閱《TechOrange》每日電子報!

每天一早,需要來根知識能量棒? TechOrange 與你一起,吸收世界新知識、消化科技新局勢。點我訂閱電子報 ,取得最新深度報導。

點關鍵字看更多相關文章: