从LQ电脑拿到那本《磁盘机加密原理》后,又让我读得入迷了。 A6ipA/_
PD$XLZ
感觉过去加密盘的东西,一下子弄明白了。 J'^H@L/E
lx*"Pj9hho
1. 额外的磁道:5吋盘正常是40道,0-39,但是所有的软驱都可以读写第41道,42就不可靠了。3.5吋盘是80道,但是都可以读写82道,83就极不可靠了。因此,有些程序会将部分数据写在标准磁道外(实际上0道是最外圈,额外的都在最内部)。 2[f8"'lUQ
i? 5jl&30
2. 非标准扇区:正常的扇区都是512字节,用代码02表示,但是也可以格式化为1024、2048、256etc,甚至可以将整条磁道格式化为只有一个超级大的扇区(太大了读错的机会会更大)。这也是一种常用的方式。 H59}d
oKH
z{:T~s
3.道缝/扇缝加密:这应该是软盘加密的终极方案。实际上没有道缝,因为步进电机是固定的。它都本质上都是扇缝。当格式化时,需要提供一个DAP表,表示了格化化条件参数,每道多少扇区,每扇区多大。格式化时,每条磁道上的所有扇区都是定长的。诀窍在于:每个扇区还有自己的参数表需要写入扇区数据区前面的信息块,这里面的数据包括[道号、面号、扇区号],还有一个最特别的数据是扇区长度。不是都是定长吗?为何还需要这个?怪就怪在这里!这个扇区实际大小是在磁道参数表中固定的,但是在扇区信息块中这个值是可以任意填写的。读这个扇区时,必须提供跟这个信息块完全相同的数据块,否则“Sector not found”会等着你。 所以这种加密方式是:格式化时在磁道参数表中提供了一个标准数据,但在扇区信息块中却给出了一个不同的数据。e.q. DAP中声明02(512字节),但是扇区信息块中却声明为03(1024字节)。当读该扇区时,如果指定用02读,扇区找不到,如果用03读,可以读出1024字节,可是实际上只有512啊!于是乎,它读出了下一扇区的信息块,所以会100%地出现CRC校验错误。这就是它的原理。 yO Ed8
/Am,5X.
磁道的真正格式如下: ZN>oz@jY
0<*R 0
Sect1 信息区[标志-同步信息[n个F6]-CRC校验值]--扇区数据区[标志-同步信息[n个F6]-数据开始标志-数据区[2^n 格式化为F6]-CRC校验值]-Sect2[....] ---Sect n[.....] 9bvz t8pc
Z$
!>hiz2