sharppcap-中文开发全攻略

上传人:第*** 文档编号:31319170 上传时间:2018-02-06 格式:DOC 页数:27 大小:545KB
返回 下载 相关 举报
sharppcap-中文开发全攻略_第1页
第1页 / 共27页
sharppcap-中文开发全攻略_第2页
第2页 / 共27页
sharppcap-中文开发全攻略_第3页
第3页 / 共27页
sharppcap-中文开发全攻略_第4页
第4页 / 共27页
sharppcap-中文开发全攻略_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《sharppcap-中文开发全攻略》由会员分享,可在线阅读,更多相关《sharppcap-中文开发全攻略(27页珍藏版)》请在金锄头文库上搜索。

1、简介包捕获(或数据包嗅探)是收集数据,通过特定的网络接口将所有数据包的过程。在我们的应用程序捕获网络数据包是一个强大的能力,它可以让我们写网络监控,数据包分析器和安全工具。本 的 libpcap 库和基于 UNIX 系统 WinPcap 的用于 Windows 是最广泛使用的数据包捕获驱动程序监视 API 提供低级别的网络。其中应用程序使用的 libpcap / WinPcap 的包捕获子系统为是著名的 tcpdump 的和 Wireshark 的。在这篇文章中,我们将介绍 SharpPcap WinPcap 的从您的。 NET 应用程序。)NET 程序集(库接口与 libpcap 的或并会给

2、你一个详细的方案编制教程教你如何使用。背景塔米尔加尔在 2004 年左右开始的 SharpPcap 项目。他想用在。NET 应用 WinPcap 而在他的大学最后项目的工作。该项目涉及 VoIP 流量分析和解码,他想继续用 C编码具有省时,如垃圾收集功能简单。 WinPcap 的 API 的访问似乎从净是相当流行的要求,他发现在CodeProject 上的一些网站,让您做到这一点有益的项目。: 数据包捕获和分析仪 原始套接字捕获使用 C 与 WinPcap 的包嗅探功能移植到。NET 库第一个项目是一个伟大的空灵。NET 的克隆,让您获取和分析大量的数据包的协议类型。然而,随着这个项目的几个问

3、题使它几乎不可能得到在其他。NET 应用程序共享。首先,作者没有提供用于捕获,可以通过其他。NET 应用程序中使用任何通用的 API 包。他没有单独的 UI 代码和他的分析和捕获的代码,使他的捕捉代码类依赖于图形用户界面,如 ListView 操作。其次,由于某些原因,笔者选择了重新实现在 C由他本人,而不是仅仅 WinPcap 的包装他们的部分职能。这意味着他的应用程序无法利用新的 WinPcap 的版本的硬编码的优势,因为他在他的 WinPcap 的应用程序的某些版本。第二个和第三个物品的包装项目为 WinPcap 的好开始,但他们没有提供一些重要的 WinPcap的功能,如离线 pcap

4、 的文件处理和应用内核级数据包过滤器,以及最重要的是他们提供了这样的分析没有协议分析器类包。这两个项目没有张贴的文章,以自己的库的源代码,让其他人一起延长他们的工作和增加新功能和新的数据包分析器类。因此,塔米尔决定开始他对自己的图书馆工作。在 1.x 系列的几个版本发布。发展放缓对2007 年年中时,在 1.x 系列的最后一个版本发布时,SharpPcap 1.6.2。克里斯摩根发生在 2008 年 11 月超过 SharpPcap 发展。从那时起 SharpPcap 主要内部已重写和 API 改进。2010 年 2 月下旬,SharpPcap 3.0 被释放。此版本是一个重写 SharpPc

5、ap 的数据包分析器。分组分析功能被打破,进入一个新的图书馆,Packet.Net。 SharpPcap 注意到与libpcap 的/ WinPcap 的包和 Packet.Net 注意到接口解剖和创造护理照顾。对 Packet.Net的建筑的细节将在本教程的后面讨论。SharpPcap v3.5 版本发布了 2 月 1 日 ,2011 年。 3.5 版本包含重大的空气污染指数的变化以及 WinPcap 的远程采集和支持 AirPcap。关于 SharpPcap 的目的 SharpPcap 是提供一个框架 NET 应用程序捕获,注资。和分析网络数据包。SharpPcap 是公开和积极发展同它的

6、源代码和文件发布在 SourceForge 托管。源代码补丁,以改善或解决问题欢迎通过 sharppcap 开发者邮件列表。错误报告,功能要求和其他查询正在积极回答问题的论坛和跟踪支持,所以如果你有任何问题请与库随时问。SharpPcap 是一个完全跨平台的库管理。同一程序集运行在微软的。 NET 以及单在 32 位和64 位平台。下面的列表说明了目前 SharpPcap 功能支持: 单一组件的 Microsoft。NET 和 Mono 平台 上 的 Windows( 32 位或 64 位)和Linux( 32 或 64 位)和 Mac。 高性能 - SharpPcap 可以捕捉足够快跟上的

7、3MB / s 的传输速率高达 SCP 的 WinPcap 的扩展部分支持:o 设置内核缓冲区大小o 注射用的数据包发送队列。o 收集在一个特定的网络接口的网络统计 AirPcap 支持 枚举和显示有关 Windows 机器上的物理网络接口的细节。 捕获低级别的网络数据包将通过给定的接口。 分析和解析以下协议:o 以太网o 血清瘦素(Linux 的熟食方式采集)o ARP(地址解析协议)o IP(因特网协议): IPv4 的 IPv6 的o TCP(传输控制协议)o UDP(用户数据报协议)o ICMP 协议(Internet 控制消息协议): ICMPv4 ICMPv6 报o IGMPv2

8、的o PPPoE 协议o 和平之路o LLDP 功能o 唤醒局域网(网络唤醒) 在给定接口注入的低级别的网络数据包。 处理(阅读和写作)离线数据包捕获文件。 检索的数据包接收适配器统计对比下降请检查项目主页主页最新的更新和 bug 修复。SharpPcap 架构SharpPcap 具有层状结构,在顶层的类,所有设备的工作: CaptureDeviceList -检索系统名单上的所有设备 OfflineCaptureDevice -文件读取装置从一个 pcap 的捕捉 ICaptureDevice -所有的捕捉设备有 ICaptureDevice 接口该命名空间的布局层次: libpcap 的o

9、 LibPcapLiveDevice -一个 ICaptureDeviceo LibPcapLiveDeviceList -检索一个名单 LibPcapLiveDevice 设备(其中包括 pcap 的/ WinPcap 的和 airpcap 设备) WinPcap 的o WinPcapDeviceList -检索一个名单 WinPcapDevices(其中包括WinPcap 的和 airpcap 设备)o WinPcapDevice -阿 LibPcapLiveDevice 额外 WinPcap 的功能和接口 AirPcapo AirPcapDeviceList -检索一个名单 AirPca

10、pDeviceso AirPcapDevice -阿 WinPcapDevice 额外 AirPcap 功能和接口CaptureDeviceList 返回一个设备清单完全分化。这意味着每个 ICaptureDevice 由归国 CaptureDeviceList 要么是 LibPcapLiveDevice,一 WinPcapDevice 或AirPcapDevice。这使您可以检索整个列表的设备和差异化在每个设备类型看。如果你想获得一个特定的特定类型的设备只,你可以使用一个*DeviceList 类。Collapse | Copy Code/ /检索所有捕获设备= CaptureDeviceL

11、ist VaR 的装置;/ /类型的区分依据的 foreach(ICaptureDevice dev 的设备中)如果(dev 是 AirPcapDevice)/ /过程作为 AirPcapDevice 否则如果(dev 是 WinPcapDevice)/ /过程作为 WinPcapDevice 否则如果(dev 是 LibPcapLiveDevice)/ /过程作为 LibPcapLiveDevice Collapse | Copy Code/ /只检索 WinPcap 的(和 AirPcap 设备)= AirPcapDeviceList VaR 的装置;的 foreach(AirPcapDe

12、vice dev 的设备中)/ /处理该 AirPcap 设备 Packet.Net 结构和用法Packet.Net 切换从 2.x 到 SharpPcap 继承模型的嵌套包之一。所有的数据包包含一个Packet PayloadPacket 属性和一个 Byte PayloadData 财产。一个或多个这些都不能有效。以太网上的 TCP 数据包捕获的可能 EthernetPacket“ - IPv4 包 - ”TCP 数据包。在 Packet.Net 时,TCP 数据包可能被访问一样capturedPacket.PayloadPacket.PayloadPacket 而是要帮助用户从 stat

13、ic GetEncapsulsted()方法被添加,因此用户可以做的 var tcpPacket = TcpPacket.GetEncapsulated(capturedPacket);。该 GetEncapsulated()方法是很聪明,设计工作在许多不同的情况。UdpPacket.GetEncapsulated()将返回 EthernetPacket UDP 包的数据包,包括“ - IP 数据包” - UdpPacket 或 Linux 熟捕捉- “知识产权” - UdpPacket 或EthernetPacket - “的 PPPoE - ”和平之路“ - 知识产权 - ”UdpPack

14、et。我们建议使用 GetEncapsulated()方法来检索子数据包。随着 Packet.Net,建设包是这样的:Collapse | Copy Code使用 PacketDotNet;ushort 的 tcpSourcePort = 123;ushort 的 tcpDestinationPort = 321;风险 tcpPacket = 新 TcpPacket(tcpSourcePort,tcpDestinationPort);风险 ipSourceAddress = System.Net.IPAddress.Parse(“192.168.1.1”);风险 ipDestinationAd

15、dress = System.Net.IPAddress.Parse(“192.168.1.2”);风险 ipPacket = 新 IPv4Packet(ipSourceAddress,ipDestinationAddress);风险 sourceHwAddress =“90-90-90-90-90-90”;风险 ethernetSourceHwAddress = System.Net.NetworkInformation.PhysicalAddress.Parse(sourceHwAddress);风险 destinationHwAddress =“80-80-80-80-80-80”;风险

16、 ethernetDestinationHwAddress = System.Net.NetworkInformation.PhysicalAddress.Parse(destinationHwAddress);/ /注意:使用 EthernetPacketType.None 说明了以太网/ /协议类型的更新是基于数据包有效载荷/ /分配给特定的以太网包风险 ethernetPacket = 新 EthernetPacket(ethernetSourceHwAddress,ethernetDestinationHwAddress,EthernetPacketType.None);/ /现在所有的数据包缝在一起ipPacket.PayloadPacket = tcpPacket;ethernetPacket.PayloadPacket = ipPacket;/ /并打印出包地看到,它看上去就像我们希望它Console.WriteLine(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号