スプラトゥーン2のパラメータ置換ツールをアップデートした

Hack

ParamHash

Release v0.0.1 · tkgstrator/ParamHash
準備 ParamHash.exeと同じところにparam.csvとconvert.exeを配置します convert.exeはダウンロードしたReleaseフォルダ内を展開しThe4Dimension.exeをリネームしてください 起動 初回起動するとsourceとbuildのフォルダが生成されます 復号 souce...

解説すると長くなるのだが、スプラトゥーン2ではXMLのパラメータファイルがBPRM, BYML, BYAMLといったファイルに暗号化されている。

この暗号化自体はThe4Dimensionというツールを使えば復号できるのだが、パラメータ名がCRC32でハッシュ化されているためそのままでは読むことができない。

また、CRC32はハッシュであり暗号化ではないため一意の復号もできない。そこで、スプラトゥーン2で定義されているパラメータ名を片っ端から抽出して、それをCRC32でハッシュ化し、ハッシュリストをつくることにした。

パラメータ名の抽出とハッシュ化

やり方は全くわからなかったので、Shadow氏に協力を依頼した。

すると一時間も経たずに5.4.0向けのパラメータファイルを抽出してくれた、やはり天才である。

あとはそのパラメータファイルをCRC32でハッシュ化し、それをCSVとして出力すれば良い。

import zlib

with open(INPUTFILE, mode="r") as f:
    with open("param.csv", mode="w") as w:
        for line in f:
            param = line.strip()
            hash = format(zlib.crc32(param.encode("ascii")) & 0xFFFFFFFF, "x")
            param = param.split(".")
            w.write(f"{hash},{param[0]}\n")

それ自体は上のようなコードで実装できる。とても簡単である。

これで全てのハッシュを出力できたかと思ったのだが、Shadow氏の手法では一部のパラメータを抽出し損ねているようでサーモンランに関するパラメータが全く見つからなかった。

そこでLeanny氏が公開しており旧バージョンのParamHashでも使っていたCSVファイルを組み合わせることにした。

重複するものを削除して全部で11159通りのパラメータとハッシュのリストが完成した。

使い方

使い方についてはリリースページを見ていただきたいのだが、The4Dimensionと組み合わせることでBPRM, BYML, BYAMLをXMLに復号し、復号したXMLのハッシュをパラメータ名に置換するところまでを自動で行ってくれる。

また、逆変換にも対応しており、置換されたXMLをハッシュ化し、暗号化することにも対応した。

なので、このツールを使えば編集するファイルはパラメータ名に置換されたXMLファイルだけということになる。

いままで「XMLに復号」「XMLのハッシュを置換」「置換したXMLと比較して置換前XMLを編集」「置換前XMLを暗号化」という作業が必要だったのが、「置換済みXMLに復号」「置換済みXMLを編集」「置換済みXMLを暗号化」という風に一つ作業を減らすことができるようになった。

ちまちまパラメータ名を比較しながら作業しなくて良いのでミスも減るし、全てのファイルを一度に変換できるので楽になったはずだ。

おまけ

Pythonって本当に楽、あと焼き肉食べたい。

記事は以上。

コメント

  1. 匿名 より:

    レインボーテーブル作ったのはすげえけど何に使うんだコレ

タイトルとURLをコピーしました