オンラインゲームがどのような情報をやり取りしているのか気になり、パケットキャプチャによってその内容を除いてみようという試みです。
やろうとしていること
某オンラインゲームをパケットキャプチャを行いながらプレイをし、ゲーム終了後パケット解析をする。
1試合を通してどのようなパケットをやり取りしているのか見てみる。
試験的+パケット解析の勉強に手探りで行っているためこの記事は不完全な形で終わると思います。
新たに知見が得られたらその都度加筆していきます。
1. 目的のパケットの絞り込み
Wiresharkでパケットキャプチャを行いながらゲームを1試合遊び、パケットを採取します。
ゲーム以外のパケットも入ってきているのでまずはゲーム以外のパケットを除外します。
統計>プロトコル階層を選択。
統計を見てみるとUDPが大半を占めています。
今回採取したオンラインゲームではゲーム中UDPを使用しているようです。
表示フィルターにUDPを指定しました。
2. 具体的に何を通信しているのか?
絞り込みによってゲームの通信を行っているパケットの把握はできました。
続いて見ていきたいのはその内容です。
適当なキャプチャを選択し、UDPペイロードを見ますが16進数が並んでいるだけでどんなデータをやり取りしているのか分かりません。
調べてみると、アプリケーション層の使用しているプロトコルに合わせてデコードしてあげる必要があるようです。
下記リンクのサイトではMySQLとのやり取りをパケットから覗いています。
日々の覚書「Wiresharkのプロトコルデコード機能を使ってMySQLのパケットを覗く」2022年6月29日取得
この記事のようにアプリケーションプロトコルがMySQLだと分かっている場合はWiresharkの設定を変更すればいいようですが、今回はゲームがどんなプロトコルを使用しているか分かりません。
なのでまずアプリケーション層のプロトコルを特定しなければペイロードのデコードができません。
アプリケーション層の下位層のUDPの中にアプリケーション層のプロトコル種類を示す情報があるのかと思いましたが見つけることはできませんでした。
なので現状私の知識ではここで手詰まりになりました。
課題
目下の課題は、
- アプリケーション層のプロトコルを特定する方法を見つける
- プロトコルを特定せずにデコードする方法を見つける
このどちらかができればパケットの中身を見ることができそうです。