如何修复二进制文件(在2000个可能的位置丢失大约10个十六进制值)?

时间:2015-10-31 04:41:30

标签: java python regex image binary

好吧,让我们假设一个文件有2000个\ x0A实例,其中10个实例直接以\ x0D开头。如果删除了任何\ x0D位,则文件不会解析。如果从文件中删除了\ x0D的所有10个实例,后面跟着\ x0A,是否可以将它们放回去?

可能有所帮助的一些事情:

如果找到\ x0D的第一个实例,图像(.gif或.png)将部分可见,如果您进一步找到第二个位置,则会显示更多图像,依此类推,但必须找到按顺序(从上到下)。

换句话说,您可以通过在文件中的\ x0A的每个实例之前放置\ x0d来技术修复文件,然后按顺序删除它们直到块被解决,并且更多的图像变得可见。一旦在正确放置之前清除所有额外的\ x0D位,图像就会改变。然后继续前进到下一个块,依此类推,直到找到所有的\ x0D。

例如

\x0D\x0A
\x0D\x0A
\x0D\x0A
\x0D\x0A
\x0D\x0A

应该是

x0A
x0A
\x0D\x0A
x0A
\x0D\x0A

如果您按顺序删除所有\ x0D位,则文件如下所示:

x0A
x0A
\x0D\x0A
\x0D\x0A
\x0D\x0A

图像将会改变,然后您可以向前跳过\ x0D \ x0A的一个实例并继续,直到发生另一个图像更改。

然而,测试每个位置需要时间,对于这个特定的图像意味着如果你保持良好的步伐并手动完成,你可以在大约6个小时内解决它。有没有办法写一个脚本来做到这一点?

这样可以恢复因在ascii模式下传输而损坏的.png和动画.gif文件。

在我的例子中,如果您可以测试每次争吵后图像是否发生变化,那么试验和错误就会起作用(只有当您获得正确的位置时才会发生变化(因为任何不正确的位置都会导致文件的其余部分无法读取)。 #39; d需要尝试2000次,每个位置一次并检测哪10个位置导致图像变化。

如果无法检查,你可以通过尝试所有组合(这需要多长时间)以及检查整个文件是否正确解析(以某种方式)来强制它。

这是示例(已损坏)文件,没有任何\ x0D \ x0A模式: http://i.imgur.com/aCp1hgp.gif

这是一个(第一个)位置解决了:

http://i.imgur.com/Kf0rRBR.gif

这是原始文件(正确放置10个\ x0D值):

http://i.imgur.com/jZqQgjW.gif

请帮我解决破损的ftp GIF的古老问题。这似乎是一个可行的过程。

带有3个GIF的zip文件(giphy是原创的,giphy 2解决了前2个位置,giphy3没有解决位置)

http://s000.tinyupload.com/?file_id=84665946797535126945

0 个答案:

没有答案