我最近有点软盘保护漫游。这可能是一段时间以来有关软盘的最后一篇文章,那么,结束这些事情比描述我在研究BBC Micro光盘保护过程中遇到的天才之处要好得多吗?
在我以前的文章中,我们已经(直接或切向)介绍了一些有趣的软盘保护方案:
弱位。 [链接:弱位软盘保护:8位上的替代起源故事]。 "弱位"保护是使磁盘表面的一块区域没有磁通量过渡。如果没有信号,软盘驱动器本身将提高其放大器的增益并看到噪声,这表现为从磁盘上不确定的数字读取。
模糊位。 [链接:技术文档-《地牢大师与混沌反击-对Atari ST软盘的详细分析》。 "模糊位"保护是指以不符合时序预期的间隔(例如MFM)记录磁通量跃迁的位置。通过使用恰好在一对期望值(例如5us而不是期望的4us或6us)中间的间隔,可以使磁盘控制器返回不确定的数字读取。
长/短轨道。 [链接:将400英镑的BBC Micro(1981)变成4万美元的光盘刻录机(1987)] [参见" Capabilities Unlocked"部分]。远距离保护是在磁通过渡处写入比预期速度快一点的地方。这可能是整个轨道,也可能只是轨道的一部分。在任何一种情况下,该轨道似乎包含比正常情况下更多的字节。之所以可行,是因为软盘控制器通常具有宽的比特率容限,以适应以不同速度自然旋转的磁盘驱动器。
现在,我们将完全覆盖其他内容,并提供一些我认为很聪明的独特属性。
很难找到任何西方安全有限公司。与BBC Micro相关的公司。那么我们怎么知道这样的事情存在呢?有两个原因。首先,在开发我的beebjit [link]模拟器时,我犯了很多错误并且有很多错误。在努力进行准确的软盘仿真时-为了加载受保护的原始光盘映像-我遇到了这个问题:
当然,这里的原始作者错过了一个有趣的案例。光盘有故障(否),它是非法副本(不是真的吗?)或错误的模拟器。这是另一个错误屏幕。也许是保护方案的早期版本?该消息使用" disk"而不是"光盘"并且不接受光盘可能有故障的事实:
(这有很大的风险,这是另一个屏幕快照。这与Western Security Ltd.没有关系,但是遵循磁盘保护的加载器发生故障时专用屏幕的模式。这种情况很有趣,因为在那里是从普通视图中隐藏的整个不错的图像!)
我们知道Western的第二个原因是来自光盘复制器标记。光盘复制器标记是一些商业光盘复制解决方案所写的特殊磁道。它通常是普通光盘结束后的一个磁道,即光盘的第41磁道或第81磁道。尽管“超出范围”,但大多数磁盘驱动器仍将寻找至少一条超出范围的磁道。在轨道上,您通常会找到一个扇区头,以及一个带有CRC错误的扇区主体。这是一种不寻常的构造,并且会突出显示,例如,当我的Discbeast程序[链接]查看Jolly Jack Tar光盘时:
复制器标记中嵌入了一个日期和一个或两个文本字符串。 Jolly Jack Tar实例是:
我们看到了另一种与西方安全相关的不太常见的复制标记字符串,例如Sherston Software的Tens和Units。它似乎是早期的原型版本:
在深入探讨西方安全保护的工作原理之前,让我们回顾一下磁盘保护的基本原理。细节有些细微差别,但总的原则很简单:
光盘必须相对易于读取。如果标准光盘控制器无法读取该光盘,则您将无法出售该光盘,因为客户将无法加载该光盘!
使光盘难以写入的正确方法是,仔细了解消费者的光盘控制器芯片和光盘驱动器,并使其无法使用标准套件进行写入。
BBC Micro光盘保护之旅并没有遵循这一路线-早期的光盘以及许多后来的光盘都是奇特的,但使用标准的光盘控制器创建起来并不是特别困难。但是您确实需要一个特殊的程序。软件公司有其特殊的母版制作程序,而客户则没有,因此从某种意义上说,光盘是“硬”的。来写。但是随后,出现了诸如Disc Duplicator 3之类的通用复制程序,并且突然间光盘变得“容易”。如果您或朋友有高级光盘复制程序,则可以进行写操作。
但是,一些BBC Micro的先驱确实编写了无法播放的光盘。用标准的光盘控制器写的,最值得注意的是:
[1]磁盘控制器的主要工作之一是写入精确的磁盘表面,即从不写入弱位。但是,在现代时代,我确实找到了一种诱骗Intel 8271控制器写入弱位的方法。据我所知,这种技术并不是在今天发现或使用的。
[2]通过一些巧妙的编程,我相信可以使用标准的磁盘控制器来写入扇区之间的数据。这将涉及多次写入磁道并在关键的时序关头重置光盘控制器。不过,我没有看到任何试图复制此类光盘的历史性光盘复制程序。
这里没有什么异常之处。末尾的红色块表示具有1个扇区的轨道,该轨道具有CRC错误。它不是光盘保护的一部分;它是复制标记。绿色代表标准的行业布局,没有特别奇特的外观。 " D"表示存在已删除的扇区。这是光盘保护,但不是特殊保护或难以复制。但是,使用Western Digital WD1770软盘控制器和-log disc:commands将光盘加载到我的beebjit仿真器中会产生非常不寻常的结果:
信息:光盘:1770:命令$ E4 tr 1 sr 3 dr 1 cr $ 29 ptrk 1 hpos 1884
命令$ E4是"读轨道"。它不用于光盘加载的正常操作,或者实际上不用于任何其他已知的受保护的加载器。
现在该花些时间穿过装载机了,看看发生了什么事。这篇文章的目的不是要详细介绍装载机的所有弯角。像许多受保护的加载程序一样,它已被加密。或更准确地说,是模糊的。它使用多层自我修改来模糊自身。在PC $ 0657,设置了光盘调用以从磁道9中已删除的扇区中加载更多的加载器。这很容易造成混淆,因为它是保护的范围,但事实并非如此。稍后,在PC $ 3CF7处出现一个循环:
不能仅从这个片段(没有所有子例程)中清除它,但是这里发生的是一个遍历1-8个磁道的循环。对于每个磁道,将对其进行完全读取,并将磁道的长度存储在$ 3F71的表中。后来,在PC $ 3CB6,将对照位于$ 3D9B的表检查这些长度。这项检查特别有趣。为了通过复制保护,需要对每个轨道长度进行计数,该轨道长度应在期望值的+ -1之内,并且该计数必须为7或8。立即我们可以看到,这种保护不是一种精确的技术。这是可以预料的:光盘是其下方的模拟存储介质,并且在磁道的开头或结尾会有一点噪音。从读取到读取,同一张光盘,驱动器和控制器可以而且确实看到磁道长度略有变化。查看beebjit中的负载,这是遇到的长度与预期的长度。 (0x4A == 3122字节。)
可以看出,我的光盘读取的数据几乎完全符合预期,但磁道2为3125字节,而不是预期的3124字节。该值在+ -1范围内,因此所有8条磁道都通过了检查(要求7条或更多条记录)。
清楚地说,受保护的加载程序期望包含1-8的磁道的磁道长度(以FM编码的字节为单位)为3122、3124、3123、3122、3123、3124、3123、3122。这是一个令人难以置信的水平1985年技术的写作准确性和准确性。在旋转的磁盘上,每个字节大约占64us,但是那个时代的磁盘驱动器通常会将运行RPM变量指定为小于-1.5%的RPM。在300rpm时,每旋转+ -1.5%是+ -3ms!以我的经验,驱动器比这要好得多,但仍然如此! 1985年的技术如何应对?
关于WD1770与Intel 8271光盘控制器的进一步说明。我们将分析重点放在了WD1770所看到的保护上。该光盘还可以很好地与Intel 8271控制器一起装载。在这种情况下,它使用完全不同的代码路径间接计算磁道长度。之所以起作用,是因为直到磁道末尾的填充字节都是0x00,而不是通常的0xFF。过度阅读使用磁道上最后一个扇区之后,磁道长度通过从读取0x00变为0xFF来检测。
然后我们意识到了该方案的天才。如果他们没有该技术,就不能以极高的精度编写曲目该怎么办?如果他们只是以任意方式编写了曲目,然后检查了结果怎么办?我认为这是他们所做的:
格式化光盘。 (就是这样。只需对光盘进行正常格式化,就可以创建受保护良好的光盘。)
在每个磁盘的基础上,生成,混淆并把所需的预期轨道长度表写入轨道9的加载器中。
真是个把戏!即使使用那个时代的专用硬件,也很难复制这些光盘。实际上,此技巧非常巧妙,以至于需要我们重新审视光盘保护的基础知识。这是我们之前的声明:
但是Western Security Ltd.的保护非常容易编写-只需格式化光盘即可。所以也许我们应该说:
Western Security防护易于编写,易于阅读,但很难复制。这种保护措施的优点之一是,如果经济因素对您有利,那么您可以使用家用计算机廉价地编写它。就是说,我见过的许多光盘似乎具有通常在昂贵的光盘复制机中发现的复制器标记。
我们如何支持我们的理论?一种方法是找到第二张同名的光碟《巫师的复仇》,看看它是否有所不同。我确实找到了,而且确实如此。上面的光盘:
可以看出,磁盘的扇区数据(由CRC32覆盖)与磁道9相同,而磁道9是预期磁道长度表所在的位置。轨道长度本身是不同的。在这两种情况下,轨道长度都摆动,而在后一种光盘的情况下,轨道都稍长一些。这意味着格式化光盘的驱动器以稍慢的RPM运行,从而使一圈写入更多的字节。
还有第二种方法来支持该理论。我只是问西蒙·霍斯勒(Simon Hosler)是否记得任何东西,西蒙·霍斯勒(Simon Hosler)早在1980年代就写了很多Sherston Software游戏。他回忆说,
" Western Security –这不是我的系统,但我认为它的工作原理是这样的……之所以有效,是因为每个磁盘驱动器的运行速度略有不同。因此,当驱动器在磁盘上创建轨道时(在添加所有标头和扇区等之后),它有一定的空间可以填充,因此添加了一些额外的“填充”位,它们什么都不做。填充位数将取决于原始格式化驱动器的确切速度。因此,如果将其复制将有所不同。我记得这个系统很麻烦,因为磁盘驱动器一直在变化(?)。 [...]系统被称为''"
商业复制器如何处理这些光盘仍然是个谜。我遇到的一件事是对" Freeform"的引用脚本[链接],与跟踪复制器一起使用。我还没有找到此脚本语言的手册。混淆后,加载程序的内存中有一些奇怪的片段;可能相关吗?
3F80:54 70 00 41 44 44 20 20 20 20 20 72 00 4D 4F 56 Tp.ADD r.MOV 3F90:45 54 4F 20 20 74 00 55 4E 49 54 20 20 20 20 75 75 ETO t.UNIT u 3FA0:00 54 52 41 43 4B 20 20 20 76 00 53 45 43 54 4F .TRACK v.SECTO 3FB0:52 20 20 77 00 54 4F 50 54 52 41 43 4B 78 00 55 R. w.TOPTRACKx.U
我碰巧有两个非常不同的光盘驱动器,所以我想尝试一下。我在每个驱动器中格式化了一张光盘,然后查看了由实际BBC Micro模型B中的WD1772光盘控制器回读的磁道长度(以字节为单位)。
[...]轨道1扇区10长度3137固定1 CRC32 67F0950E轨道2扇区10长度3138固定1 CRC32 67F0950E轨道3扇区10长度3138固定1 CRC32 67F0950E轨道4扇区10长度3139固定1 CRC32 67F0950E轨道5扇区10长度3138固定1 CRC32 67F0950E轨道6扇区10长度3140固定1 CRC32 67F0950E轨道7扇区10长度3140固定1 CRC32 67F0950E轨道8扇区10长度3139固定1 CRC32 67F0950E轨道9扇区10长度3140固定1 CRC32 67F0950E轨道10扇区10长度3140修补程序1 CRC32 67F0950E [...]
[...]轨道1扇区10长度3119固定1 CRC32 67F0950E轨道2扇区10长度3119固定1 CRC32 67F0950E轨道3扇区10长度3118固定0 CRC32 67F0950E轨道4扇区10长度3119固定1 CRC32 67F0950E轨道5扇区10长度3119固定1 CRC32 67F0950E磁道6扇区10长度3119固定1 CRC32 67F0950E磁道7扇区10长度3119固定1 CRC32 67F0950E磁道8扇区10长度3119固定1 CRC32 67F0950E磁道9扇区10长度3118固定1 CRC32 67F0950E磁道10扇区10长度3119修补程序1 CRC32 67F0950E [...]
这两个驱动器肯定具有独特的指纹!较旧的驱动器在各个磁道长度上会有更多的变化/摆动。实际上,似乎在以后的扇区中每个轨道都可以容纳更多的字节-后者的大多数轨道的长度为3142。较旧的驱动器通常也可以在每个轨道中容纳20个左右的字节。这意味着它的旋转速度稍慢。相比之下,较新的驱动器就像发条一样运转,磁道间差异最小。这可能会使它不太适合生成各种光盘指纹,但是在家庭计算硬件上复制光盘仍然很棘手-所使用的机器将需要具有类似精度的驱动器,并且该驱动器还必须具有以与制作原始光盘的驱动器完全相同的速度运行。
最后看一下轨道长度,这是Soft Doctor制作的Phantom Combat游戏光盘。该光盘使用Western Security Ltd.的保护:
[...]轨道1扇区10长度3152固定0 CRC32 67F0950E轨道2扇区10长度3152固定1 CRC32 67F0950E轨道3扇区10长度3152固定0 CRC32 67F0950E轨道4扇区10长度3152固定1 CRC32 67F0950E轨道5扇区10长度3151固定0 CRC32 67F0950E磁道6扇区10长度3152固定0 CRC32 67F0950E磁道7扇区10长度3150固定0 CRC32 67F0950E磁道8扇区10长度3151固定0 CRC32 67F0950E [...]
这是看不见的光盘保护。实际上,这8条受保护的轨道是100%默认格式轨道(CRC32 67F0950E)。扇区数正确,没有删除的扇区。 Discbeast会将这些轨迹显示为纯绿色,也就是。继续前进,这里什么也看不到!
磁道之间的磁道长度有些波动,但是磁道也异常长(理想的是3125字节)。尚不清楚是否故意将磁道放了很长时间,但这绝对有助于光盘保护。用于尝试重新创建这些轨道的任何磁盘驱动器都不太可能以该速度旋转,因为它的速度慢了0.8%,并且磁盘驱动器电动机技术通常要好于该速度。有趣的是,简单的长距离保护只是Western Security方案的另一个变体。
该光盘可能是由BBC Micro本身而不是精美的复制机写入的,这表明缺少复制器标记,并且游戏数据扇区显示出一次写入而不是跟踪扇区的事实。一次。谁知道呢,也许有人在故意寻找慢速行驶的机会。一些较旧的驱动器甚至具有可旋转的可变电阻器来改变电动机速度。
我们审核了为该机器发行的大多数受复制保护的光盘,从而查看了我发现的功能最强大的BBC Micro B型B光盘保护方案。它很聪明,因为您不需要专门的硬件来创建光盘或读取光盘。但是您将很难复制光盘。我的怀疑是,即使现代硬件(也许是Greaseweazle)也可能难以达到字节完美的精度,除非它与旋转非常稳定的高质量磁盘驱动器(例如我的Mitsubishi MF504C)配对使用。
就他所知,西蒙再次与他交谈,这是乔治·基林的工作,我很想与他联系,只是告诉他我认为这项工作很棒。