利用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 ,如需转载请自行联系原作者

相关文章
|
网络协议 安全
kali:加速WEP黑客攻击,ARP请求重播攻击
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396280 ...
1013 0
|
4月前
|
缓存 网络协议 安全
【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
【1月更文挑战第27天】【网络工程师】<软考中级>解析协议ARP&路由协议RIP/OSPF/BGP
|
5月前
|
存储 缓存 网络协议
dpdk课程学习之练习笔记二(arp, udp协议api测试)
dpdk课程学习之练习笔记二(arp, udp协议api测试)
70 0
|
17天前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
21 1
|
7月前
|
缓存 网络协议 网络架构
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
【计算机网络】第三章 数据链路层(MAC地址 IP地址 ARP协议)
|
2天前
|
网络协议 Linux Android开发
计算机网络:MAC地址 & IP地址 & ARP协议
计算机网络:MAC地址 & IP地址 & ARP协议
26 7
|
4月前
|
存储 缓存 网络协议
ARP协议:地址解析协议
ARP协议:地址解析协议
44 0
|
12天前
|
存储 缓存 运维
基于 Wireshark 分析 ARP 协议
基于 Wireshark 分析 ARP 协议
|
15天前
|
存储 缓存 网络协议
CCNA 200-301系列:地址解析协议(ARP)
【4月更文挑战第21天】
20 0