TAR 归档检查器
读取 tar 归档内部的 512 字节头部,在你解包之前就把完整清单摆出来:每个条目的路径,它是文件、目录、符号链接还是硬链接,Unix 权限位的 rwx 与八进制两种写法,属主和属组的名称与数字,大小、修改时间,以及链接指向何处。它处理的是 tar 实际会写出的各种格式,而不只是最简单的那一种:老式 v7、带 155 字节前缀字段的 POSIX ustar、GNU 的长文件名头,以及用 UTF-8 值覆盖定宽字段的 PAX 扩展头——超过 255 字节的路径和带小数的时间戳能保留下来,全靠 PAX。每个块的头部校验和都会验证,因此损坏的文件或根本不是 tar 的文件会被拒绝,而不是生成一份看起来煞有介事的胡乱清单;在头部中间被截断的归档也会被指出,而不是悄悄按短清单列出。解包之前先看一眼的理由在于:tar 条目可以指定你所在目录之外的路径。以斜杠开头的条目、含有 .. 的路径、指向绝对路径的符号链接,都可能把文件丢到你没打算的位置。GNU tar 会去掉前两种并给出警告,但其他语言里的解包代码往往不会。这些都会被标出,解包后散落成多个顶层条目、把内容洒满你工作目录的归档同样如此。全部在浏览器中运行,归档不会被上传。
使用方法
- 把 .tar、.tar.gz 或 .tgz 文件拖到方框里,或点击选择。gzip 压缩的归档会先在浏览器中解压。
- 看格式那一行,确认是哪一支 tar 写出来的——v7、ustar、gnu 还是 pax——这决定了哪些字段可信。
- 在表格中找到你关心的条目:权限和属主的显示形式与 tar -tv 的输出完全一致。
- 解包之前先看琥珀色高亮的条目,它们可能写到你解包目录之外。
- 如果文件被拒绝,说明某个头部校验和不通过:归档已损坏、被截断,或者根本不是 tar。
常见问题
- tar 又不压缩,为什么还需要校验和?
- 每个 512 字节的头部都带有自身字节的简单求和,计算时把校验和字段本身当作空格。它不是强完整性校验,而且只覆盖头部、不覆盖文件内容,但足以把真正的头部和随机数据区分开。正是这一点才让读取方能够遍历归档:tar 里没有中央索引,找到下一个条目的唯一办法就是相信当前头部里的大小并跳过去。一旦校验和不符,本工具就在此停下,而不是跳到某个随意的偏移、用落点处的字节凭空造出条目。
- v7、ustar、gnu、pax 有什么区别?
- 它们是同一个 512 字节头部的四代。v7 是最初版本,只有 100 个字符的名字字段,既没有属主名也放不下长路径。ustar(POSIX.1-1988)加入了魔数串、用户名和组名,以及 155 字节的前缀字段,如果路径恰好能在合适位置的斜杠处切开,就可以达到 255 个字符。GNU tar 用另一种办法解决长名字:额外写一个头,其内容就是真正的名字。pax(POSIX.1-2001)把这一思路推广成 key=value 记录,可以用 UTF-8 承载任何字段,包括任意长度的路径、亚秒级时间戳和很大的 uid。现代 GNU tar 在某个值放不下时默认改用 pax。
- 什么是 tarbomb,为什么要标出来?
- tarbomb 指条目不在单一顶层目录之下的归档。在当前文件夹里解包,得到的不是一个可以整个删掉的整洁目录,而是散落一地的零散文件。这通常是疏忽而非恶意,但清理起来是真的烦:你得回头读清单,才知道现在目录里哪些文件是从归档里出来的。本工具反正已经拿到清单,所以提前告诉你。解包时的办法是 tar -xf archive.tar -C 新目录,不管里面装的是什么都能圈住。
- tar 文件能覆盖我解包目录之外的文件吗?
- 可以尝试,有三种方式,本工具三种都会标出。名字以斜杠开头的条目是绝对路径。名字中含有 .. 的条目会爬到解包目录之外。目标为绝对路径或含有 .. 的符号链接、硬链接,则允许同一归档中后续的条目借它写到别处。GNU tar 默认会防这几手——它会去掉开头的斜杠,并拒绝经由含 .. 的路径解包——但其他语言的归档处理库常常不会,由此产生了一长串路径穿越漏洞。先看一眼清单不花任何代价。
- 我的归档会被上传吗?
- 不会。文件用浏览器自带的 FileReader 读取,在本页面的 JavaScript 中解析,不会发送到任何地方;gzip 解压也在本地完成。你可以直接验证:打开页面后断开网络,再拖入一个文件,它照常工作。关于这个归档的任何信息,包括文件名,都不会离开你的机器。
- 为什么看不到也下载不了文件内容?
- 本工具读的是清单,不是内容。它有意从一个头部跳到下一个头部,不保留条目内容,这样几个 GB 的归档也不必整个装进浏览器标签页才能列出清单。如果你需要某个条目的内容,用 tar -xf archive.tar 归档内/路径 只取出那一条,或者用 tar -Oxf archive.tar 路径 直接打印到标准输出而不落盘。
相关工具
NumPy .npy / .npz 检查器
在浏览器里读取 .npy、.npz 的文件头:dtype、shape、字节序、字段布局和前若干个值,无需 NumPy,也不上传文件。
xz(.xz)流结构分析器
读取 .xz 容器:流头部、每个块的头部与过滤器链、索引和尾部,并给出无需解压就能确定的真实原始大小。
ZIP 内容查看器
拖入 ZIP 即可查看内部文件——大小、内容、单文件下载,无需在本地解压。
CSV 查看与排序
把 CSV / TSV 当作可排序、可搜索的表格查看——打开文件或粘贴行,无需电子表格。
Plist 查看器(二进制与 XML)
打开苹果属性列表——无论二进制还是 XML——以树形查看,并可转换为 JSON 或 XML plist。
gzip(.gz)结构检查器
逐字段读取 .gz 头部,遍历每个成员,并在浏览器中重新计算 CRC32 和真实大小来校验尾部记录。