在阅读另一个问题的答案时,提到“ 78 9C”是Zlib压缩数据的众所周知的模式。出于好奇,我决定在文件签名数据库中搜索签名,以查看是否有任何相关编号。它不在那儿。所以我检查了Gary Kessler的魔术数字列表,发现它也不存在。某种“我怀疑它是否可以工作,但也许”尝试(因为它可以与“ file”一起使用,因为它是有效的ZIP文件头,并且通常位于其他文件的中间。)但是这些尝试都没有透露我正在查看Zlib签名。

似乎大多数幻数数据库仅包含文件格式的幻数,而不包含用于区分文件中间数据的数字。因此,我的问题是:

是否有地方可以找到不是文件格式本身的某些类型的数据流的二进制签名列表?数据本身不是文件,而是文件内部。

提前感谢。

评论

仅供参考:78 9C序列本身并不是魔术,如果是,那将是固定的签名。 ZLib压缩文件的前两个字节包含标志,这些标志的设置需要正确的解压缩;某些配置比其他配置更常见。有关最常见的3种信息,请参见stackoverflow.com/questions/9050260/…,有关其含义,请参见RFC1950。我必须重新阅读RFC,但我认为这2个字节几乎可以具有任何值,并且仍然是有效的ZLib标头。

(添加。)考虑一种“目录”类型的文件,其中每个第一个长字表示下一个原始块的长度。对于人类来说很容易发现,但是对于计算机来说很难发现(除非特别告知)。

是的...我看了一下规范,以下字节的无效值似乎很少。的确,由于这些参考文件格式的存在,我并不是真的要把这些值称为幻数,这就是我称它们为“二进制签名”的原因。 (尽管我不确定%100还是正确的。)但是,有些签名可以是幻数,这就是为什么我使用幻数数据库进行初始检查的原因。同样,目录样式文件实际上是一个很好的例子。荣誉...!

完整的zlib流标头的完整集合:groups.google.com/d/msg/comp.compression/_y2Wwn_Vq_E/…

谢谢,伊戈尔(Igor)提供的链接-总是很高兴看到权威权威机构的答复。注意他的评论“ ..您将尝试进行减压..”,换句话说:“证明在布丁中”。如果找到这些魔术对中的任何一个,那么需要解码多少字节才能确定? (也就是说,除了“所有人”。;-)

#1 楼

您可能正在寻找Binwalk吗?尤其是其源代码的magic文件夹。

评论


整齐。快速grep显示该文件中的标头是Zlib。该工具本身看起来也很酷。谢谢。

–地衣
13年11月2日在21:06



代码已移至github.com/ReFirmLabs/binwalk请更新您的链接

– saeedgnu
9月2日19:51