假设我发现“某个”文件(可能是可执行文件,可能是数据或其他文件),并且想要运行或读取它。我在文本编辑器中打开了此文件,但格式不可读。示例包括:Java类,Windows可执行文件,SQLite数据库,DLL,...

如果可以信任扩展名,我确实知道文件格式。

在某处一个站点或数据库,其中包含有关许多加密或二进制文件格式的大量信息?信息应包括:


文件使用情况
文件布局和结构
所以我我没有在寻找一种识别文件格式的方法。我已经知道文件格式,但是需要有关该格式的信息。什么时候使用格式(在什么应用程序中),格式的结构是什么?

评论

我想所有这些数据都是在野外分发的。我看不到有任何小组能够维护所有格式的所有规范的连贯集合。但是,我可能也很无知。 :)

因此,您有未记录格式的文件吗?我认为这个问题即使到现在仍然措词不明确。另外,关闭的地点是Wotsit和类似的网站。其他所有内容都可能是一个涵盖有关特定格式用途的领域知识的站点。

@ 0xC0000022l是的,我打算尽可能扩大问题范围,但这并不顺利。我目前没有要查看的特定示例文件,我只是想知道是否存在文件格式信息的中心。正如这个答案中提到的,Wotsit确实是一个非常好的。

我发现这个问题很有趣,但是,我现在可以想到的所有好的站点和库都已经提到过了,所以您实际上是否正在(由于赏金的缘故)正在寻找一种精确的方法?

@Ange Hachoir是到目前为止我所见过的最好的,但是,由于提到了很多事情,也许CW列表会更好。如果没有,我将使用赏金奖励现有答案。特别是Hachoir的东西似乎适合该IMO。

#1 楼

我是Hachoir项目的开发人员,该项目的目的是描述任何文件的格式直至位。目前,它具有许多著名格式的解析器,包括Java类,Windows可执行文件,MP3文件等。解析器的完整列表可以在此处的子目录中找到。

新的hachoir_parser解析器,通常需要查找有关文件格式的信息。没有描述每种格式的单一来源(即使Hachoir渴望成为这种来源,它也不够全面)。通常,第一步只是搜索<file format name> file format,例如java class file format,并在官方网站上查找文档(对于Java类,这将打开Oracle的文档,这应该是您所需要的全部)。如果没有官方站点,您仍然可以查阅过去使用过该格式的人的一些文档。

对于常见文件格式,这会使您需要大约90- 95%的时间。较大的软件公司,例如Oracle和Microsoft,在线发布其文件格式规范以实现互操作性。例如,通过浏览或搜索MSDN,可以找到PE(Windows EXE / DLL),MS Office格式(XLS,PPT,DOC)和其他Microsoft格式的文档。

对于多媒体格式,多媒体维基是一个很好的资源。它们还涵盖了一些游戏文件格式。

对于一种不太常见的文件格式,我在Googling中找不到规范(或合适的描述),因此我通常采用以下方法:能够理解文件的源程序,并且可以找到其格式说明源(如果在提交或自述文件中进行了描述),或者直接阅读其源代码以了解文件格式。

如果没有该文件的开源程序,也没有在线可用的在线文件格式描述,则该文件格式可能非常晦涩。对于游戏文件(许多开发人员坚持使用他们自己的专有格式),我发现XeNTaX提供了一些很好的指针和一个很好的社区来帮助确定格式。对于其他类型的格式,您可能必须开始检查样本以比较字节字段并阐明其功能。如果您有一个接受这些文件的程序,则可以尝试有条不紊地更改字段,以确定它们对程序输出的影响。这最终是“真正的”逆向工程工作,我认为这不在此答案的范围之内。

评论


我是Hachoir项目的忠实拥护者。我已经使用多年了。继续努力。

– alexanderh
13年4月8日在20:43

XentaX上的一个人还写了一个叫做QuickBMS的脚本/框架,这非常了不起。听起来对Hachoir可能有用。 aluigi.altervista.org/quickbms.htm

–亚当·巴克斯特(Adam Baxter)
13年8月19日在6:34

#2 楼

file(1)和基础libmagic(3)根据文件内容命令对文件进行指纹识别。例如:

$ file test.c
test.c: ASCII text
$ file test.exe
test.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit
$ file test
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.16, not stripped
$ file database.sqlite
database.sqlite: SQLite 3.x database


然后该信息可用于在Internet上搜索实际的标准RFC,...,


另一个资源可能是010编辑器二进制模板,其中包括许多不同的文件格式,您可以从头开始自定义或自行开发。


我有一本德语书籍称为Dateiformate(德语:文件格式)。


Wikipedia-文件格式列表包含许多链接,其中包含有关某些文件格式的信息

评论


如果这是答案,那么这个问题不是重复吗?我认为他想要一个包含文件格式规范的数据库。不只是魔术数字。

–彼得·安德森(Peter Andersson)
13年4月4日在15:38

究竟。您的答案很有用,但对问题没有答案。我确实知道文件格式,例如,我需要有关该格式的信息-文件的结构。

–user187
13年4月4日在15:57

你是对的。有点误解了这个问题。我只记得我在本地hackerspace的“库”中看到了一本文件格式很多的书。这是一本德语书籍,但也许有人可以找到英文版本。我更新了答案。

– Samuirai
13年4月8日在16:25

#3 楼

我喜欢用file从标头魔术和Wotsit来确定文件类型,以用于其他人的标准文件格式/文档/反向文件格式结构。
对于那些不喜欢Wotsit的人,建议使用Fileformat.info作为另一种资源或觉得它过时了。

评论


Wotsit并不是一个很好的选择:下载问题(立即生效!),组织不善的收藏集。

–user539484
13年4月5日在10:54

@ user539484:如果您不喜欢该组织,请使用带有G的某个搜索引擎的site:或inurl:运算符来使用高级搜索工具。

– 0xC0000022L♦
13年4月5日在17:05

@ 0xC0000022L,喜欢它对wotsit.org的帮助...它陷于1990年代。 fileformat.info集合对于读者来说几乎是一样广泛且友好。为了证明wotsit可能造成挫败感,我建议尝试从wotsit集合中获取与New Executable相关的出版物。

–user539484
13年4月5日在18:19

@ user539484-那么为什么不添加它呢?其他答案根本没有给您任何资源。只是“这是一种可以工作的工具”。

–RobotHumans
13年4月5日在19:01

@Call me V,fileformat.info已被列出。我也使用Wikipedia,有时他们的文件布局文章出奇的好和技术。

–user539484
13年4月5日在21:16

#4 楼

让我们解决文件格式问题维基百科涵盖了很多晦涩的格式,如果维基百科没有为您解决问题,则值得一试。这也是一个提供非常详细或晦涩的东西(维基百科可能认为超出范围)的好地方。

您可能会从图书馆和档案馆数字保存社区找到正在解决此问题的帮助或建议。自然多年。开放星球基金会是一个不错的起点。特别是,社区(我与之合作)在基于Github的Format Corpus上收集了困难或损坏的文件格式的示例。做出贡献有助于吸引专家的建议,当然,这有助于为数字保存工具的开发人员开发有用的资源(用于测试和验证)。文件必须是CC0!

最后,进一步探索的另一种途径是数字取证社区。例如,美国国家软件参考图书馆(National Software Reference Library)拥有一些有用的资源,这些资源可以帮助您应对挑战的边缘。

#5 楼

如果我理解正确,那么您需要识别该文件吗?
首先-扩展名不是100%保证该文件是假装的。您可以轻松地将binary.dll重命名为binary.dat或binary.hhh,并仍然创建文件关联或将其加载为DLL。

所以-要标识文件,您可以使用Marco Pontello的TrID。

-十六进制编辑器是查看流和各种转储的便捷方法。

当您识别文件时-Google会帮助您找到正确的方法来编辑\打开\执行文件。

评论


谢谢您介绍TrID,我不知道这么好的程序:)

–杰克荒地
13年4月4日在8:46

永远欢迎杰克:)

–丹尼斯·拉斯科夫(Denis Laskov)
13年4月4日在8:48

感谢您的答复,但我不必识别文件。我已经知道了格式(现在假设扩展名是正确的),但是需要有关该格式的信息-例如,文件的结构。

–user187
13年4月4日在15:58

然后,正如我所说,Google将帮助您为每种文件格式找到适当的RFC或详细信息。至于.DLL-除了PE标头的导出部分外,它的结构几乎与.EXE相似。

–丹尼斯·拉斯科夫(Denis Laskov)
13年4月4日在16:08

#6 楼

签出Hachoir项目。这正是您想要的。 Hachoir子文件很棒,因为您可以向其传递文件流,它将识别所有嵌入式文件类型,大小(如果可以计算)及其偏移。 Hachoir和dd是我最喜欢的两个从数据流中雕刻文件的工具。如果要运行ubuntu,请输入sudo apt-get install hachoir,然后运行hachoir-subfile <file_stream>

如果您需要更深入地研究流,可以使用hachoir-urwid。它将把文件分解成已知的结构。

评论


我看不到Hachoir在哪里提供有关特定格式的信息?它只是一个文件标识符。

–user187
13年4月8日在14:46

[免责声明:我是Hachoir的开发人员。] Hachoir以几种已知的格式解析文件,以显示文件内容的视图以及描述,以标识文件中的每个字段。 Hachoir的目标是深入了解文件。因此,Hachoir不仅用于文件标识,还可以进行字段提取,字段修改,并提供文件中每个字段的文字描述。

–nneonneo
2013年4月8日15:44



#7 楼

就像许多事情一样,如果您需要更多信息,维基百科就是答案。它仅包含某些格式的详细信息,但通常具有指向该格式的更深入的技术说明的链接。您可能不得不猜测文件格式将位于哪种文章下,但是在许多情况下,您可以(至少)找到有关许多较常见格式的良好信息。这不是理想的方法-也许这对于创建一个新的“文件格式” Wiki是一个有用的项目-但它确实具有相当数量的信息。

并非理想的来源数据,但就一站式资源而言,它是更好的选择之一,并且当然是一个不错的起点。

几个示例:


Java class File

便携式可执行格式-它本身没有格式,但是具有高级概述,并在“外部链接”部分提供了指向规范的链接
WAV文件格式
.3ds文件格式

ELF格式-这里也有一些很好的链接


#8 楼

恐怕还没有关于此主题的网站:(
根据我的经验,当您拥有文件但不知道文件类型的情况时,
的情况并不常见,但是当它发生时,可能是解决烦人且耗时的问题。
基本上,您需要使用十六进制编辑器来发现可能为您提供线索的字符,
并下载可疑文件类型的示例文件以对其进行分析并找到相似之处。
这种方法在大多数情况下对我有用。

评论


抱歉,我不清楚。我确实知道文件类型(基于扩展名),但是需要有关文件格式的信息才能读取或执行它。

–user187
13年4月4日在8:04

@CamilStaps因此,如果我理解正确,当您拥有文件(例如DLL)但不知道其目的(例如,正在使用哪个程序)时,您正在谈论这种情况?

–杰克荒地
13年4月4日在8:09

是的,那是那个特定文件的目的。因此,例如,我想看看该DLL文件的作用。因此,我需要有关文件格式的信息,而该信息不能提供足够的信息。

–user187
13年4月4日在8:21

要知道DLL文件的作用,您需要将其反汇编,就像其他任何二进制文件一样。 :)

–丹尼斯·拉斯科夫(Denis Laskov)
13年4月4日在8:35

我仅以DLL为例。我想知道当他需要有关文件格式的详细信息时,是否有一个标准的地方。

–user187
13年4月4日在15:59

#9 楼

关于多媒体格式:http://wiki.multimedia.cx/index.php?title=Main_Page

Signsrch将在文件中找到模式:http://aluigi.altervista.org/mytoolz.htm ,例如binwalk:http://code.google.com/p/binwalk/

评论


您可以在这里找到Amiga文件格式信息:lclevy.free.fr/amiga/formats.html,有关Canon Canon v2格式的信息:lclevy.free.fr/cr2,MO3格式(压缩模块):lclevy.free.fr / mo3

– LaurentClévy
13年4月6日在10:36

#10 楼

英国国家档案馆的DROID对识别文件格式也很有用。

评论


我已经确定了格式,我需要有关该格式的信息。

–user187
13年4月5日在6:19

DROID链接到pronom数据库(nationalarchives.gov.uk/PRONOM/Default.aspx)。 Wikidata是另一个选择,例如wikidata.org/wiki/Q2141903

–阮
16年11月10日在21:27

#11 楼

大多数文件格式都有标头,例如zip文件的P K 0x03 0x04或PNG文件的0x89 P N G 0x0D 0x0A 0x1A 0x0A

因此,大多数时候,您只需要读取第一个字节即可知道文件的格式。

您会在http://www.fileformat.info/format/all.htm

上找到许多文件格式说明

#12 楼

当我需要识别(大)转储中的文件格式或文件时,这就是我一直使用的工具。它有一个大的签名BD文件,您/您可以为该文件做出贡献。


Signsrch 0.2.4(signsrch)

用于在文件内部搜索签名的工具,非常有用在反向工程中很有用,用于确定专有协议或文件所使用的加密/压缩算法或对此有初步了解。它可以识别大量的压缩,多媒体和加密
算法以及许多其他功能,例如已知的字符串和反调试
代码,由于它们全部基于文本签名文件,因此也可以手动添加在运行时读取,易于修改。支持
多线程,使用通配符扫描文件夹,扫描
进程,转换内存偏移量中的可执行文件偏移量,加载自定义签名文件并自动检查
以避免错误,自动查找引用找到的签名的指令(例如Ollydbg的“查找引用”),并
启动可执行文件,将INT3字节放置在所需的内存中
偏移量(例如使用-F选项检索到的视频之一,请观看
视频示例)。该工具支持8、16、32和64位,浮点和双精度以及自动CRC表创建和C样式字符串。


来源:http:/ /aluigi.altervista.org/mytoolz.htm

评论


正如OP对五个类似答案的评论:无需识别,他已经知道文件类型是什么。

–杂件
16年8月27日在1:23

关键是要在以后帮助其他可能遇到相同问题的人。

–亚历山大·杜蒙(Alexandre Dumont)
16年8月28日在8:33