tomohxxの日記

麻雀プログラミング

天鳳パケット解析

はじめに

本記事にはマナー的にグレーな内容が含まれます。もし「掲載すべきではない」との意見が寄せられた場合、直ちに削除する予定です。

今回は天鳳のパケット解析を行います。きっかけは以下のツイートです。

かなりマイナーな知識になりますが、実はFlash版の天鳳では通信内容が暗号化(SSL化)されていません(2020/5/16現在)。天鳳での自動打ちを目的としたパケット解析に関する情報がインターネットにいくつか存在しますが、私の知る限りそれらの情報はすべて通信内容が暗号化されていないことを前提とするものです。言い換えるとFlash版の天鳳でしか使えない情報です。上記のツイートから、今後それらの情報が役に立たなくなる可能性が高いと考えられます。そこで、すでに通信内容が暗号化されているWeb版天鳳のパケット解析を行ってみます。

暗号化通信とは

念のため暗号化通信について解説しておきます。URLという言葉をご存じでしょうか?https://www.google.co.jpのような文字列のことです。これはGoogleの検索画面にアクセスするためのURLです。このURLはhttpsから始まっていますが、これが暗号化通信を意味しています。通信が暗号化されているということは、自分とサーバー(この例ではGoogleのサーバー)以外に通信内容が知られないということです。例えば、通信経路の途中のルーターが第三者に侵入されたとしても通信内容が知られることはありません。ところで以前はhttpsではなくhttpの方をよく聞いたのではないでしょうか?httpでは通信内容が暗号化されず平文(第三者にも内容がわかる状態)でやりとりされます。以前はクレジットカードの番号などの個人情報を扱う場合でしかhttpsは使われなかったのですが、最近は通信内容を問わずhttpsを使うことが多くなっています。このような流れがあるので天鳳でも通信内容の暗号化を進めるのだと思われます。

天鳳パケット解析

Flash

Flash天鳳のパケット解析に関する情報は検索すればわかるので詳しく解説しません。Flash天鳳ではゲームの進行状況に関するデータがTCPパケット上に平文で乗ります。パケットフォーマットは天鳳牌譜ログと同様の形式です。

Web版

Web版でのプロトコルはWebsocket over SSL/TLSです。配牌直後でのパケットキャプチャの例を示します。

f:id:tomohxx:20200516213004p:plain
天鳳パケットキャプチャ

この画像はパケット解析ツールであるWiresharkの画面の一部です。どうやらデータはJSON形式で送られてくるようです。またJSONデータの構造は天鳳牌譜ログのフォーマットに従うと思われます。実際のゲーム画面はこちらです。

f:id:tomohxx:20200516211059p:plain
天鳳スクリーンショット

おわりに

天鳳でのパケット解析について解説しました。具体的な内容は伏せますが、くれぐれも迷惑行為は行わないでください。