-1

这是一个脑筋急转弯!

假设我们有 64 个字节,每个字节是 8 位加一个奇偶校验位

假设还有一个 LRC 校验字节(由所有 64 个字节按位异或形成)

所以我们可以把它想象成一个 8+1 x 64*1 的网格

如果一位被损坏,奇偶校验将标记它:一行将失败奇偶校验,还有一列。

因此,定位有问题的位并将其反转将是微不足道的。

但是,正方形排列中的四个损坏位将欺骗奇偶校验检查:因为每个违规行和列将包含 2 个错误,因此给出正确的奇偶校验读数。

但这是一个非常不可能的情况。

我的问题是:我将如何以这种方式修复数据集?可以修复多少?

我的直觉是必须有一些明智的方法来修复轻微损坏的数据集......

4

3 回答 3

1

64 字节,每个字节是 8 位加一个奇偶校验位 LRC 校验字节(由所有 64 字节按位异或形成)64 + 8 个字节将用作每个字节字 1 个奇偶校验位。所以每个块将有 64 个数据 + 9 个奇偶校验字节

LRC 会告诉您该块是坏的,如果该位不是块上的奇偶校验位(大假设。)您可以计算同理心,因为您知道哪个字节是坏的,您可以蛮力几个不同的位来纠正 lrc 和直到两者都匹配但作为单个 lrc 的字节仅告诉您,您有 1/256 的机会获得匹配的组合,您将获得一组满足“固定”标准的数学数据

如果您知道它是什么类型的文件,这将提高您的数据恢复机会。例如,如果您知道文件类型是文本,则字节 5 是大写或小写,并且任何不在字母数字和普通字符范围内的数字都可能被剔除。

所以是的,在技术上可以使用这样的模式将数据强制恢复原状。

如果您决定这样做,我建议您首先将其阻止为每 64 块 50 字节的数据。这为您留下 14 个字节的奇偶校验位来实现数学模型。14/64 接近 16/64 或块中涉及的字节的 1/4 仅用于救援目的。

1/4 的数据集会丢失,但会获得一些稳定性。在您的示例 9/71 中,使用了大约 13% 的数据。

我以前在数据恢复中曾对这样的强制数据集进行过暴力破解,但在大多数情况下无法确定您是否成功。

例如,如果您有一个 1 兆字节的文件,并说您对平价的同理心在 4 个方面受损。这是一个 MP4 文件,或严重受损的 zip 文件。

如果损坏限制为每块 1 位,您很可能可以修复文件。如果您说每个块有 2 位,您会知道每个块有 2 个区域被损坏,从而产生可能文件的 8 平方序列。您可以生成 64 个文件并尝试解压缩每个文件,但假设损坏是每块 3 位,现在您可能看到的是 8 立方。

用蛮力修复这样的事情是可能的,我在紧急情况下这样做了,但成功有限。

于 2013-04-11T21:40:09.447 回答
0

每列或每行单个位的二维奇偶校验修复不可修复,只是可检测到。

至于如何在数据集的 2 维中建立可修复的同理心以造成一定的损害……我曾经计算过,如果每个方向每 6 个字节有 1 个字节,则每个方向的单个位损坏都可以恢复数组。

研究一下,也许是 wiki raid 5 和 raid 6 架构。他们对分布在驱动器之间的扇区采用类似的方法。

于 2013-04-11T20:46:35.103 回答
0

我假设您的意思是 8+1 乘 64+1 网格。

假设其中一个非奇偶校验位已损坏。数据字节上的奇偶校验位将标记该字节。所有字节的奇偶校验将标记损坏的列(位)。都好。

假设“普通”数据字节的奇偶校验位之一损坏。额外奇偶校验字节的最后一位会标记它,不是吗?

假设奇偶校验字节的奇偶校验位之一损坏。额外奇偶校验字节的最后一位会标记它,不是吗?

那么该位的值是如何定义的呢?

于 2011-12-02T04:14:45.243 回答