ツールを使用してXWindowプロトコルを追跡することは可能ですか?Wiresharkはそのようなアイデアをホストするための優れたフレームワークになると思いましたが、サポートがないようです。この目標を達成するために何をすべきですか?
4 に答える
Wiresharkには、X-Windowプロトコルを分析する機能があります。
ただし、Wiresharkが分析する前に、まずXクライアント(アプリ)とXサーバー間の実際のXウィンドウトラフィックをキャプチャできる必要があります。
ローカルマシンで実行されているアプリ(X-Windowsクライアント)とX-Windowsサーバー間のX-Windowsトラフィックは、おそらく「Unixドメインソケット」を使用して、クライアントとサーバー間で直接プロセス間通信(IPC)を実行します。基盤となるネットワークプロトコルが使用されていないため、トラフィックは(AFAIK)Wiresharkによる分析のためにキャプチャできません)。
Xを扱ってからしばらく経ちますが、基本的に必要なのは、サーバーがネットワーク接続をリッスンしている(そして受け入れようとしている)ように、X-Serverがボックス上で実行されていることです。リモートノード(またはローカルノード?)上のXclientアプリがネットワーク経由でXServerに接続すると、Wiresharkによる分析のためにそのトラフィックをキャプチャできるようになります。
Xは複雑です。Xの実行の詳細に精通していない場合は、読んだり、追加情報を求めたりする必要があります。Xに関連する詳細を空白にしてからずっと経ちました。
原則として、を使用してUnixソケットを通過するX-Windowプロトコルをキャプチャすることが可能ですstrace
。次に、を使用してこのパケットをWireshark用にラップすることができtext2pcap
ます。
例:
ファイル記述子41を使用してUNIXソケットでpid1998を使用してXサーバーに送信されるXウィンドウプロトコルフレームをキャプチャします。
bash$ sudo strace -e trace=read,write -e read=41 -p 1998 2>&1 | grep '^[ ]|' >/tmp/xdata.log
キャプチャしたデータをwireshark用に準備します。
bash$ text2pcap -T 1234,6000 /tmp/xdata.log /tmp/xdata.dump
これで、でwiresharkを使用できます/tmp/xdata.dump
。
80年代には、サーバーとクライアントの間に配置されるオープンソースのXwindowプロキシプログラムがありました。これは「C」で記述されており、メッセージの種類や各方向に渡されるデータの量をカウントするように簡単に変更できます。また、人々が割り込みハンドラーで間違った関数を使用した場合に発生する不正な形式のXprotocolも認識しました。名前は思い出せませんが、「Xwindowプロキシ」で検索すると役立つかもしれません...
XWindowプロトコルが何であるかはわかりませんが、Wireshark用のLuaDissectorを作成できます。