using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpPcap;
using SharpPcap.Protocols;
using SharpPcap.Packets;
using System.IO;
namespace ArpCap
{
class Program
{
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];
Console.WriteLine("开始监控设备:" + device.Description);
device.OnPacketArrival += new Pcap.PacketArrivalEvent(device_OnPacketArrival);
device.OnCaptureStopped += new Pcap.PcapCaptureStoppedEvent(device_OnCaptureStopped);
device.Open(false);
device.SetFilter("ip");
device.StartCapture();
Console.ReadKey();
device.StopCapture();
device.Close();
}
static void device_OnCaptureStopped(object sender, bool error)
{
//throw new NotImplementedException();
Console.WriteLine("Stop Capture!");
}
static void device_OnPacketArrival(object sender, Packet packet)
{
ARPPacket p = (ARPPacket)packet;
if (p.ARPSenderProtoAddress.ToString() != "10.10.11.88")
{
Console.WriteLine();
Console.WriteLine(DateTime.Now.ToString());
Console.WriteLine(p);
Console.WriteLine("源地址:");
Console.WriteLine(p.ARPSenderProtoAddress.ToString());
Console.WriteLine("目的地址:");
Console.WriteLine(p.ARPTargetProtoAddress.ToString());
}
}
}
}