web-dev-qa-db-ja.com

Windows7でのプロセス通信のスニフ

他のコマンドを実行させるために通信する2つのローカルプロセスがあります。そして、私は彼らが何について話しているのか知りたいです。

いくつかの最初の調査の後、それはソケットまたはループバックを超えていませんが、彼らは(named-)pipesを使用しているようです(少なくとも両方がそれらのいくつかを開いており、それらが同じかどうかはわかりません)。

これらのプロセス間のすべての通信をどのように盗聴できますか?

5
ragnq

Wiresharkこの記事 で説明されているように、名前付きパイプをスニッフィングできます。

パイプの前に、Wiresharkはキャプチャされたパケットを読み取って、ファイル(以前に作成されたもの)またはネットワークインターフェイス(リアルタイム)から表示することができました。パイプがサポートされているため、Wiresharkは別のアプリケーションからパケットを読み取り、リアルタイムで表示することもできます。

注意すべきいくつかの制限があります。

  1. これは、Development/LibpcapFileFormatで説明されているように、事実上の標準libpcap形式バージョン2.4でのみ機能します。他のいくつかのフォーマットは理論的には機能するかもしれませんが、これはテストされていません。
  2. パイプからのキャプチャは、キャプチャを開始する前にパイプを設定し、ファイルヘッダーをパイプに配置する必要があるため、不便です。これを解決できるパッチがいくつか開発リストに郵送されているので、アプローチが不便な場合は、パッチを試してください。
  3. 名前付きパイプはドロップダウンインターフェイスの選択に表示されないため、インターフェイスボックスに入力する必要があります。 Windowsでは、ゆっくり入力(または貼り付け)する必要があります。

それを試したり、言及されたパッチを見つけたり、上記の記事の作者に連絡したりした後でも、パイプの名前を知るという問題が残っています。これは、sysinternalsによって(再び)奇跡的に解決されます。ユーティリティ PipeList

また、驚くべきことに、システムで定義されている名前付きパイプのディレクトリリストを取得できることもあります。この事実は文書化されておらず、Win32APIを使用してこれを行うこともできません。

別の解決策は、市販の製品である可能性があります I/O Ninja ($ 30、試用版が利用可能)。

5
harrymc