使用示波器恢复软盘上的游戏。这程序员操作太硬核了。又该考(bao)考(lu)读(nian)历(ling)了。朋友,你知道这件事吗?在20世纪80年代和90年代,这样的载体中存放着很多宝贵的代码资料,比如仙剑1的DOS版本。那么,如果现在你手里有一张存储着古代代码的软盘,你该如何解开其中的历史秘密呢?它?要知道,今天,你可能很难找到读取软盘的设备……如果你再碰碰它,那就更糟了。近日,vsftpd的作者、谷歌零计划创始人克里斯·埃文斯遇到了这样一个问题:他和菲尔·彭伯顿在恢复几款保存在软盘上的古老游戏代码时,发现部分软盘出现了不同程度的损坏。已损坏,无法使用Greaseweazle等设备直接读取。△GreaseweazleF7Plus呢?老板决心想出一个新的计划来拯救珍贵的历史密码。设备也简单,用万能示波器就可以了。没错,就是那种用来测试电路和显示波形的仪器。恢复的游戏代码还能玩,界面清晰显示:这一波操作,网友直呼:数据考古别太爽了。手敲0和1,100%还原古密码。软盘通常以模拟信号的形式存储数据。这里存储的模拟信号采用了最原始的FM调制(频率调制)。也就是说,其中存储的信号0和1将分别由不同的波形频率表示。△代表00101100,以下波形为例。单位周期下,信号为0时,输出频率比较慢;而当信号变为1时,频率会突然变快。因此,只需要找到周期律就可以判断信号在一个周期内是代表0还是代表1。但是不能只看峰值来判断信号是否为1。比如这段时间出现了一个“假峰”,但是人工解读的结果还是0。因为这个峰其实是噪声,所以信号的整体趋势还是向下的,波形的频率没有变化在本质上。(但当信号为1时,波形会呈现一个完整的周期,起点和终点的值非常接近。)有网友给出了一个简单的判断方法:经过一个周期后,如果信号value变化很大,表示为0;如果信号值几乎没有变化,则表示为1。根据ChrisEvans的说法,代表0的正弦波信号的周期为8μs;代表1的正弦波信号的周期为4μs。在这种情况下,使用Greaseweazle等“现代设备”直接读取数据时就会出现问题。如果软盘中的数据由于各种外部原因(时间长、使用过度)而损坏,那么单靠机器是无法完成对噪声很大的数据的解释的。△就这样,一个扇区出现了问题,但人们很容易看出这些数据中的“规律性”,从而判断信号的状态。因此,使用示波器将软盘中传输的模拟信号显示出来,然后进行人工解读,会是一个更好的方法。于是埃文斯和彭伯顿将示波器直接接到软盘驱动器的测试点上,看看软盘输出的是什么信号。其中,输入信号会呈现一正一负两种波形,用于消除部分噪声。从各种“老式”软盘破译出的信号来看,难怪Greaseweazle设备读不出来……(连人都要仔细分辨一阵子)接下来,就是对这些神奇的波形进行处理了。Evans和Pemberton还使用Audacity处理模拟信号,以便更好地处理噪声和映射信号。Audacity是一款免费开源的音频分析编辑工具,可以快速放大查看波形,还具有多功能低通滤波器,以及直接绘图功能。此外,Audacity还支持CSV文件的导入。Evans和他的小伙伴们也利用这样的音频工具,想出了新的衍生游戏……比如把速度放慢100倍,听听软盘录制的声音(软盘每转一圈0.2秒,这个样本为20秒):软盘录音法。wav来自从qubit00:0000:28恢复过来的数据,效果还不错。但以上只能用于数据比较正常的信号。恢复软盘本身轻微损坏的信号变得更加困难。软盘坏了怎么办?如果软盘上有划痕,这部分的信号就会变得很模糊。这是Evans和Pemberton修复的其中一个凹痕的标志。很明显,在中间部分,信号幅度(图中信号的强度)损失很大,同时也有自己的噪点。一种方法是尝试几个不同的软盘驱动器。先用MF504C软驱滤除杂音:好像效果不大。换上另一个TEAC软驱后,显示的信号更强了,但强度还是很小:肉眼还是太难分辨了。考虑到这一点,Evans和Pemberton改用TEC软盘驱动器,后者性能要好得多,而且峰值变得更清晰可辨。除此之外,还有一种方法可以应对这种信号幅度的损失:手绘修复。由于峰缺失过多,强度低的问题只能通过人为修复和绘制部分峰信号来解决。然而,这些信号是可以修复的。据笔者介绍,以上方法可以100%恢复软盘中的数据。除非有不可抗力。例如,如果软盘的一部分完全损坏,则软盘上的数据根本无法恢复。所以,家里有“上古宝”的朋友们一定要保护好自己的软盘!关于作者本项目的作者之一是ChrisEvans,他是一位著名的黑客,也是最流行的Linux发行版FTP服务器程序vsftpd的作者。毕业于牛津大学,毕业后在甲骨文工作,后在谷歌工作9年。他是Chrome浏览器安全团队和谷歌黑客团队ProjectZero的创建者。据介绍,零项目团队由谷歌内部顶级安全工程师组成,其使命是在全球范围内发现高价值安全漏洞并彻底消除。2015年,特斯拉将黑客大师纳入麾下,领导安全工作。2016年,埃文斯离开了特斯拉。Evans还是漏洞赏金平台HackerOne创立的顾问。现在,据我哥自己说,他处于“半退休”状态。最后,你是不是也很好奇80年代的游戏代码是什么样子的呢?埃文斯表示,恢复的源代码已经交给了游戏的原作者。是否开源取决于原作者的意图。有兴趣的不妨追踪一下~不过之前Qubit也介绍过21的另一款游戏。从软盘中“救出”的红白机游戏,代码已经在GitHub上开源:https://github.com/DickBlackshack/Days-of-Thunder-NES-Unpublished/
