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工具, 云安全监控, 内容检测, 子域名枚举工具, 客户端加密, 客户端加密, 数字取证, 数据挖掘, 文件格式分析, 文件签名, 文件类型识别, 系统管理, 网络信息收集, 自动化脚本, 静态分析, 魔术数字