2016-03-20 4 views
0

私はWi-Fiプローブ要求を捕まえるためのスニッファを作成しようとしています。キャッチされたパケットのMACアドレスはどのように取得できますか?

Wiresharkでは、すべてのブロードキャストパケットをARPプロトコルでリッスンしていることを示すeth.type eq 0x0806 and eth.dst eq ff:ff:ff:ff:ff:ffのようなフィルタを設定します。私はまだ信号強度を監視する方法を見つけていないが、多分私はある日それを見つけるだろう...

私はPcap.Netで同じことをしたいと思います。だから、一度パケットが、私は

//Check if the packet is Ethernet 
if (packet.DataLink.Kind == DataLinkKind.Ethernet) 
{ 
    //Check if the Ethernet packet is ARP 
    if (packet.Ethernet.EtherType == EthernetType.Arp) 
    { 
     [...] 
    } 
} 

を見て、catchedされていますが、パケットがWiresharkのでcatchedされているのに対し、何も私のC#のコードでcatchedされません。

別の質問、どのようにパケットの送信元のMACアドレスを取得するには?ワイヤレスデバイスで信号強度を取得するにはどうすればいいですか?

+1

両方のif文を削除すると、パケットをキャッチしますか? – wimh

+0

MACアドレスはパケットヘッダーではなくフレームヘッダーにあります。フレームはヘッダーにレイヤー2(MAC)アドレスを持ち、パケットはヘッダーにレイヤー3(IP)アドレスを持ち、セグメントはヘッダーにレイヤー4(ポート)アドレスを持っています。フレームは、アプリケーションデータをカプセル化するセグメントをカプセル化するパケットをカプセル化します。このようなことをしたいときは、[OSI Model](https://en.wikipedia.org/wiki/OSI_model#Description_of_OSI_layers)を勉強する必要があります。 –

答えて

0

MACアドレスを取得しているまでは、おそらくこの私の提案が役に立ちます。現在私はpcap.netを使用してスニファをコーディングしています。私のLAN接続で正常に動作しています。しかし、私のコードは、ラップトップがWiFiネットワークに接続されているときにトラフィックをキャプチャしていません。それは一度しましたが、試みの最後のカップルでは、​​それはちょうどどんな種類のトラフィックをキャプチャすることに失敗しました。

pcap.netにはAirPcapの機能が含まれていないため、これはかなり明白だと思います。

ちなみに、pcap.netのサンプルコードを読んでいただければ幸いです。ここでは、

... ... PacketHandler(Packet packet){ ... } 

という名前の関数を使用しています。この中に私はこれらの2行を追加しました。それは私のためにうまくいきます。

private void PacketHandler(Packet packet) 
{ 
    string sourceMac = packet.Ethernet.Source.ToString(); 
    string destinationMac = packet.Ethernet.Destination.ToString(); 
    //--more code 
} 

今のところそれは仕事をしています。私はNetworkMiner(私のはるかに優れているC#のもう一つのスニファプロジェクト:v)と共にスニファをテストしました。私はまだそれをやって、それをたくさんテストし、これまで私は問題はありません。

関連する問題