localhostで実行される単純なサーバーアプリをCで記述しました。Wiresharkを使用してlocalhostトラフィックをキャプチャする方法は?
localhostで実行される単純なサーバーアプリをCで記述しました。Wiresharkを使用してlocalhostトラフィックをキャプチャする方法は?
回答:
Windowsを使用している場合 は不可能です。以下をお読みください。代わりにあなたのマシンのローカルアドレスを使うことができれば、ものをキャプチャすることができます。CaptureSetup / Loopbackを参照してください。
概要:Linux、Mac OS Xを含むさまざまなBSD、Digital / Tru64 UNIXのループバックインターフェイスでキャプチャできます。IrixとAIXではそれができるかもしれませんが、Solaris、HPではできません。 -UX ...。
このページでは、Wiresharkだけを使用するWindowsではこれは不可能であると述べていますが、実際には別の回答で述べられている回避策を使用して記録できます。
編集:約3年後、この答えは完全に正しくなくなりました。リンク先のページには、ループバックインターフェイスでキャプチャするための手順が含まれています。
なんらかの理由で、私のケースでは以前の答えはどれもうまくいかなかったので、トリックをしたものを投稿します。WindowsでlocalhostトラフィックをキャプチャできるRawCapと呼ばれる小さな宝石があります。利点:
トラフィックがキャプチャされた後、それを開いてWiresharkで通常どおり検査できます。私が見つけた唯一の欠点は、フィルターを設定できないことです。つまり、重い可能性があるすべてのlocalhostトラフィックをキャプチャする必要があります。Windows XP SP 3に関するバグも1つあります。
その他のアドバイス:
Windowsプラットフォームでは、Wiresharkを使用してlocalhostトラフィックをキャプチャすることもできます。必要なのは、Microsoftループバックアダプターをインストールして、それを嗅ぐことです。
私は実際にこれを試していませんが、ウェブからのこの答えは有望に聞こえます:
Wiresharkは、Windows TCPスタックの性質により、実際にはWindows XPでローカルパケットをキャプチャできません。パケットが同じマシンで送受信されるとき、wiresharkが監視するネットワーク境界を越えていないようです。
ただし、これを回避する方法はあります。WindowsXPマシンで(一時的な)静的ルートを設定することにより、ローカルトラフィックをネットワークゲートウェイ(ルーター)経由でルーティングできます。
XPのIPアドレスが192.168.0.2で、ゲートウェイ(ルーター)アドレスが192.168.0.1であるとすると、Windows XPのコマンドラインから次のコマンドを実行して、すべてのローカルトラフィックを強制的にネットワークの境界に行き来させ、wiresharkがデータ(wiresharkはこのシナリオで2回パケットを報告することに注意してください。1回はPCを離れるとき、もう1回は戻るときです)。
route add 192.168.0.2 mask 255.255.255.255 192.168.0.1 metric 1
Npcap:https : //github.com/nmap/npcapを試してください。これはWinPcapに基づいており、Windowsでのループバックトラフィックキャプチャをサポートしています。NpcapはNmap(http://nmap.org/)のサブプロジェクトであるため、Nmapの開発リスト(http://seclists.org/nmap-dev/)で問題を報告してください。
Starting from Windows Vista: Npcap is an update of WinPcap using NDIS 6 Light-Weight Filter (LWF), done by Yang Luo for Nmap project during Google Summer of Code 2013 and 2015. Npcap has added many features compared to the legacy WinPcap.
RawCapの出力を即座に読み取ることで、Wiresharkでループバックトラフィックをライブで表示できます。cmaynardは、Wiresharkフォーラムでこの独創的なアプローチについて説明しています。ここで引用します:
[...] Wiresharkでライブトラフィックを表示する場合でも、1つのコマンドラインからRawCapを実行し、別のコマンドラインからWiresharkを実行することで、これを行うことができます。cygwinの尾が利用可能であると仮定すると、これは次のようなものを使用して実現できます。
cmd1: RawCap.exe -f 127.0.0.1 dumpfile.pcap
cmd2: tail -c +0 -f dumpfile.pcap | Wireshark.exe -k -i -
これにはcygwinのテールが必要であり、Windowsの標準ツールでこれを行う方法を見つけることができませんでした。彼のアプローチは私にとって非常にうまく機能し、キャプチャされたループバックトラフィックのライブですべてのWiresharksフィルター機能を使用することができます。
stdout
。したがって、今日の時点で、上記のソリューションは次のように簡略化でき、tail
必要 はありませんRawCap.exe -q 127.0.0.1 - | Wireshark.exe -i - -k
。RawCapReduxの発表ページの新しいRawCap機能について詳しくは、こちらをご覧ください。netresec.com
以下のためのWindowsの、
パケットをキャプチャできません ローカルループバックの中にWiresharkを使用すると、呼ばれる非常に小さなしかし有用なプログラムを使用することができ、しかしRawCapを。
コマンドプロンプトでRawCapを実行し、ループバック擬似インターフェース(127.0.0.1)を選択して、パケットキャプチャファイル(.pcap)の名前を書き込みます。
簡単なデモは次のとおりです。
C:\Users\Levent\Desktop\rawcap>rawcap
Interfaces:
0. 169.254.125.51 Local Area Connection* 12 Wireless80211
1. 192.168.2.254 Wi-Fi Wireless80211
2. 169.254.214.165 Ethernet Ethernet
3. 192.168.56.1 VirtualBox Host-Only Network Ethernet
4. 127.0.0.1 Loopback Pseudo-Interface 1 Loopback
Select interface to sniff [default '0']: 4
Output path or filename [default 'dumpfile.pcap']: test.pcap
Sniffing IP : 127.0.0.1
File : test.pcap
Packets : 48^C