PS3のセーブデータ含まれるPARAM.SFOに含まれるアカウントIDを分析

Posted on Jul 24, 2021

今回はかなりマニアックな話題。
PS3のセーブデータにPARAM.SFOというファイルが存在する。これにはアカウントIDやコンソールIDが記録されるのだが何故かアカウントIDが2箇所に記録されている。
何で2つも同じ値が記録されるのか、気になって夜も眠れないため検証してみた。

まず同じ値がどこに記録されてるのか見ていきたい

赤字で示した部分が同じ文字列になる。

しかし 「A. PSNに全く紐づけてない状態のPS3で作成したデータをUSBにコピーしたもの」 「B. PSNにログイン後、Aと同じセーブデータをUSBにコピー(エクスポート)したもの」「C. PSNでログインした状態でセーブしたデータをコピーしたもの」 を調べると興味深いことが判明した。

補足

少しややこしいので整理すると
セーブ→USBにコピー(A)→PSNにログイン→USBにコピー(B)→ゲームを進めてセーブ→USBにコピー(C)

A. PSNに全く紐付けてない状態のPS3で作成したデータ
C. PSNでログインした状態でセーブしたデータ

しかしBだけACCOUNT_IDの値とPARAMSに含まれるPSNアカウントIDの値が異なったのだ。

B. PSNにログイン後、Aと同じセーブデータをUSBにコピー(エクスポート)したもの

この ACCOUNT_ID の “00000000000000000000000000000000” はPSNアカウントに未ログインであることを示す値。それなのにPARAMSのアカウントIDの部分は自分のPSNアカウントのIDになっている。
このことから “ACCOUNT_ID” はセーブ時のPSNアカウントのID、 “PARAMS” に含まれるのは現時点でのPSNアカウントのID ということが判明。

問題はどのタイミングでPARAMS内のアカウントIDが書き換えられているか。
Aの最終更新日はセーブ時なのに対しBの最終更新日を見るとどうやらPSNにログインした日時になっている。
つまり “PSNにログインすると一旦PS3内の全セーブデータのPARAM.SFOのPARAMSに含まれるPSNアカウントIDが更新される” ということ。

結論

  • ACCOUNT_ID" はセーブ時のPSNアカウントのID、 “PARAMS” に含まれるのは現時点でのPSNアカウントのID
  • PSNにログインすると一旦PS3内の全セーブデータのPARAM.SFOのPARAMSに含まれるPSNアカウントIDが更新される
  • そのため “ACCOUNT_ID” と “PARAMSに含まれるPSNのID” は必ず一致するという訳ではない

セーブデータの所有者確認には恐らく “PARAMS” に含まれるPSNアカウントのIDが使用されてると思われる。 (セーブ時にサインインしてなくても後からPSNにサインインすればデータを引き継げるようにするための仕様)