又到了考(bao)驗(yàn)(lu)閱(nian)歷(ling)的時(shí)候了。
在80年代90年代,可是有不少寶貴的代碼數(shù)據(jù),都是存儲(chǔ)在這樣的載體之中的,比如DOS版的仙劍1。
辣么,如果現(xiàn)在有一張存儲(chǔ)古早代碼的軟盤(pán)到了你手里,你該如何解開(kāi)其中的歷史秘密?要知道,在今天,你可能連讀取軟盤(pán)的設(shè)備都很難找到……
要是再磕了碰了,那就更完蛋了。
最近,vsftpd作者、Google Project Zero創(chuàng)始人Chris Evans大佬就遇到了這樣的難題:
在和Phil Pemberton一起恢復(fù)存儲(chǔ)在軟盤(pán)中的幾個(gè)古早游戲代碼時(shí),他們發(fā)現(xiàn),部分軟盤(pán)出現(xiàn)了不同程度的損壞,以致于直接用Greaseweazle這樣的設(shè)備是無(wú)法讀取的。
怎么辦?大佬決心要搞出一個(gè)船新的方案,搶救寶貴歷史代碼。
設(shè)備也簡(jiǎn)單,就用萬(wàn)能的示波器。
沒(méi)錯(cuò),就是那種用來(lái)測(cè)試電路、顯示波形的儀器。
恢復(fù)出來(lái)的游戲代碼竟然還能玩,而且界面顯示清晰:
這波操作,看得網(wǎng)友直呼:數(shù)據(jù)考古不要太酷。
▍手敲0和1,100%恢復(fù)古早代碼
軟盤(pán)通常以模擬信號(hào)的方式存儲(chǔ)數(shù)據(jù)。
這里面存儲(chǔ)的模擬信號(hào),用的是最原始的FM調(diào)制(頻率調(diào)制)。
也就是說(shuō),它所存儲(chǔ)的信號(hào)0和1,分別會(huì)以不同的波形頻率表示。
△這代表的是00101100
以下面這段波形為例,單位周期下,在信號(hào)為0時(shí),輸出的頻率是比較慢的;而當(dāng)信號(hào)變成1時(shí),頻率就會(huì)突然變快。
因此,只需要找到周期規(guī)律,就能判斷一個(gè)周期里,信號(hào)代表的是0還是1。
但也不能僅僅看峰值來(lái)判斷信號(hào)是否為1。例如,在這個(gè)周期里,就出現(xiàn)了一個(gè)“假峰值”,然而人工解讀的結(jié)果還是0。
因?yàn)檫@個(gè)峰值其實(shí)是一個(gè)噪音,信號(hào)的整體趨勢(shì)仍然是下降的,波形的頻率本質(zhì)上并沒(méi)有變化。(但信號(hào)為1時(shí),波形會(huì)呈現(xiàn)一個(gè)完整的周期,起始點(diǎn)和終點(diǎn)的值是非常接近的)
有網(wǎng)友給出了簡(jiǎn)單的判斷方法:一個(gè)周期過(guò)去,如果信號(hào)值變化很大,則代表0;如果信號(hào)值幾乎不變,則代表1。
據(jù)Chris Evans介紹,代表0的正弦波信號(hào),是8μs一個(gè)周期;而代表1的正弦波信號(hào),則是4μs一個(gè)周期。
這種情況下,用Greaseweazle等“現(xiàn)代設(shè)備”直接讀取數(shù)據(jù),會(huì)出現(xiàn)一個(gè)問(wèn)題。
如果軟盤(pán)中的數(shù)據(jù),由于各種外部原因(時(shí)間久遠(yuǎn)、使用次數(shù)過(guò)多)出現(xiàn)了損壞,那么僅憑機(jī)器,是無(wú)法從這些帶有大量噪音的數(shù)據(jù)中完成解讀的。
△就像這樣,有一個(gè)扇區(qū)出現(xiàn)了問(wèn)題
但人卻可以輕易看出這些數(shù)據(jù)中的“規(guī)律”,從而判斷信號(hào)的狀態(tài)。
因此,用示波器將軟盤(pán)中傳輸?shù)哪M信號(hào)展示出來(lái),再由人工進(jìn)行解讀,會(huì)是個(gè)更好的方法。
于是Evans和Pemberton將示波器直接連上了軟盤(pán)驅(qū)動(dòng)器的測(cè)試點(diǎn),看看軟盤(pán)到底都輸出了些什么信號(hào)。
其中,輸入信號(hào)會(huì)呈現(xiàn)一正一負(fù)兩個(gè)波形,用來(lái)消除一部分噪聲。
從各種“年代久遠(yuǎn)”的軟盤(pán)解讀出的信號(hào)來(lái)看,難怪Greaseweazle這些設(shè)備讀不出來(lái)……(連人也得仔細(xì)分辨一會(huì)兒)
接下來(lái),就是處理這些神奇的波形了。
為了更好地處理噪音、繪制信號(hào)圖像,Evans和Pemberton還用上了Audacity來(lái)處理模擬信號(hào)。
Audacity是一個(gè)免費(fèi)開(kāi)源的音頻分析和編輯工具,能夠快速放大和檢查波形,還具有多功能低通濾波器,以及直接繪圖的功能。
另外,Audacity也支持CSV文件的導(dǎo)入。
Evans和他的小伙伴還利用這樣的音頻工具搞出了新的衍生玩法……
比如將速度放慢100倍,聽(tīng)一聽(tīng)軟盤(pán)記錄的聲音?;謴?fù)出來(lái)的數(shù)據(jù),效果還不錯(cuò)。
但上面這些,還只能用于數(shù)據(jù)比較正常的信號(hào)。
對(duì)于軟盤(pán)本身有輕微損壞的信號(hào),想要恢復(fù)就變得更困難了。
▍軟盤(pán)壞了怎么辦?
要是軟盤(pán)上有劃痕,這部分的信號(hào)就會(huì)變得非常難以辨認(rèn)。
這是Evans和Pemberton還原的其中一個(gè)凹痕的信號(hào),顯然中間那部分,信號(hào)振幅(圖中信號(hào)的強(qiáng)度)丟失得非常厲害,還自帶噪音。
其中一種方法是,多用幾種不同的軟盤(pán)驅(qū)動(dòng)器試試。
先用MF504C軟盤(pán)驅(qū)動(dòng)器過(guò)濾一下噪音:
好像效果不大。
換上另一個(gè)TEAC軟盤(pán)驅(qū)動(dòng)器后,顯示的信號(hào)更加給力了,但強(qiáng)度還是很小:
用肉眼分辨的話,難度還是太高了。
鑒于此,Evans和Pemberton又換上了TEC軟盤(pán)驅(qū)動(dòng)器,效果好多了,峰值也變得清晰可辨。
除此之外,應(yīng)對(duì)這類(lèi)信號(hào)振幅丟失的情況,還有另一種方法:手工繪制修復(fù)。
由于峰值缺失得實(shí)在太厲害,只能通過(guò)人為修復(fù),繪制部分峰值信號(hào),來(lái)解決強(qiáng)度過(guò)低的問(wèn)題。
但無(wú)論如何,這些信號(hào)都可以被修復(fù)。
據(jù)作者介紹,上面這些辦法100%可以恢復(fù)軟盤(pán)中的數(shù)據(jù)。
除非真的出現(xiàn)了不可抗力。
例如,軟盤(pán)的一部分被損壞得很徹底:
這種情況下,軟盤(pán)數(shù)據(jù)就徹底沒(méi)辦法恢復(fù)了。
所以,家里有“上古寶物”的小伙伴,一定要保護(hù)好自己的軟盤(pán)!
編輯:jq
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8216瀏覽量
146242 -
噪音
+關(guān)注
關(guān)注
1文章
169瀏覽量
23900 -
軟盤(pán)
+關(guān)注
關(guān)注
0文章
20瀏覽量
10402 -
csv
+關(guān)注
關(guān)注
0文章
38瀏覽量
5819
原文標(biāo)題:太硬核了!大神用示波器恢復(fù)軟盤(pán)里的游戲
文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論