【发布时间】:2016-03-20 17:34:49
【问题描述】:
我目前正在从事一个项目,该项目涉及阅读file 的魔法文件(没有绑定)。我想知道如何以另一种语言(如 Go)直接从编译的二进制文件 magic.mgc 读取文件测试,因为我不确定应该如何解释其内容。
【问题讨论】:
-
原则上,你可以:
file的来源是online,并且不会做任何你无法重新实现的事情,man magic描述了它正在尝试做的事情。用于生成magic.mgc的text source 也在线,可能更容易解析。不过,这距离真正帮助您做到这一点还有很长的路要走。 -
感谢您的评论,@twotwotwo。一开始,我想找到一种方法来使用现有的
.mgc文件,而不是自己编译它。不过,如果事实证明这是不可能的,我想我不得不哈哈。 -
看起来这是实际的 .mgc 编译器和解析器,大约 70kb 和 3000 行:github.com/file/file/blob/master/src/apprentice.c——逆向工程并非完全不可能,但看起来很痛苦(例如,@987654331 @ 在内部确实做了很多匹配类型)。顺便说一句,golang.org/src/net/http/sniff.go 中有一个非常简单的嗅探器
-
我没见过
sniff!file源代码确实很复杂。请参阅我在文件邮件列表中从 Christos Zoulas 本人那里得到的答案。感谢您的帮助!