他毕业于牛津大学,毕业后进入甲骨文工作,其后又在谷歌工作了9年时间,是<em>Chrome</em>浏览器安全团队和谷歌黑客团队Project Zero的创建者。据报道,Project Zero团队由谷歌内部顶尖安全工程师组成,使命是找出全球范围内高
2021-05-23 14:31:25
魚羊 蕭簫 發自 凹非寺量子位 報道 | 公眾號 QbitAI
又到了考(bao)驗(lu)閱(nian)歷(ling)的時候了。
盆友,你可識得此物?
在80年代90年代,可是有不少寶貴的程式碼資料,都是儲存在這樣的載體之中的,比如DOS版的仙劍1。
辣麼,如果現在有一張儲存古早程式碼的軟盤到了你手裡,你該如何解開其中的歷史祕密?要知道,在今天,你可能連讀取軟盤的裝置都很難找到……
要是再磕了碰了,那就更完蛋了。
最近,vsftpd作者、Google Project Zero創始人Chris Evans大佬就遇到了這樣的難題:
在和Phil Pemberton一起恢復儲存在軟盤中的幾個古早遊戲程式碼時,他們發現,部分軟盤出現了不同程度的損壞,以致於直接用Greaseweazle這樣的裝置是無法讀取的。
△Greaseweazle F7 Plus
怎麼辦?大佬決心要搞出一個船新的方案,搶救寶貴歷史程式碼。
裝置也簡單,就用萬能的示波器。
沒錯,就是那種用來測試電路、顯示波形的儀器。
恢復出來的遊戲程式碼竟然還能玩,而且介面顯示清晰:
這波操作,看得網友直呼:資料考古不要太酷。
手敲0和1,100%恢復古早程式碼
軟盤通常以模擬訊號的方式儲存資料。
這裡面儲存的模擬訊號,用的是最原始的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秒):
軟盤錄音方式.wav來自量子位00:0000:28
恢復出來的資料,效果還不錯。
但上面這些,還只能用於資料比較正常的訊號。
對於軟盤本身有輕微損壞的訊號,想要恢復就變得更困難了。
軟盤壞了怎麼辦?
要是軟盤上有劃痕,這部分的訊號就會變得非常難以辨認。
這是Evans和Pemberton還原的其中一個凹痕的訊號,顯然中間那部分,訊號振幅(圖中訊號的強度)丟失得非常厲害,還自帶噪音。
其中一種方法是,多用幾種不同的軟盤驅動器試試。
先用MF504C軟盤驅動器過濾一下噪音:
好像效果不大。
換上另一個TEAC軟盤驅動器後,顯示的訊號更加給力了,但強度還是很小:
用肉眼分辨的話,難度還是太高了。
鑑於此,Evans和Pemberton又換上了TEC軟盤驅動器,效果好多了,峰值也變得清晰可辨。
除此之外,應對這類訊號振幅丟失的情況,還有另一種方法:手工繪製修復。
由於峰值缺失得實在太厲害,只能通過人為修復,繪製部分峰值訊號,來解決強度過低的問題。
但無論如何,這些訊號都可以被修復。
據作者介紹,上面這些辦法100%可以恢復軟盤中的資料。
除非真的出現了不可抗力。
例如,軟盤的一部分被損壞得很徹底
:
這種情況下,軟盤資料就徹底沒辦法恢復了。
所以,家裡有「上古寶物」的小夥伴,一定要保護好自己的軟盤!
關於作者
這個項目的作者之一,是最受歡迎的Linux發行版FTP伺服器程式vsftpd作者、著名黑客Chris Evans。
他畢業於牛津大學,畢業後進入甲骨文工作,其後又在谷歌工作了9年時間,是Chrome瀏覽器安全團隊和谷歌黑客團隊Project Zero的創建者。
據報道,Project Zero團隊由谷歌內部頂尖安全工程師組成,使命是找出全球範圍內高價值的安全漏洞,並將其徹底消除。
2015年,特斯拉把這位黑客大神攬入麾下,負責領導安全工作。2016年,Evans從特斯拉離職。
Evans還是漏洞賞金平臺HackerOne的成立顧問。
現在,據老哥自己說,他處在「半退休」狀態。
最後的最後,你是否也對80年代的遊戲程式碼長啥樣產生了好奇?
Evans表示,這些恢復出來的原始碼已經交給遊戲原作者,是否開源就要看原作者的意思了,如果你感興趣,不妨蹲個後續~
不過,此前量子位還介紹過另一個從21張軟盤中被「搶救」出來的紅白機遊戲,程式碼已在GitHub上開源:
https://github.com/DickBlackshack/Days-of-Thunder-NES-Unpublished/
相關文章
他毕业于牛津大学,毕业后进入甲骨文工作,其后又在谷歌工作了9年时间,是<em>Chrome</em>浏览器安全团队和谷歌黑客团队Project Zero的创建者。据报道,Project Zero团队由谷歌内部顶尖安全工程师组成,使命是找出全球范围内高
2021-05-23 14:31:25
跳动的总数和苹果、<em>安卓</em>的占比,称为一级元素。这里实时变化跳动的终端指数,在向我们传递出这样的信息:网站的数据是实时更新的,而不是一成不变的,保证了数据的实时性;同时,从这里展示了公司雄厚的实力和过硬
2021-05-23 14:31:07
平时我们也可以发现,我们使用的移动操作系统一般不是<em>安卓</em>系统就是苹果系统。根据相关数据统计,在我国的移动操作系统中,<em>安卓</em>系统占据的市场份额为68.63%,而苹果系统占据的市场份额则是30.99%。显然<em>
2021-05-23 14:31:02
在散热器的底部是TYPE-C接口的供电口,这也是目前最为流行的接口,和大多数的<em>安卓</em>手机通用。飞智蜂翼2Pro的正面是手机散热器通用的背夹,其拉伸的宽度最大可达89mm,能够兼容目前市面上绝大部分的手机。在卡扣及与
2021-05-23 14:30:41
此外还包括 7 台 <em>iPad</em>、7 台笔记本电脑、Switch 游戏机以及 Dell 4K 显示器。<em>iPad</em> 和笔电全部采用 Lightning或USB-C接口并支持 USB PD 快速充电。以上是充电头网评测室目前现有的硬件设备,目前充电
2021-05-23 14:30:29
近期,苹果发布了最新的 <em>iPad</em> Pro,根据官方介绍,这台 <em>iPad</em> Pro 搭载的是 M1 芯片。要知道,M1 芯片是苹果自研的,之前 M1 芯片都是用在 MacBook 上,这在用在 <em>iPad</em> Pro 上,那性能岂不是更强?但就是这
2021-05-23 14:30:11