如何确定占用驱动器磁道的扇区?
我感兴趣的是找到“第一个逻辑驱动器轨道的最后 512 个字节”,以便根据以下信息确定驱动器是否使用 truecrypt 加密他们提供的规范。我只会在驱动器解密时运行此检查,因为我将作为我们系统的远程审核执行它。
任何帮助都将不胜感激。
谢谢,
马特
答案1
现代硬盘的磁道长度各异(越靠近中心的磁道所含的扇区越少),更重要的是,不可移动磁盘的物理几何形状(磁头数量、磁道数量等)不会像 20 世纪 80 年代那样暴露给外界。
TrueCrypt 手册中提到了“逻辑驱动器轨道”或“逻辑几何”。这是完全不同的东西。正如我之前所说,所有现代 HDD 和 SSD 都只向外界公开扇区(没有轨道或其他任何东西)。扇区按线性方式寻址:#0、#1、#2……这称为 LBA(逻辑块寻址)。
但曾经有一段时间,LBA 标准还很新(20 世纪 90 年代中期),人们习惯通过 IBM 于 1980 年为第一台 IBM PC 发明的旧接口 (CHS) 访问硬盘。CHS 允许通过指定柱面、磁头和扇区来读取/写入磁盘上的扇区。由于 IBM PC BIOS 的限制,柱面必须在 0..1023 范围内,磁头必须在 0..255 范围内,扇区必须在 1..63 范围内(即使在今天也是如此)。扇区按磁道分组(每个磁道由 C 和 H 寻址)。所有这些都与物理磁盘几何形状无关,它只是访问 LBA 磁盘的另一种方式,这就是它被称为“逻辑几何形状”的原因。
并不是很多数据都可以通过 CHS 来寻址:512 字节/扇区 * 63 个扇区 * 256 个磁头 * 1024 个磁柱 < 8 GB。因此,CHS 只是一种兼容性手段,当更大的硬盘上市时,它很快就被废弃了。Windows 98 过去是通过 LBA 访问硬盘的,这是肯定的。DOS 6.22 和 Windows 3.11 使用 CHS。我不确定 Windows 95 是否也使用 CHS。
因此,如今所有硬盘都具有最大数量的逻辑磁头(256)和每磁道扇区(63)。因此,第一个“逻辑磁道”只是一组硬盘扇区 #0 .. #62。从 DOS 到 Windows XP,所有操作系统都习惯于在此“第一个逻辑磁道”之后的扇区 #63 处创建第一个分区,从而导致 4Kb 扇区硬盘出现错位和运行缓慢。Vista/Win7/Win8 彻底消除了这种问题:现代 FDISK 创建的所有分区都是 1Mb 对齐的。
因此,TrueCrypt 手册仅指 LBA 扇区 #62(或从偏移量 31744 开始的 512 字节块)。但在某些 CHS 每磁道扇区值小于 63(极不可能)的奇特 BIOS 上,这可以是从 #1 到 #62 的任何扇区(扇区 #0 是 MBR)。我见过一些 2000 年代中期的 BIOS,它们曾经将每磁道 32 个扇区分配给 USB thumdrive(不是固定 HDD)。