2016-06-14 34 views
2

thisによれば、wiresharkはパケットが破棄される前にパケットを取得することができます(したがって、自分でパケットを取得することはできません)。そして私はまだwiresharkがパケットを取得するためのLinuxカーネルの正確な位置を知りたいと思っています。Wireshark/tcpdump/libpcapは、Linuxカーネル内のどこでパケットを傍受しましたか?

答えは "UN * Xesでは、LinuxではAF_PACKETソケットを使用するlibpcapを使用しています。"誰も "AF_PACKETソケット"を使うもっと具体的な例がありますか? wiresharkが正しく理解されている場合、ネットワークインターフェイスカード(NIC)はすべての着信パケットをコピーし、ユーザーが定義したフィルタ(ベルケリーパケットフィルタ)に送信します。しかし、これはどこで起こりますか?あるいは、私はその理解に間違っていて、私はここで何かを見逃しますか?

ありがとうございます!

答えて

3

しかし、これはどうなりますか?

私はあなたを正しく理解していれば知っておきたいのですが、そのようなソケットはどこに初期化されていますか?
送信元インターフェイスの種類を判断し、複製を作成して有効化しようとするpcap_createfunctionがあります。
ネットワークの場合pcap_create_interfacefunction =>pcap_create_commonfunction =>pcap_activate_linuxfunctionを参照してください。
すべての初期化が(
は、socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ALL))でソケットを作成bind(fd, (struct sockaddr *) &sll, sizeof(sll))とデバイスへの
バインドソケット、handlep->device = strdup(device);とデバイスのコピーディスクリプタ)=>activate_newfunction =>iface_bindfunction
pcap_activate_linuxで起こります。
上記の機能のソースファイルにあるコメントを読むには、非常に詳細です。すべての作業がfunctionsなどpcap_read_linuxなどのグループに起こる初期化後
など

+0

ありがとうございました!!!それは確かに私が欲しいものです。もう1つの質問ですが、これを考えると、libpcapはカーネルに何もしておらず、純粋なユーザー空間プログラムです。それはソケットの別のインスタンスを持ってそれを聞いて、すべてのパケットのコピーを持っています。私はこれらの理解を訂正していますか? – zzy

+0

"私はlibpcapがカーネルに何もしていないと思うし、純粋なユーザスペースプログラムです。" libpcapはユーザー空間のライブラリですが、「カーネルのものは何もしません」ということはわかりません。私は簡単にネットワーク(主にイーサネット)のキャプチャを見てきましたが、usb、bluetoothなどがあります。あなたが興味を持っている場合にコードをチェックする必要があります。 "ソケットの別のインスタンスを持ってそれを聞こうとしますすべてのパケットのコピーを持っています。 "はい、ネットワーク(主にイーサネット)のキャプチャはこのように動作するようです。 –

1

Linuxでは、tcpdump(libpcapライブラリを利用しています)を使用するだけで、これを行うことができます。これはファイルまたはSTDOUTを使って行うことができ、tcpdumpコマンドの最後にフィルタを指定することができます。

+0

うーん...しかし、パケットを発見した後、私はまた、例えば、それ(とSTHを行う必要があります。データを変更し、それをドロップなど)、tcpdumpはこのような複雑なタスクを達成できないかもしれません。 – zzy

+1

いいえ、できません。ただし、iptablesの[mangle table](http://serverfault.com/questions/467756/whats-the-mangle-table-in-iptables)や、ファイアウォールのequivelantが何であれ、そのいくつかを行うことができます。より堅牢なコードを構築する場合は、どのカーネルフックが使用されているかを知ることができます。 [tcpreplay](http://tcpreplay.appneta.com/)では、変更後にパケットを再生できますが、UDPまたは単一のTCPストリームに対してのみ再生できます。 –

関連する問題