本文へスキップ
AZ Tools

Plist ビューア(バイナリ・XML)

プロパティリストは macOS と iOS がほとんどすべてを保存する方法です。アプリの環境設定、Info.plist、構成プロファイル、バックアップのマニフェスト。半分はエディタで読める XML ですが、残り半分は bplist という文字で始まるバイトの壁として開く Apple のバイナリ形式です。 このツールは両方を読みます。バイナリは文字列を拾い集めるのではなく正しく復号します。ファイル末尾の 32 バイトのトレーラがオフセットと参照の整数幅、そしてオブジェクトテーブルの位置を示し、すべての値はそのテーブル経由で到達します。ヘッダから前へ辿るだけでは何も読めないということです。1・2・4・8 バイトの整数、浮動小数点数、Apple 独自のエポックによる日付、生データ、UID、配列、集合、辞書がすべて型を保ったまま返ります。 結果はツリーで表示し、JSON と XML plist としても提供します。編集できなかったバイナリファイルが編集できる形になるわけです。ファイルが NSKeyedArchiver のアーカイブ——UID 参照でつながれた平坦なオブジェクト表で、iOS が少しでも複雑なものを保存するときに書く形式——だと分かればそう伝えます。中身がアプリの保存構造とまるで違って見える理由がそれだからです。アップロードはされません。

使い方

  1. .plist や .mobileconfig ファイルをドロップするか、XML plist を貼り付けます。
  2. 形式は自動判定され、バイナリならオブジェクト数も表示されます。
  3. ツリーを読みます。各行にキー、型、値が並びます。
  4. 加工するなら JSON を、編集するなら XML plist をコピーします。
  5. データと日付は文字列にまとめず、型を示したまま扱います。

よくある質問

バイナリ plist と XML plist の違いは
符号化だけです。保持する値は同じで、macOS は両者を同じものとして扱います。バイナリの方が小さく読み込みも速いため、文書では XML で説明されていても端末上のファイルはほとんどバイナリです。
ファイルが意味のない数字と $ で始まるキーばかりに見えます
おそらく NSKeyedArchiver のアーカイブです。オブジェクトを $objects に平坦に並べ、入れ子ではなく UID 参照でつなぐため、見えている形はアーカイブのものでアプリのものではありません。$archiver キーがあればこのビューアが知らせます。
他のツールだと日付が 31 年ずれます
Apple は 1970-01-01 ではなく 2001-01-01 から秒を数えます。差は 978307200 秒です。plist の日付を Unix タイムスタンプとして読むと 1970 年代に落ちます。ここではこのオフセットを適用しているので日付は正しく出ます。
バイナリデータはどうなりますか
データ型のまま保持し、長さも示します。JSON にはバイト列がないので __data_base64 というキーの下に base64 で入れ、XML 出力では <data> 要素に戻ります。
バイナリ plist の編集や書き出しはできますか
バイナリを XML に変換するので、それを編集して plutil や plist ライブラリで戻せます。バイナリ形式で書き出すのはこのツールの役割ではありません。
ファイルはアップロードされますか
いいえ。ブラウザ内で解析され、サーバーには送信されません。環境設定ファイルにはアカウント名やパスが含まれることが多いので、なおさら重要です。

関連ツール