SharpPcap 基本抓包源码

本文介绍了一个使用SharpPcap进行网络数据包捕获的基本示例。该示例展示了如何获取设备列表、选择捕获设备、启动及停止捕获过程,并通过控制台输出每个接收到的数据包的时间和长度。

继续,SharpPcap抓包的源码,Test示例,太强大了

 

///<summary>
              /// Basic capture example
              ///</summary>
              [STAThread]
              public static void Main(string[] args)
              {
                     string ver = Tamir.IPLib.Version.GetVersionString();
                     /* Print SharpPcap version */

                     Console.WriteLine("SharpPcap {0}, Example3.BasicCap.cs", ver);

 
                     /* Retrieve the device list */
                     PcapDeviceList devices = SharpPcap.GetAllDevices();
 
                     /*If no device exists, print error */
                     if(devices.Count<1)
                     {

                            Console.WriteLine("No device found on this machine");

                            return;
                     }
                    
                     Console.WriteLine();

                     Console.WriteLine("The following devices are available on this machine:");

                     Console.WriteLine("----------------------------------------------------");
                     Console.WriteLine();
 
                     int i=0;
 
                     /* Scan the list printing every entry */

                     foreach(PcapDevice dev in devices)

                     {
                            /* Description */

                            Console.WriteLine("{0}) {1}",i,dev.PcapDescription);

                            i++;
                     }
 
                     Console.WriteLine();

                     Console.Write("-- Please choose a device to capture: ");

                     i = int.Parse( Console.ReadLine() );

 
                     PcapDevice device = devices[i];
 

                     //Register our handler function to the 'packet arrival' event

                     device.PcapOnPacketArrival +=

                            new SharpPcap.PacketArrivalEvent( device_PcapOnPacketArrival );
 
                     //Open the device for capturing
                     //true -- means promiscuous mode
                     //1000 -- means a read wait of 1000ms
                     device.PcapOpen(true, 1000);
 
                     Console.WriteLine();

                     Console.WriteLine("-- Listenning on {0}, hit 'Enter' to stop...",

                            device.PcapDescription);
 
                     //Start the capturing process
                     device.PcapStartCapture();
 
                     //Wait for 'Enter' from the user.
                     Console.ReadLine();
 
                     //Stop the capturing process
                     device.PcapStopCapture();
 

                     Console.WriteLine("-- Capture stopped.");

 
                     //Close the pcap device
                     device.PcapClose();
              }
 
              ///<summary>

              /// Prints the time and length of each received packet

              ///</summary>

              private static void device_PcapOnPacketArrival(object sender, Packet packet)

              {
                     DateTime time = packet.PcapHeader.Date;
                     int len = packet.PcapHeader.PacketLength;

                     Console.WriteLine("{0}:{1}:{2},{3} Len={4}",

                            time.Hour, time.Minute, time.Second, time.Millisecond, len);

              }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值