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);

              }

 

Tags:  SharpPcap 抓包

延伸阅读

最新评论

发表评论