WinPcap

 
古城
@ 2008.03.22
分类:技术笔记
点击:2504  评论:0
 
 
 
    WinPcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。
    开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它提供了以下的各项功能:
    1> 捕获原始数据报,包括在共享网络上各主机发送/接收的以及相互之间交换的数据报;
    2> 在数据报发往应用程序之前,按照自定义的规则将某些特殊的数据报过滤掉;
    3> 在网络上发送原始的数据报;
    4> 收集网络通信过程中的统计信息。
    WinPcap的主要功能在于独立于主机协议(如TCP/IP)而发送和接收原始数据报。也就是说,WinPcap不能阻塞,过滤或控制其他应用程序数据报的发收,它仅仅只是监听共享网络上传送的数据报。因此,它不能用于QoS调度程序或个人防火墙。目前,winpcap开发的主要对象是windows NT/2000/XP,这主要是因为在使用winpcap的用户中只有一小部分是仅使用windows 95/98/Me,并且微软也已经放弃了对win9x的开发。因此本文相关的程序T-ARP也是面向NT/2000/XP用户的。其实winpcap中的面向9x系统的概念和NT系统的非常相似,只是在某些实现上有点差异,比如说9x只支持ANSI编码,而NT系统则提倡使用Unicode编码。有个软件叫sniffer pro.可以作网管软件用,有很多功能,可监视网络运行情况,每台网内机器的数据流量,实时反映每台机器所访问IP以及它们之间的数据流通情况,可以抓包,可对过滤器进行设置,以便只抓取想要的包,比如POP3包,smtp包,ftp包等,并可从中找到邮箱用户名和密码,还有ftp用户名和密码.它还可以在使用交换机的网络上监听,不过要在交换机上装它的一个软件.还有一个简单的监听软件叫Passwordsniffer,可截获邮箱用户名和密码,还有ftp用户名和密码,它只能用在用HUB网络上著名软件tcpdump及ids snort都是基于libpcap编写的,此外Nmap扫描器也是基于libpcap来捕获目标主机返回的数据包的。  



    WinPcap是用于网络封包抓取的一套工具,可适用于32位的操作平台上解析网络封包,包含了核心的封包过滤,一个底层动态链接库,和一个高层系统函数库,及可用来直接存取封包的应用程序界面。
    Winpcap是一个免费公开的软件系统。它用于windows系统下的直接的网络编程。
    大多数网络应用程序访问网络是通过广泛使用的套接字。这种方法很容易实现网络数据传输,因为操作系统负责底层的细节(比如协议栈,数据流组装等)以及提供了类似于文件读写的函数接口。
    但是有时,简单的方法是不够的。因为一些应用程序需要一个底层环境去直接操纵网络通信。因此需要一个不需要协议栈支持的原始的访问网络的方法。
    winpcap适用于下面的开发者:
    1、捕获原始数据包。不管这个包是发往本地机,还是其他机器之间的交换包。
    2、在数据包被发送到应用程序之前,通过用户定义的规则过滤。
    3、向网络发送原始数据包。
    4、对网络通信量做出统计。
    这些功能依赖于Win32系统内核中的设备驱动以及一些动态链接库。
    Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。
    什么样的程序需要使用Winpcap
    很多不同的工具软件使用Winpcap于网络分析,故障排除,网络安全监控等方面。Winpcap特别适用于下面这几个经典领域:
    1、网络及协议分析
    2、网络监控
    3、通信日志记录
    4、traffic generators
    5、用户级别的桥路和路由
    6、网络入侵检测系统(NIDS)
    7、网络扫描
    8、安全工具
    Winpcap有些方面不能做。它不依靠主机的诸如TCP/IP协议去收发数据包。这意味着它不能阻塞,不能处理同一台主机中各程序之间的通信数据。它只能“嗅探”到物理线路上的数据报。因此它不适用于traffic 
    shapers,QoS调度,以及个人防火墙。
    Winpcap内部结构
    Winpcap是一个Win32平台下用于抓包和分析的系统。包括一个内核级别的packet 
    filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll)

    1、捕获系统要能得到网络上原始传输数据必须绕过协议栈。这就需要一个模快运行于操作系统内核,与网络设备驱动接口直接打交道。这一部分极端依赖系统,也被认为是一种设备驱动。现有版本有Windows 85,98,ME,NT 4,2000,Xp。这些驱动提供一些如数据包的捕获与发送这些基本功能,还提供一些高级的可编程的过滤系统和监控引擎。过滤系统可以约束只捕获特定的数据包(比如,只捕获特定主机发送的FTP报文)。监控引擎提供了一种强大但简单的使用机制去获得网络通信的统计荷载数据。
    2、捕获系统要让用户程序使用内核提供的功能必须要有一个编程接口。Winpcap提供了两个不同的库:packet.dll 和wpcap.dll。
    packet.dll提供一个底层的API,通过这个API可直接访问网络设备驱动,而独立于Microsoft OS.wpcap.dll是一个高层的强大捕获程序库,与Unix下的libpcap兼容。它独立于下层的网络硬件和操作系统。
 
 
 
 
 

本文评论

 
 

发表评论

你的评论
← 填你的昵称
以下内容非必填,可根据需要填写
← 可以展示在你的评论上方
← 不会在页面展示
← 不会在页面展示
← 只给我看?勾选上
这是一个别人称之为角落的世界
幸而,它的确是我的世界