捕获网络数据包并进行分析的开源库-WinPcap
什么是WinPcap
WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库.
大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets。 这是一种简单的实现方式,因为操作系统 已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口。
然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网 络中的数据包。也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利用网络协议处理过的数据包。
WinPcap产生的目的,就是为Win32应用程序提供这种访问方式; WinPcap提供了以下功能
- 捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的
 - 在数据包发送给某应用程序前,根据用户指定的规则过滤数据包
 - 将原始数据包通过网络发送出去
 - 收集并统计网络流量信息
 
以上这些功能需要借助安装在Win32内核中的网络设备驱动程序才能实现,再加上几个动态链接库DLL。
所有这些功能都能通过一个强大的编程接口来表现出来,易于开发,并能在不同的操作系统上使用。 这本手册的主要目标是在一些程序范例的帮助下,叙述这些编程接口的使用。 如果您现在就想开始摸索这些功能,您可以直接进入 WinPcap用户手册.
哪些程序在使用WinPcap
WinPcap可以被用来制作许多类型的网络工具,比如具有分析,解决纷争,安全和监视功能的工具。特别地,一些基于WinPcap的典型应用有:
- 网络与协议分析器 (network and protocol analyzers)
 - 网络监视器 (network monitors)
 - 网络流量记录器 (traffic loggers)
 - 网络流量发生器 (traffic generators)
 - 用户级网桥及路由 (user-level bridges and routers)
 - 网络入侵检测系统 (network intrusion detection systems (NIDS))
 - 网络扫描器 (network scanners)
 - 安全工具 (security tools)
 
什么是WinPcap做不到的
WinPcap能 独立地 通过主机协议发送和接受数据,如同TCP-IP。 这就意味着WinPcap不能阻止、过滤或操纵同一机器上的其他应用程序的通讯: 它仅仅能简单地"监视"在网络上传输的数据包。所以,它不能提供类似网络流量控制、服务质量调度和个人防火墙之类的支持。
官网中文文档:http://www.ferrisxu.com/WinPcap/html/index.html
开发包(开发所需类库):http://www.winpcap.org/devel.htm
捕获网络数据包并进行分析的开源库-WinPcap的更多相关文章
- Linkerd 2.10(Step by Step)—使用 Debug Sidecar,注入调试容器来捕获网络数据包
		
Linkerd 2.10 系列 快速上手 Linkerd v2.10 Service Mesh 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 部署 ...
 - LINUX下的远端主机登入 校园网络注册  网络数据包转发和捕获
		
第一部分:LINUX 下的远端主机登入和校园网注册 校园网内目的主机远程管理登入程序 本程序为校园网内远程登入,管理功能,该程序分服务器端和客户端两部分:服务器端为remote_server_udp. ...
 - 网络数据包分析 网卡Offload
		
http://blog.nsfocus.net/network-packets-analysis-nic-offload/ 对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研 ...
 - Linux 中的网络数据包捕获
		
Linux 中的网络数据包捕获 Ashish Chaurasia, 工程师 简介: 本教程介绍了捕获和操纵数据包的不同机制.安全应用程序,如 VPN.防火墙和嗅探器,以及网络应用程序,如路由程序,都依 ...
 - linux2.6.24内核源代码分析(2)——扒一扒网络数据包在链路层的流向路径之一
		
在2.6.24内核中链路层接收网络数据包出现了两种方法,第一种是传统方法,利用中断来接收网络数据包,适用于低速设备:第二种是New Api(简称NAPI)方法,利用了中断+轮询的方法来接收网络数据包, ...
 - 用C++实现网络编程---抓取网络数据包的实现方法
		
一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各 ...
 - Android利用tcpdump和wireshark抓取网络数据包
		
Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...
 - UNIX网络编程——网络数据包检测
		
网络数据包检测 数据包捕获(sniffer):是指在网络上进行数据收集的行为,需要通过网卡来完成. 三种访问方式: BSD Packet Filter(BPF) SVR4 Datalink Provi ...
 - 发现新大陆:一个最简单的破解SSL加密网络数据包的方法
		
1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包 ...
 
随机推荐
- C# 获取农历日期
			
//C# 获取农历日期 ///<summary> /// 实例化一个 ChineseLunisolarCalendar ///</summary> private static ...
 - DB2 触发器的写法及表主键结构的修改
			
DROP TRIGGER TR_MONTHLYCLOSING; CREATE TRIGGER TR_MONTHLYCLOSING NO CASCADE BEFORE INSERT ON PT_MONT ...
 - 二分LIS模板
			
假设存在一个序列d[1..9] = 2 1 5 3 6 4 8 9 7,可以看出来它的LIS长度为5. 下面一步一步试着找出它. 我们定义一个序列B,然后令 i = 1 to 9 逐个考察这个序列. ...
 - thymeleaf初步使用
			
thymeleaf模板引擎初步使用 #thymelea模板配置 spring.thymeleaf.prefix=classpath:/templates/ spring.thymeleaf.suffi ...
 - Cookie和Session在Node.JS中的实践(三)
			
Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不 ...
 - APIO2018练习赛伪题解
			
传送门:https://pcms.university.innopolis.ru/statements/org/apio/2018/practice/statements.pdf 主要就在于后面三道构 ...
 - Jekyll搭建个人博客-拓展版
			
关于Jekyll Jekyll 是一个简单的博客形态的静态站点生产机器.它有一个模版目录,其中包含原始文本格式的文档,通过 Markdown (或者 Textile) 以及 Liquid 转化成一个完 ...
 - python 人工智论
			
https://www.zhihu.com/question/21395276 基于python深度学习库DeepPy的实现:GitHub - andersbll/neural_artistic_st ...
 - sql server 2008 R2 数据库文件大小限制
			
select @@version SQL2005 分五个版本,如下所列: 1.Enterprise(企业版) 2.Development(开发版) 3.Workgroup,(工作群版) 4.Stand ...
 - ssh-agent
			
ssh-agent是一种控制用来保存公钥身份验证所使用的私钥的程序. ssh-agent是一个密钥管理器,运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管,其他程序需要身 ...