游戏|用示波器恢复软盘里的游戏 这个程序员大神的操作太硬核了
又到了考(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等“现代设备”直接读取数据 , 会出现一个问题 。
如果软盘中的数据 , 由于各种外部原因(时间久远、使用次数过多)出现了损坏 , 那么仅凭机器 , 是无法从这些带有大量噪音的数据中完成解读的 。
推荐阅读
- 游戏|知名“受苦”游戏《艾尔登法环》获IGN满分评价:45家媒体无一给出差评
- 主机游戏|一战封神!《艾尔登法环》多家媒体给出满分:历史第一
- 游戏|《艾尔登法环》IGN 10分:FS社最具野心的作品
- 游戏|边玩游戏边赚钱、投资游戏装备?完美世界发布声明:谨防上当
- 发动机|三缸机的“病” 为何要用四缸机来治?
- PC游戏|《艾尔登法环》新活动:授予获奖者爵位、苏格兰土地
- 熊孩子|熊孩子用打火机玩火烧毁私家车 监控曝光:点燃了隔音棉
- 拍卖|曾拍出8千万的游戏卡再现法拍平台:已绝版、全球限量500张
- 游戏|《艾尔登法环》开启预载 Steam预载容量48.25GB
- 华硕|华硕天选3游戏本开箱图赏:140W满血3060 双显三模
