如何在Windows中从未知格式的二进制文件中提取ASCII数据?

6

在Windows上,将一个内部结构未知但内容是ASCII的二进制文件转换回纯文本的最佳方法是什么?

理想情况下,转换应该产生一个“人类可读”的版本。我认为文件应该包含类似以下内容:

Date: 10 FEB 2010
House: 345 Dogwood Drive
Exterior: Brick

请解释“转换”一词。您是否需要进行无损转换,以便可以撤消该操作?您是否需要提取某种可读的人类描述? - Joachim Sauer
你编辑问题的方式看起来像是想让程序有效地逆向工程格式。我相信在目前这个时候这是不合理的,除非你将自己限制在所有二进制数据的一个非常小的子集中。 - Joachim Sauer
2个回答

21

在Linux/Unix系统中:

$ strings < unknown.dat > ascii-from-unknown.txt

当然,这并不算是一种“转换”,而只是通过过滤非ASCII字节来进行直接提取。虽然很常用,但通常情况下,如果没有更多地了解文件的内部格式,你也不能做得更好。


我加上了你,因为忘记添加Windows操作系统是我的错误。再次感谢你的所有帮助。 - JustADude
1
还有 Windows 版本的字符串。例如:http://technet.microsoft.com/en-us/sysinternals/bb897439.aspx - shf301
它会查找所有字符串中的“N”个相邻可打印字符,因此自己实现并不太困难。 - Martin Beckett

1

根据您想要实现的目标,十六进制转储可能是最适合的选择:它是一种纯ASCII格式,可以表示整个文件而不会丢失任何数据(但空间利用率相当低效)。

它并不是真正的人类可读格式,但由于您没有解释为什么要这样做,这是我能提供的最好的建议。

在Windows上有几个简单的工具可以生成十六进制转储。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接