吉吉于

free

SharpPcap学习笔记3

这节主要实现将捕获的数据头写入文件。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SharpPcap;
using PacketDotNet;
namespace SharpPcap_Demo
{
    class Program
    {
        static void Main(string[] args)
        {
            //显示当前SharpPcap版本号
            string ver = SharpPcap.Version.VersionString;
            Console.WriteLine("SharpPcap Version : {0}",ver);

            //获取网络设备
            var devices = LivePcapDeviceList.Instance;
            if (devices.Count < 1)
            {
                Console.WriteLine("No devices were found on this machine");
                return;
            }

            Console.WriteLine("The following devices are available on this machine:");
            Console.WriteLine("----------------------------------------------------");
            int i = 0;
            foreach (LivePcapDevice dev in devices)
            {
                Console.WriteLine("{0} {1} {2}",i,dev.Name,dev.Description);
                i++;
            }
            //选择一个要监听的设备
            Console.Write("Please choose a device to capture:");
            i = int.Parse(Console.ReadLine());
            LivePcapDevice device = devices[i];
            device.OnPacketArrival += new PacketArrivalEventHandler(DeviceOnPacketArrival);
            Console.WriteLine("Please enter the output file name:");
            //保存文件名
            string capFile = Console.ReadLine();
            //开启监听
            device.Open();
            //打开或者创建一个文件
            device.DumpOpen(capFile);
            Console.WriteLine("Listening on {0},hit 'Ctrl+C' to exit...",device.Description);
            //开始截获数据包
            device.Capture();
            //将数据流写入文件
            device.DumpFlush();
            //关闭文件
            device.DumpClose();
            //关闭监听
            device.Close();
        }
        private static void DeviceOnPacketArrival(object sender, CaptureEventArgs e)
        {
            LivePcapDevice devices = (LivePcapDevice)sender;
            if (devices.DumpOpened)
            {
                devices.Dump(e.Packet);
                Console.WriteLine("Packet dumped to file.");
            }
        }
    }
}

 

转载请注明:于哲的博客 » SharpPcap学习笔记3