寻找幻数确定文件类型

问题描述 投票:0回答:4

可以从幻数文件中确定文件类型吗?

如果我已经理解,幻数可以有不同的大小,也许参考字典或类似图书馆的东西可以帮助我?

c file types magic-numbers
4个回答
1
投票

可以从幻数文件中确定文件类型

是的,你可以,因为每种文件格式都有不同的幻数。

例如FFD8用于.jpg文件

看到这里Magic Numbers in Files


0
投票

Linux上的file命令正是如此。研究它的内部结构,看看它如何使用魔术数字(签名字节)识别文件。完整的源代码可在darwinsys.com/file获得。

以下2个列表是最全面的文件类型及其魔术数字: - File Signature Table - Linux Magic Numbers


0
投票

JmimeMagic是一个java库


0
投票

使用libmagic(在Ubuntu系统上使用apt-get install libmagic-dev)。

下面的示例使用默认魔术数据库来查询在命令行上传递的文件。 (基本上是文件命令的实现。有关更多详细信息/函数,请参阅man 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;
    }

}
© www.soinside.com 2019 - 2024. All rights reserved.