替代WinPcap的新型Windows网络数据包截获软件——NPcap

NPcap是致力于采用Microsoft Light-Weight Filter (NDIS 6)技术对当前最流行的WinPcap工具包进行改进的一个项目。NPcap项目是最初2013年由Nmap网络扫描器项目(创始人Gordon Lyon)北京大学罗杨博士发起,由Google公司赞助的一个开源项目,遵循MIT协议(与WinPcap一致)。NPcap基于WinPcap
4.1.3源码基础上开发,支持32位和64位架构,在Windows Vista以上版本的系统中,采用NDIS 6技术的NPcap能够比原有的WinPcap数据包(NDIS 5)获得更好的抓包性能,并且稳定性更好。

NPcap源代码采用GitHub托管,其Repository地址为:

https://github.com/nmap/npcap

目前与WinPcap 4.1.3完全兼容的NPcap 1.2.1安装包下载地址:

https://svn.nmap.org/nmap-exp/yang/NPcap-LWF/winpcap-nmap-4.1.3-NDIS6-1.2.1.exe

NPcap相关开发讨论采用Nmap的开发者列表:

http://seclists.org/nmap-dev/

除了支持NDIS 6技术以外,NPcap还希望增强安全相关的机制,具体包括以下几方面:

http://nmap.org/soc/#winpcap

  • Support for the newer NDIS 6 API rather than NDIS 4
  • Privileges support so we can restrict WinPcap uses to users with Administrator access. This is similar to UNIX where you need root access to capture packets.
  • No-install DLL support would allow Pcap to load and unload automatically while the application runs. Riverbed used to sell a "WinPcap Pro" edition which did that, but they have discontinued that.
  • Enable Microsoft Driver Signing.
  • If we release our own “NPcap”, we‘d presumably change the function entry point and external variable names so that we don‘t conflict with original WinPcap. Riverbed WinPcap Pro did this.

目前,NPcap软件的发展方向有所转变(版本号也从1.2.1从新降为0.01),由原来的替代WinPcap,到现在的试图实现与WinPcap的共存,即可同时安装在同一台Windows计算机上,NPcap甚至打算开发一个通用的网络数据包截获框架,支持包括WinPcap、NPcap、Win10Pcap在内的所有软件,由具体的上层应用,如Wireshark、Nmap自己决定要使用哪一个底层截获软件。即便如此,之前的如移植到NDIS 6上的工作仍然会在WinPcap开放源代码Repository后集成到官方代码中。

现在Nmap已经着手进行与新NPcap的兼容工作,采用优先使用NPcap,其次使用WinPcap的策略,下面是相关的开发组信息:

http://seclists.org/nmap-dev/2015/q2/258

附邮件内容:

I have added the NPcap support for Nmap. Only one file is changed: \mswin32\winfix.cc, the repo is here:

Nmap that supports NPcap:

https://svn.nmap.org/nmap-exp/yang/nmap-npcap/

revision: 34614

Latest NPcap 0.01 installer:

https://svn.nmap.org/nmap-exp/yang/NPcap-LWF/npcap-nmap-0.01.exe

revision: 34615

Original WinPcap 4.13 (Nmap) installer:

https://svn.nmap.org/nmap-exp/yang/NPcap-LWF/winpcap-nmap-4.13.exe

revision: 34615

Indication:

Using this version of Nmap, type:

nmap -v -A scanme.nmap.org

You will see output in your console like "Using NPCAP service for packet capturing and sending" or "Using NPF service for packet capturing and sending".

Behaviors:

If you install NPcap and WinPcap both, nmap will use NPcap first, and you will see "Using NPCAP service for packet capturing and sending".

If you install NPcap only, you will see "Using NPCAP service for packet capturing and sending".

If you install WinPcap only, you will see "Using NPF service for packet capturing and sending".

If you install neither of them, nmap will cause error as before.

NPcap is for Windows 7 above, so test it on Win7 or Win8.

时间: 2024-12-13 05:51:30

替代WinPcap的新型Windows网络数据包截获软件——NPcap的相关文章

基于LSP的网络数据包截获(一) SPI

SPI是Service Provider Interface,WinSock2的服务提供者接口. WinSock2允许开发者编写自己的服务提供者接口SPI程序,自己编写的SPI程序安装到系统后,所有的WinSock请求会先发送到这个程序并由他完成网络调用. WinSock2 SPI允许开发两类服务提供者: 1.传输服务提供者(transport service provider) 能够提供建立通信.传输数据.日常数据流控制和错误控制等功能的服务. 以DLL形式存在,对外只有一个入口函数,即WSP

捕获网络数据包并进行分析的开源库-WinPcap

什么是WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库. 大多数网络应用程序通过被广泛使用的操作系统元件来访问网络,比如sockets.  这是一种简单的实现方式,因为操作系统 已经妥善处理了底层具体实现细节(比如协议处理,封装数据包等等),并且提供了一个与读写文件类似的,令人熟悉的接口. 然而,有些时候,这种“简单的方式”并不能满足任务的需求,因为有些应用程序需要直接访问网 络中的数据包.也就是说,那些应用程序需要访问原始数据包,即没有被操作系统利

网络数据包分析 网卡Offload

http://blog.nsfocus.net/network-packets-analysis-nic-offload/ 对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研究员在日常工作中,经常会捕获到一些大小远大于MTU值的数据包,经过分析这些大包的特性,发现和网卡的offload特性有关,本文对网卡Offload技术做简要描述. 文章目录 网络分片技术 网卡offload机制 发送模式 接收模式 网卡offload模式的设置 Linux windows 网卡Offload

一个最简单的通过WireShark破解SSL加密网络数据包的方法

原文地址: http://article.yeeyan.org/view/530101/444688 一般来说,我们用WireShark来抓取包进行分析是没有多大问题的.但这里有个问题是,如果你碰到的是用SSL/TLS等加密手段加密过的网络数据的时候,往往我们只能束手无策.在过去的话,如果我们拥有的该传输会话的私钥的话我们还是可以将它提供给WireShark来让其对这些加密数据包进行解密的 1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的

用C++实现网络编程,抓取网络数据包的实现方法和介绍

做过网管或协议分析的人一般都熟悉sniffer这个工具,它可以捕捉流经本地网卡的所有数据包.抓取网络数据包进行分析有很多用处,如分析网络是否有网络病毒等异常数据,通信协议的分析(数据链路层协议.IP.UDP.TCP.甚至各种应用层协议),敏感数据的捕捉等.下面我们就来看看在windows下如何实现数据包的捕获. 下面先对网络嗅探器的原理做简单介绍. 嗅探器设计原理 嗅探器作为一种网络通讯程序,也是通过对网卡的编程来实现网络通讯的,对网卡的编程也是使用通常的套接字(socket)方式来进行.但是,

发现新大陆:一个最简单的破解SSL加密网络数据包的方法

1. 简介 相信能访问到这篇文章的同行基本上都会用过流行的网络抓包工具WireShark,用它来抓取相应的网络数据包来进行问题分析或者其他你懂的之类的事情. 一般来说,我们用WireShark来抓取包进行分析是没有多大问题的.但这里有个问题是,如果你碰到的是用SSL/TLS等加密手段加密过的网络数据的时候,往往我们只能束手无策.在过去的话,如果我们拥有的该传输会话的私钥的话我们还是可以将它提供给WireShark来让其对这些加密数据包进行解密的,但这已经是想当年还用RSA进行网络数据加密的年代的

C++版的网络数据包解析策略(升级版)

初版:http://www.cnblogs.com/wjshan0808/p/6580638.html 说明:在实现了对应的接口后该策略可以适合绝大多数的网络数据包结构 首先,是三个接口 IProduceProxy.h #ifndef _I_PRODUCE_PROXY_H_ #define _I_PRODUCE_PROXY_H_ //Code #define CODE_PRODUCE_PROXY_OK 0x00 //OK #define CODE_PRODUCE_PROXY_NI 0x01 //

Linux内核中网络数据包的接收-第一部分 概念和框架

与网络数据包的发送不同,网络收包是异步的的,因为你不确定谁会在什么时候突然发一个网络包给你,因此这个网络收包逻辑其实包含两件事:1.数据包到来后的通知2.收到通知并从数据包中获取数据这两件事发生在协议栈的两端,即网卡/协议栈边界以及协议栈/应用边界:网卡/协议栈边界:网卡通知数据包到来,中断协议栈收包:协议栈栈/应用边界:协议栈将数据包填充socket队列,通知应用程序有数据可读,应用程序负责接收数据.本文就来介绍一下关于这两个边界的这两件事是怎么一个细节,关乎网卡中断,NAPI,网卡poll,

Linux程序设计学习笔记----网络编程之网络数据包拆封包与字节顺序大小端

网络数据包的封包与拆包 过程如下: 将数据从一台计算机通过一定的路径发送到另一台计算机.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示: 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据包(packet),在链路层叫做帧(frame).数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理. 上图对应两台计算机在同一网段中的情况,