C# 利用SharpPcap实现网络包捕获嗅探
发布时间:2020-12-16 01:13:30 所属栏目:百科 来源:网络整理
导读:本文是利用SharpPcap实现网络包的捕获的小例子,实现了端口监控,数据包捕获等功能,主要用于学习分享。 什么是SharpPcap? SharpPcap 是一个.NET 环境下的网络包捕获框架,基于著名的 pcap/WinPcap 库开发。提供了捕获、注入、分析和构建的功能,适用于 C#
本文是利用SharpPcap实现网络包的捕获的小例子,实现了端口监控,数据包捕获等功能,主要用于学习分享。 什么是SharpPcap? SharpPcap 是一个.NET 环境下的网络包捕获框架,基于著名的 pcap/WinPcap 库开发。提供了捕获、注入、分析和构建的功能,适用于 C# 和 VB NET 开发语言。 SharpPcap有两部分组成:1> SharpPcap.dll 负责数据的捕获? 2> PacketDotNet.dll负责数据包的解析 思路:
涉及知识点:
效果图下: SharpPcap核心代码: 1 /// <summary> 2 /// 开始捕捉 3 </summary> 4 <param name="sender"></param> 5 <param name="e"></param> 6 private void btnStart_Click(object sender,EventArgs e) 7 { 8 if (this.combDevice.SelectedIndex > -1) 9 { 10 StartCapture(this.combDevice.SelectedIndex); 11 this.btnStart.Enabled = false; 12 this.btnStop.Enabled = true 13 } 14 else { 15 MessageBox.Show(this,"请选择一个设备",1)">提示",MessageBoxButtons.OK); 16 17 } 18 19 20 停止捕捉 21 22 23 24 void btnStop_Click( 25 26 Shutdown(); 27 28 29 30 31 void StartCapture(int itemIndex) 32 33 packetCount = 0 34 device = CaptureDeviceList.Instance[itemIndex]; 35 packetStrings = new Queue<PacketWrapper>(); 36 bs = new BindingSource(); 37 dgvData.DataSource = bs; 38 LastStatisticsOutput = DateTime.Now; 39 40 // start the background thread 41 backgroundThreadStop = 42 backgroundThread = Thread(BackgroundThread); 43 backgroundThread.Start(); 44 45 46 setup background capture 47 device.OnPacketArrival += PacketArrivalEventHandler(device_OnPacketArrival); 48 device.OnCaptureStopped += CaptureStoppedEventHandler(device_OnCaptureStopped); 49 device.Open(); 50 51 tcpdump filter to capture only TCP/IP packets 52 string filter = ip and tcp 53 device.Filter = filter; 54 55 force an initial statistics update 56 captureStatistics = device.Statistics; 57 UpdateCaptureStatistics(); 58 59 start the background capture 60 device.StartCapture(); 61 62 btnStop.Enabled = 63 64 65 66 设备接收事件 67 68 69 70 void device_OnPacketArrival( 71 72 print out periodic statistics about this device 73 var Now = 74 var interval = Now - LastStatisticsOutput; 75 if (interval > new TimeSpan(0,1)">2)) 76 77 Console.WriteLine(device_OnPacketArrival: " + e.Device.Statistics); 78 captureStatistics = e.Device.Statistics; 79 statisticsUiNeedsUpdate = 80 LastStatisticsOutput = Now; 81 82 83 lock (QueueLock) 84 85 PacketQueue.Add(e.Packet); 86 87 88 89 90 设备停止事件 91 92 93 <param name="status"></param> 94 void device_OnCaptureStopped( 95 96 if (status != CaptureStoppedEventStatus.CompletedWithoutError) 97 98 MessageBox.Show(Error stopping captureError 99 100 101 102 void UpdateCaptureStatistics() 103 104 tlblStatistic.Text = string.Format(接收包: {0},丢弃包: {1},接口丢弃包: {2}105 }
? 源码下载 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |