Cryolite / mahjongsoul_sniffer

Tools to sniffer, decode, and archive API request and response from/to Mahjong Soul (雀魂) API
MIT License
40 stars 7 forks source link

API Visualizer で `ActionPrototype` が表示されない #98

Closed Apricot-S closed 4 months ago

Apricot-S commented 7 months ago

概要

API Visualizer で対局中の API の内容を確認すると、ActionPrototype が表示されていない 対局開始時の通信分など一部のみ表示されている

原因

ActionPrototypedata は難読化されているが解読する処理がない そのため data のデコード時に google.protobuf.message.DecodeError が発生し、WebSocket メッセージの JSON への変換処理が途中で終了してしまうため

To Be

data をデコードして google.protobuf.message.DecodeError が発生した場合は https://github.com/Cryolite/majsoul-rpa/blob/main/majsoul_rpa/presentation/match/_common.py#L14 の方法で難読化を解除してからデコードする

メモ

https://github.com/Apricot-S/mahjongsoul_sniffer/commit/513662c6311e24a116402750a7a7943eeae2f91b

で難読化解除を試したところ、解除自体には成功したが一部のフィールド (bool 型か? 詳細未調査) が欠落しているように見える

調査した結果、一部のフィールドが表示されていないのは ActionPrototype だけでなくすべてのデータ型で同様である 表示されていないフィールドは false0 などの false と判定されるような値である この問題については #99 に改めて Issue を立てた

Apricot-S commented 4 months ago

マージされたので close します。