0

libpcap を使用してトラフィックを傍受し、パケットを取り出して変更し、生のソケットを使用してネットワークに戻すプログラムを作成しています。ワイヤレスカードの通常の無差別モード操作では、ネットワークとやり取りできないと思いますが、生のソケットでそれを行うことは可能ですか?

4

1 に答える 1

1

短い答えはイエスです。以下は長い方...

ワイヤレスカードの通常の無差別モード操作では、ネットワークとやり取りできないと思います

この知識をどこから得たのかはわかりませんが、上記のステートメントは間違っています。プロミスキャス モードは、ユーザーができることやネットワークと対話する方法を制限しません。デフォルトでは、ネットワーク インターフェイス カードは、ホストに渡すデータの量を減らして効率を上げようとします。たとえば、宛先 MAC アドレスが受信メディア アクセス コントローラのアドレスと一致しない場合、NIC はイーサネット フレームをホストに渡しません。無差別モードが行う唯一のことは、そのフレームがホスト宛てにアドレス指定されているかどうかに関係なく、取得したすべてのものをホストに渡すようにデバイスに指示することだけです。言い換えれば、通常の操作モードで NIC を使用して実行できることは何でも、プロミスキャス モードでも実行できます。さらに、NIC は何もフィルタリングしません。

しかし、生のソケットでそれを行うことは可能ですか?

はい、可能です。十分な特権を持っている限り、「生の」ソケット API を使用して、ユーザー空間からイーサネット フレームを送受信できます。デバイスがプロミスキャス モードかどうかは関係ありません。

また、最近のルーターは非常にスマートで、ホストの NIC をプロミスキャス モードにしてもパケットをホストに転送しないことに注意してください。したがって、適切なネットワークでは、実際にはホスト向けではないものを受信する可能性は低く、プロミスキャス モードでも違いはありません。

それが役立つ場合は、イーサネット経由で PC に接続された FPGA ボードとカスタム パケットを交換する簡単な例を次に示しますraw ソケット API を使用し、Linux のユーザー空間で実行されます。

于 2012-10-27T22:18:11.887 に答える