文書化されていないクライアント/サーバー通信をキャプチャして必要な情報を分析し、プログラムでこの情報をリアルタイムで検索する方法は何ですか? たとえば、オンライン ゲームのクライアント/サーバー通信を調べて情報を取得し、それを使用してサード パーティの地図に場所を表示するなどのプログラムです。
2 に答える
一般に、wireshark はトラフィック/プロトコル分析の優れた推奨事項ですが、別のものを探しているようです:
たとえば、オンライン ゲームのクライアント/サーバー通信を調べて情報を取得し、それを使用してサード パーティの地図に場所を表示するなどのプログラムです。
マルチプレイヤーゲームとゲームサーバーについて言及していると思いますか?
その場合、これらのプログラムは通常、専用のサービス接続を使用して、対応するサーバーに別のポートで位置の更新やその他のメタ情報を照会します。実際には、クライアント/サーバーの通信をリアルタイムで傍受または検査することはありません。これらの更新を妨害します。
したがって、ほとんどのゲーム サーバーは非常に単純なパッシブ接続 (つまり、出力のみ) をサポートしていることがわかります。これは、特定のランタイム状態を取得するためのものであり、対応する外部スクリプト/Web ページによって単純にポーリングされることがよくあります。
同様に、別のポートで提供される専用の管理インターフェイスや、サーバー統計を発行する別のポートもあることが多いため、Web ページに適切な統計を埋め込むために簡単にクエリを実行できます。
ゲーム サーバーの種類によっては、公開/匿名での使用が可能であったり、データ ポートにアクセスするために特定の資格情報が必要になったりする場合があります。
より複雑なシステムでは、特定の状態と更新のみをサブスクライブできるため、関心のあるデータを動的に構成できます。
したがって、基礎となるプロトコルに関する完全なドキュメントがあったとしても、これらの通信の間に介在しなければ、クライアント/サーバー通信を直接検査することはできません。しかし、これは簡単には達成できません。理論的には、これには基本的に、進行中の通信を実際に検査できるように、SOCKS プロキシ サーバーをセットアップしてすべてのクライアントで使用する必要があります。
通常、Wireshark のようなプログラムは、自分のマシン/ネットワークで行われている通信に関する有用な情報のみを提供し、アクセスできないマシン間で行われている通信に関する情報は提供しません。
つまり、wireshark を使用して a) プロトコルをリバース エンジニアリングし、b) トラフィックを検査する方法を考え出し、c) 位置マップを作成したとしても、これらはすべて、アクセスできる通信に対してのみ機能します。つまり、自分のマシン/ネットワークで行われているものです。したがって、対応するオンライン マップは自分の位置のみを示します。
もちろん、代替手段があります。クライアントをエミュレートして、他のクライアントからサーバー側の更新を提供されるようにすることができます。これはほとんどの場合、スペクテーター モードで行う必要があります。
これは、サーバー側の状態を消費するだけで何も提供しないパッシブ クライアントであることを意味します。
これらすべての更新を順番に使用して、オンライン マップにデータを追加したり、その他の目的に使用したりできます。
ただし、これには観客/クライアントが常にサーバーに接続している必要があり、貴重なゲーム サーバー スロットを占有する可能性があります。
一部のゲーム サーバーは、ライブ フィードを使用してゲーム プレイ全体を観察できるように、専用の観戦モードを提供します。ただし、ほとんどのゲーム サーバーは、特定のアイドル タイムアウト後に観客を自動的にキックします。