-1

我设法使用十六进制编辑器从 cd-rom bin 文件中提取了一个扇区。根据 cd-rom 规范,扇区应具有以下格式: * 16 字节用于同步和标题 * 8 字节用于子标题 * 2048 字节用于用户数据 * 4 字节用于 EDC,恰好是应用于用户的 CRC32数据和子标题。

我在以下文档的第 55 页找到了有关此问题的详细信息:https ://ia800408.us.archive.org/4/items/cdi_may94_r2/cdi_may94_r2.pdf

我想手动修改扇区中的用户数据,但为此我还必须重新计算 EDC。(如果 EDC 结果为阳性,我假设 ECC 会被忽略)

但是,在修改任何内容之前,我想检查我是否同意我的部门对给定的 CRC32。但是,我不能。这就是问题所在。

这是我的 2352 字节扇区: https ://drive.google.com/open?id=1CYAInG8TYMyRMOgR1zeooUrLK5CR7cmM

EDC 部分具有以下 CRC32 结果:92 54 48 44(十六进制)

但是当我自己使用 HxD 十六进制编辑器重新计算 CRC32 时,我得到:55 32 CA 62

为什么我得到不同的结果?我尝试在自定义 CRC32 部分更改输入/输出反射,但没有任何效果。我已经坚持了一个小时,在谷歌上找不到任何东西。

4

1 回答 1

0

我将回答我自己的问题,因为我终于找到了答案:
CRC32 使用了不同的多项式。

典型的正向/反向值是:0x04C11DB7 / 0xEDB88320
我的 cd-rom 使用的正向/反向值:0x8001801B / 0xD8018001

因此,如果您想在 HxD 十六进制编辑器中手动重新计算 CRC32,则需要使用具有以下设置的手动 CRC:

*多项式:0x8001801B
*初始值:0
*输出异或:0
*检查输入和输出反射。

虽然 CDmage 可以自动完成这一切。

最后,所有这些都对我没有帮助,因为仿真器没有在 EDC/ECC 字节上提供飞翔的金鱼。我应该知道的。

在我的扇区中稍微更改了一些与文本相关的字节后,我注意到磁盘映像无法再加载,因此立即假设 EDC/ECC 字节是负责任的。真正的原因可能在于某处的软件。

于 2018-02-17T20:19:19.433 回答