Magika 压缩包识别完整指南:如何用一条命令确认文件真实格式
【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika
同事发来一个后缀是 .zip 的压缩包,你双击打开却提示"格式不正确"。看后缀,又说不准它到底是 zip 还是 tar,更不确定内容有没有被动过手脚。怎么快速确认文件到底是什么格式?Magika 压缩包识别就是干这个的:一条命令,告诉你文件的真实格式和置信度,再也不用靠后缀猜。
跑通第一个识别
安装只有一行,pip 和 pipx 二选一即可,只用命令行的话 pipx 更干净:
pip install magika装完直接就能用,不用额外下载模型、不用配任何东西:
$ magika example.zip example.zip: Zip archive data (archive)左边是文件,中间是内容类型描述,右边是大类(archive 归档、image 图片、code 代码……)。整个过程毫秒级,比你手动敲回车还快。
它到底怎么认出来的
三种输入方式怎么选
- 单文件:把路径直接传给命令即可;
- 递归扫目录:加 -r 参数,把整个目录树走一遍,适合一次处理一批压缩包;
- 流式输入:传一个短横线,从标准输入读数据,适合接在管道后面。
$ magika -r /path/to/archives/ /path/to/archives/a.zip: Zip archive data (archive) /path/to/archives/b.tar: POSIX tar archive (archive)$ cat archive.zip | magika - -: Zip archive data (archive)输出里都有什么字段
每条结果都带这几个字段,写脚本完全够用:
| 字段 | 说明 | 示例 |
|---|---|---|
| path | 文件路径 | example.zip |
| label | 内容类型唯一标识 | zip |
| description | 人类可读的描述 | Zip archive data |
| mime_type | 标准 MIME 类型 | application/zip |
| score | 模型置信度 | 0.83 |
实现上是一个高度优化的 Keras 深度学习模型,推理端跑在 ONNX Runtime 上,模型文件只有几 MB,单文件识别在纯 CPU 上约 5 毫秒。前面"一条命令、秒出结果"的感觉就是这么来的。想深入了解可以看模型说明。
它认得哪些压缩包格式
常见归档格式全都覆盖,完整列表有 200 多种内容类型,这里只列压缩相关的:
| 格式 | label | 说明 |
|---|---|---|
| ZIP | zip | 最常见的压缩格式 |
| TAR | tar | POSIX 标准归档 |
| GZ | gzip | Gzip 压缩数据 |
| BZ2 | bzip | bzip2 压缩数据 |
| RAR | rar | RAR 归档数据 |
| 7Z | sevenzip | 7-Zip 压缩数据 |
官方在超过 100 万个真实文件上做评估,模型在各类内容类型上的精确率和召回率都在 99% 以上。日常使用可以把这个数字理解为"基本可靠"。
进阶用法:三个值得记住的
--json 输出,接脚本用—— 要把识别结果交给下游程序时,JSON 最稳定:
$ magika example.zip --json [ { "path": "example.zip", "result": { "status": "ok", "value": { "output": { "label": "zip", "mime_type": "application/zip" }, "score": 0.83 } } } ]什么场景用:写自动化的压缩包预检脚本,先用 JSON 判定格式,再决定用哪种解压策略。
--format 自定义格式串—— 支持 %p(路径)、%d(描述)、%m(MIME)、%S(百分制置信度)等占位符:
$ magika --format "文件: %p, 类型: %d, 置信度: %S%" example.zip 文件: example.zip, 类型: Zip archive data, 置信度: 83%什么场景用:生成一份"文件格式审计报告",直接贴进工单或群消息,不用再手动整理。
看一眼 score,留点余地—— 批量扫描时,个别结果拿不准的,加 -s 参数把置信度打出来,低于 0.8 的再人工确认。日常大多数文件用不上这条,但它能帮你快速筛出"模型自己也没把握"的那几个。
文件管理、安全扫描、批量数据处理,只要工作流里有一步是"我需要知道这个文件到底是什么",都可以交给它:入库前批量确认格式再分流,扫描时先判断真实类型再决定是否打开,避免被伪装成压缩包的恶意文件坑到,或者递归扫完一个目录、输出 JSON 直接喂给后面的流水线。一句话,把它当成你流水线里一个随叫随到的"文件是什么"回答机就行。
【免费下载链接】magikaFast and accurate AI powered file content types detection项目地址: https://gitcode.com/GitHub_Trending/ma/magika
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考