本文へスキップ
AZ Tools

TAR アーカイブ検査ツール

tar アーカイブ内の 512 バイトヘッダーを読み取り、展開する前に全体の一覧を示します。各エントリーのパス、ファイルかディレクトリかシンボリックリンクかハードリンクか、Unix のパーミッションを rwx と 8 進数の両方の形で、所有者とグループを名前と数値で、サイズと更新時刻を、リンクならその指し先までまとめて表示します。いちばん単純な形式だけでなく、tar が実際に書き出す形式を扱います。古い v7、155 バイトの接頭フィールドを持つ POSIX ustar、GNU の長い名前用ヘッダー、そして固定幅フィールドを UTF-8 の値で上書きする PAX 拡張ヘッダーまで対応します。255 バイトを超えるパスや秒未満の時刻が残せるのは PAX があるからです。各ブロックのヘッダーチェックサムを検証するので、壊れたファイルや tar でないファイルは、もっともらしく見えるでたらめな一覧を作る代わりに拒否されます。ヘッダーの途中で切れたアーカイブも、黙って短く並べずに知らせます。展開前に見るべき理由は、tar のエントリーが今いるディレクトリの外のパスを指定できるからです。先頭にスラッシュの付いたエントリー、.. を含むパス、絶対パスを指すシンボリックリンクは、意図しない場所にファイルを置き得ます。GNU tar は前の二つを取り除いて警告しますが、他の言語の展開コードはそうでないことが多いのです。最上位のエントリーが複数あって作業ディレクトリに中身を散らかすアーカイブも併せて示します。すべてブラウザー内で動作し、アーカイブは送信されません。

使い方

  1. .tar、.tar.gz、.tgz のファイルを枠にドロップするか、クリックして選びます。gzip 圧縮されたものはブラウザー内で先に展開します。
  2. 形式の行で、どの系統の tar が書いたかを確認します。v7、ustar、gnu、pax のどれかによって信頼できるフィールドが変わります。
  3. 表から目的のエントリーを探します。権限と所有者は tar -tv が出力するのとまったく同じ形で表示されます。
  4. オレンジ色で強調された項目は展開前に必ず確認してください。展開先ディレクトリの外に書き込み得るエントリーです。
  5. ファイルが拒否された場合はヘッダーチェックサムが合わなかったということです。アーカイブが壊れているか、切れているか、そもそも 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 のレコードに一般化し、長さ制限のないパス、秒未満の時刻、大きな uid など、どのフィールドも UTF-8 で運べるようにしました。いまの GNU tar は値が収まらないときは既定で pax を使います。
tarbomb とは何で、なぜ印が付くのですか。
エントリーが単一の最上位ディレクトリの下に収まっていないアーカイブのことです。今のフォルダーで展開すると、まとめて消せるフォルダーが一つできる代わりに、ばらばらのファイルがその中に散らばります。悪意というより不注意であることがほとんどですが、後片づけは本当に厄介です。いまディレクトリにあるファイルのどれがアーカイブ由来かを知るには、一覧を読み直すしかないからです。このツールはどのみち一覧を持っているので、先に知らせます。展開時の対処は tar -xf archive.tar -C 新しいディレクトリ で、中身が何であれそこに閉じ込められます。
tar ファイルは展開先フォルダーの外のファイルを上書きできますか。
三つの方法で試み得ますし、このツールはその三つとも示します。名前がスラッシュで始まるエントリーは絶対パスです。名前に .. を含むエントリーは展開先ディレクトリの外へ登ります。指し先が絶対パスだったり .. を含んだりするシンボリックリンクやハードリンクは、同じアーカイブの後続のエントリーがそこを通って別の場所へ書き込むことを許します。GNU tar は既定でこれらを防ぎ、先頭のスラッシュを取り除き、.. を含むパスへの展開を拒みます。しかし他の言語のアーカイブ処理ライブラリはそうでないことが多く、これが長く続いたパストラバーサル脆弱性の根にありました。先に一覧を見るのに費用はかかりません。
アーカイブはどこかに送信されますか。
いいえ。ファイルはブラウザーの FileReader で読み、このページの JavaScript で解析し、どこにも送りません。gzip の展開もローカルで行われます。直接確かめられます。ページを開いてからネットワークを切り、ファイルをドロップしてみてください。そのまま動きます。ファイル名を含め、アーカイブに関する何もあなたの端末から出ません。
ファイルの中身を見たり取り出したりできないのはなぜですか。
このツールは一覧を読むもので、中身を読むものではありません。エントリーの内容を保持せずヘッダーからヘッダーへ飛ぶように意図して作ってあります。そうすることで、数ギガバイトのアーカイブでもブラウザーのタブに丸ごと載せずに一覧できます。特定のエントリーの中身が要るなら、tar -xf archive.tar アーカイブ内のパス でそのパスだけを取り出せますし、tar -Oxf archive.tar パス ならファイルを作らずに標準出力へ表示できます。

関連ツール