用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

ADVERTISEMENT

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

有人認得這是什麼嗎?

在80年代90年代,可是有不少寶貴的資料都是儲存在這樣的載體之中的,像是DOS版的仙劍奇俠傳1。

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

那,如果現在有一張儲存早年資料的磁碟片到了你手裡,你該如何解開其中的歷史秘密?在現在,你可能連讀取磁碟片的軟碟機都很難找到……如果有碰傷刮到,那就更麻煩

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

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

Greaseweazle F7 Plus

怎麼辦?他決心要想出一個全新的方法,搶救寶貴歷史程式碼。

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

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

這種做法,看得網友直呼太酷了。

人們如何進行資料考古學的研究和工作,因為這確實很酷,而且隨著舊媒體的陳舊和需要以某種方式進行保存,它似乎將有更大的需求。

手敲0和1,100%恢復古早惖程式碼

磁碟片通常以FSK調變的類比訊號的方式儲存資料。這裡面儲存的訊號,用的是最原始的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秒,該樣本為20秒):

恢復出來的資料,效果還不錯。

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

但上面這些,還只能用於資料比較正常的訊號。

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

磁碟片壞了怎麼辦?

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

先用MF504C磁片驅動器過濾一下雜訊:

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

好像效果不大。

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

據作者介紹,上面這些辦法100%可以恢復磁碟片中的資料。

除非真的出現了不可抗力。

例如,磁碟片的一部分被損壞得很徹底。

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

這種情況下,磁碟資料就徹底沒辦法恢復了。

所以,家裡有「上古寶物」的人,一定要保護好自己的磁碟!

關於作者

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

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

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

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

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

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

用示波器恢復磁碟片裡的遊戲,這種做法實在太硬派了!

最後的最後,你是否也對80年代的遊戲程式碼什麼樣子產生了好奇?Evans表示,這些恢復出來的源程式碼已經交給遊戲原作者,是否開源就要看原作者的意思了。

不過,這裡有從21張磁碟中被「搶救」出來的紅白機遊戲,程式碼已在GitHub上開源:https:// github.com/DickBlacksha 

bigdatadigest
作者

大數據文摘(bigdatadigest)成立於2013年7月,專注數據領域資訊、案例、技術,在多家具有影響力的網站、雜誌設有專欄,致力於打造精準數據分析社群。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則