利用WPCAP函数,模拟ARP请求数据包,发送并监听ARP回复响应[转]

简介:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using SharpPcap;

using SharpPcap.Protocols;

using SharpPcap.Packets;

using SharpPcap.Util;

using System.Net;

namespace ArpSender

{

    class Program

    {

        static IPAddress localIP;

        static IPAddress targetIP;

        //初始化ARP请求包的方法

        static ARPPacket getARPPacket(System.Net.IPAddress targetIP, string localMAC, System.Net.IPAddress localIP)

        {

            ARPPacket arp = new ARPPacket(14, new byte[60]);

            arp.ARPHwLength = 6;

            arp.ARPHwType = ARPFields_Fields.ARP_ETH_ADDR_CODE;

            arp.ARPProtocolLength = 4;

            arp.ARPProtocolType = ARPFields_Fields.ARP_IP_ADDR_CODE;

            arp.ARPSenderHwAddress = localMAC;

            arp.ARPSenderProtoAddress = localIP;

            arp.SourceHwAddress = localMAC;

            arp.EthernetProtocol = EthernetPacket.EtherType.ARP;

            arp.ARPOperation = ARPFields_Fields.ARP_OP_REQ_CODE;

            arp.ARPTargetHwAddress = "00:00:00:00:00:00";

            arp.ARPTargetProtoAddress = targetIP;

            arp.DestinationHwAddress = "ff:ff:ff:ff:ff:ff";

            return arp;

        }

        static void Main(string[] args)

        {

            //获得网络设备列表,并选择将要发送请求的设备

            List<PcapDevice> devices = SharpPcap.Pcap.GetAllDevices();

            foreach (PcapDevice d in devices)

            {

                Console.WriteLine(d.Name);

                Console.WriteLine(d.Description);

                foreach (Pcap.PcapAddress addr in d.Addresses)

                {

                    Console.WriteLine(addr.ToString());

                }

                Console.WriteLine();

            }

            Console.WriteLine("请选择将要监控的设备:");

            int deviceIndex = Console.Read() - 48;

            PcapDevice device = devices[deviceIndex];

            localIP = device.Addresses[0].Addr.ipAddress;

            targetIP = IPAddress.Parse("192.168.1.1");

            string localMac = "00-1B-B9-DC-56-57";

            device.Open(false,-1);

            //为网络设备增加包到达事件

            device.OnPacketArrival += new Pcap.PacketArrivalEvent(device_OnPacketArrival);

            device.SetFilter("arp");

            //初始化一个ARP请求包

            ARPPacket p = getARPPacket(targetIP, localMac, localIP);

            Console.WriteLine(DateTime.Now);

            Console.WriteLine("发送ARP包:" + p);

            //发送ARP请求包

            device.SendPacket(p);

            device.StartCapture();

            Console.ReadKey();

            device.StopCapture();

            device.Close();

        }

        //检测到包到达时进行的操作

        static void device_OnPacketArrival(object sender, Packet packet)

        {

            ARPPacket arp = (ARPPacket)packet;

            if (arp.ARPOperation == 2 & arp.ARPSenderProtoAddress.Equals(targetIP) & arp.ARPTargetProtoAddress.Equals(localIP))

            {

                Console.WriteLine(DateTime.Now);

                Console.WriteLine("接收回复包:" + arp);

            }

        }

    }

}

欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!






















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/archive/2009/07/12/1522062.html ,如需转载请自行联系原作者

相关文章
|
6月前
|
缓存 监控 网络协议
使用 Wireshark 实现 ARP 嗅探监听网络
使用 Wireshark 实现 ARP 嗅探监听网络
|
网络协议 安全
kali:加速WEP黑客攻击,ARP请求重播攻击
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396280 ...
1042 0
|
6月前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
133 1
|
25天前
|
网络协议 安全 NoSQL
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练等具体操作详解步骤;精典图示举例说明、注意点及常见报错问题所对应的解决方法IKUN和I原们你这要是学不会我直接退出江湖;好吧!!!
网络空间安全之一个WH的超前沿全栈技术深入学习之路(8-2):scapy 定制 ARP 协议 、使用 nmap 进行僵尸扫描-实战演练、就怕你学成黑客啦!
|
1月前
|
缓存 网络协议 Linux
Python渗透测试之ARP毒化和协议应用
Python渗透测试之ARP毒化和协议应用
|
3月前
|
网络协议
用户态协议栈04-定时arp-table的实现
用户态协议栈04-定时arp-table的实现
|
3月前
|
缓存 网络协议
用户态协议栈02-arp reply实现
用户态协议栈02-arp reply实现
|
3月前
|
网络协议 安全 网络安全
ARP协议详解及其工作原理
【8月更文挑战第31天】
136 0
|
3月前
|
存储 缓存 监控