题
每个二进制文件都有一个与之关联的幻数,有谁知道如何从文件中检索此信息?
其他提示
file <file_name>
幻数通常存储在(Linux)的:
/usr/share/file/magic
也检查此链接,有人试图用libmagic获得在C程序中的信息,可能是有用的,如果你正在写自己的东西。
UNIX文件命令使用的幻数。看到文件手册页了解。(和在哪里可以找到magic文件)
阅读此: http://linux.die.net/man/5/magic
这是复杂的,并且依赖于你正在寻找的特定文件类型。
在简释@号的回答是:
实施例下面将使用默认的魔术数据库查询在命令行上传递的文件。 (本质上的实现文件的命令。参见人libmagic 更多细节/功能。
#include <iostream>
#include <magic.h>
#include <cassert>
int main(int argc, char **argv) {
if (argc == 1) {
std::cerr << "Usage " << argv[0] << " [filename]" << std::endl;
return -1;
}
const char * fname = argv[1];
magic_t cookie = magic_open(0);
assert (cookie !=nullptr);
int rc = magic_load(cookie, nullptr);
assert(rc == 0);
auto f= magic_file(cookie, fname);
if (f ==nullptr) {
std::cerr << magic_error(cookie) << std::endl;
} else {
std::cout << fname << ' ' << f << std::endl;
}
}
不隶属于 StackOverflow