file/file
GitHub: file/file
Unix 标准文件类型识别命令及 libmagic 库,通过魔数检测数千种文件格式的真实类型。
Stars: 1560 | Forks: 432
## file(1) 命令和 libmagic(3) 库的 README
```
@(#) $File: README.md,v 1.5 2023/05/28 13:59:47 christos Exp $
```
- Bug Tracker:
- Build Status:
- 下载链接:
- 邮箱:
- Fuzzing 链接:
- 主页: https://www.darwinsys.com/file/
- 邮件列表存档:
- 邮件列表:
- 公共仓库:
- 测试框架:
电话:想都别想打电话给我讨论这个程序。先把
现金寄过来!
这是 Ian Darwin 的(受版权保护但可分发)file(1) 命令的 5.x 版本,是 Unix File(1) 命令的一个实现。
它知道数千种文件类型的“magic number”。
此版本是 Linux、*BSD 和其他系统的标准“file”命令。(确切版本号请参见“patchlevel.h”)。
5.x 的主要变化包括 CDF 文件解析、间接 magic、name/use(递归)以及对 mime 和 ASCII 编码处理的重构。
4.x 的主要特性是将代码重构为一个库,并基于该库重写了 file 命令。库本身,即 libmagic,可以被希望识别文件类型的第三方程序使用,而无需 fork() 和 exec() file 命令。4.0 的主要贡献者是 Mans Rullgard。
UNIX 是 UNIX System Laboratories 的商标。
版本 3.8 的主要贡献者是 Guy Harris,他进行了大量修改,包括字节序独立性。
版本 3.0 的主要贡献者是 Christos Zoulas,他提交了数百行源代码修改,包括他自己对代码的 ANSI 化(我更喜欢我自己的 ANSI 化,但他 (__P()) 是“Berkeley 标准”的做法,而且我希望 UCB 包含这些代码……),他类似 HP 的“间接”特性(我认为这是 HP file 命令的一个特性),以及他的修改最终完成并使 uncompress (-z) 模式正常工作。
此版本已在众多环境中编译通过;有关列表和问题,请参阅 PORTING。
这个优秀的免费软件 file(1) 遵循 file 命令的 USG (System V) 模型,而不是 Research (V7) 版本或 V7 派生的 4.[23] Berkeley 版本。也就是说,文件 /etc/magic 包含了作为该程序力量源泉的大量仪式性信息。我的版本比 System V 知道更多的 magic(包括 tar 归档);/etc/magic 解析似乎与(文档贫乏的)System V /etc/magic 格式兼容(有一个例外;请参见手册页)。
此外,/etc/magic 文件是从子目录构建的,以便于(?)维护。我将作为在合理范围内流通的各种数据文件分配 magic number 的信息交换中心。请将您的 magic number 以 magic(5) 格式发送给维护者 Christos Zoulas。
COPYING - 请先阅读此文件。
* `README` - 请第二个阅读此文件(您当前正在阅读此文件)。
* `INSTALL` - 阅读如何安装
* `src/apprentice.c` - 解析 /etc/magic 以学习 magic
* `src/apptype.c` - 用于 OS/2 特定应用程序类型的 magic
* `src/ascmagic.c` - 第三组也是最后一组测试,基于硬编码假设。
* `src/asctime_r.c` - 针对没有此功能的操作系统的替代品。
* `src/asprintf.c` - 针对没有此功能的操作系统的替代品。
* `src/buffer.c` - 缓冲区处理函数。
* `src/cdf.[ch]` - Microsoft Compound Document Files 解析器
* `src/cdf_time.c` - CDF 的时间转换器。
* `src/compress.c` - 处理解压文件以查看内部内容。
* `src/ctime_r.c` - 针对没有此功能的操作系统的替代品。
* `src/der.[ch]` - Distinguished Encoding Rules 解析器
* `src/dprintf.c` - 针对没有此功能的操作系统的替代品。
* `src/elfclass.h` - elf 32/64 的通用代码。
* `src/encoding.c` - 处理 Unicode 编码
* `src/file.c` - 主程序
* `src/file.h` - 头文件
* `src/file_opts.h` - 选项列表
* `src/fmtcheck.c` - 针对没有此功能的操作系统的替代品。
* `src/fsmagic.c` - 程序运行的第一组测试,基于文件系统信息
* `src/funcs.c` - 实用函数
* `src/getline.c` - 针对没有此功能的操作系统的替代品。
* `src/getopt_long.c` - 针对没有此功能的操作系统的替代品。
* `src/gmtime_r.c` - 针对没有此功能的操作系统的替代品。
* `src/is_csv.c` - 了解逗号分隔值文件格式 (RFC 4180)。
* `src/is_json.c` - 了解 JavaScript 对象表示法格式 (RFC 8259)。
* `src/is_simh.c` - 了解 SIMH 磁带文件格式。
* `src/is_tar.c, tar.h` - 了解磁带归档格式(由 John Gilmore 提供)。
* `src/localtime_r.c` - 针对没有此功能的操作系统的替代品。
* `src/magic.h.in` - magic.h 的源文件
* `src/mygetopt.h` - 针对没有此功能的操作系统的替代品。
* `src/magic.c` - libmagic API
* `src/names.h` - ascmagic.c 的头文件
* `src/pread.c` - 针对没有此功能的操作系统的替代品。
* `src/print.c` - 打印结果、错误、警告。
* `src/readcdf.c` - CDF 包装器。
* `src/readelf.[ch]` - 独立的 elf 解析代码。
* `src/softmagic.c` - 第二组测试,基于 /etc/magic
* `src/mygetopt.h` - 针对没有此功能的操作系统的替代品。
* `src/strcasestr.c` - 针对没有此功能的操作系统的替代品。
* `src/strlcat.c` - 针对没有此功能的操作系统的替代品。
* `src/strlcpy.c` - 针对没有此功能的操作系统的替代品。
* `src/strndup.c` - 针对没有此功能的操作系统的替代品。
* `src/tar.h` - tar 文件定义
* `src/vasprintf.c` - 针对没有此功能的系统的替代品。
* `doc/file.man` - 命令的手册页
* `doc/magic.man` - magic 文件的手册页,由 Guy Harris 提供。
在 USG 上安装为 magic.4,在 V7 或 Berkeley 上安装为 magic.5;参见 Makefile。
## Magdir - /etc/magic 片段目录
如果您提交新的 magic 条目,请务必阅读以下
指南:
- 初始匹配最好至少 32 位长,并且是_唯一_匹配
- 如果这不可行,请使用附加检查
- 不接受 <= 16 位的匹配
- 尽可能延迟打印字符串,不要过早打印输出
- 避免将任意字节作为字符串 printf,这可能是崩溃和缓冲区溢出的来源
- 提供条目的完整信息:
* 一行简短摘要
* 可选的详细描述
* 文件扩展名(如适用)
* 全名和联系方式(用于在条目出现问题时进行讨论)
* 进一步参考,例如格式的文档
## gpg 小白指南:
```
$ gpg --verify file-X.YY.tar.gz.asc file-X.YY.tar.gz
gpg: assuming signed data in `file-X.YY.tar.gz'
gpg: Signature made WWW MMM DD HH:MM:SS YYYY ZZZ using DSA key ID KKKKKKKK
```
下载密钥:
```
$ gpg --keyserver hkp://keys.gnupg.net --recv-keys KKKKKKKK
```
本软件的某些部分是在 SoftQuad Inc. 开发的,该公司是
位于加拿大多伦多的 SGML/HTML/XML 出版软件开发商。
SoftQuad 于 2002 年被 Corel 吞并,已不复存在。
标签:Awesome, BSD, C语言库, file命令, libmagic, Linux系统工具, MIME类型, Unix工具, 云安全监控, 内容检测, 子域名枚举工具, 客户端加密, 客户端加密, 数字取证, 数据挖掘, 文件格式分析, 文件签名, 文件类型识别, 系统管理, 网络信息收集, 自动化脚本, 静态分析, 魔术数字