winpcap_winpcap安装包 - CSDN
winpcap 订阅
winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。 展开全文
winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。
信息
目    的
为win32提供访问网络底层能力
外文名
windows packet capture
作    用
网络分析,故障排除等方面
使用平台
windows
中文名
winpcap
winpcap特点
Winpcap提供了一个强大的编程接口,它很容易地在各个操作系统之间进行移植,也很方便程序员进行开发。什么样的程序需要使用Winpcap很多不同的工具软件使用Winpcap于网络分析,故障排除,网络安全监控等方面。Winpcap特别适用于下面这几个经典领域:1、网络及协议分析2、网络监控3、通信日志记录4、traffic generators5、用户级别的桥路和路由6、网络入侵检测系统(NIDS)7、网络扫描8、安全工具Winpcap有些方面不能做。它不依靠主机的诸如TCP/IP协议去收发数据包。这意味着它不能阻塞,不能处理同一台主机中各程序之间的通信数据。它只能“嗅探”到物理线路上的数据包。因此它不适用于traffic shapers,QoS调度,以及个人防火墙。Winpcap内部结构Winpcap是一个Win32平台下用于抓包和分析的系统。包括一个内核级别的packet filter,一个底层的DLL(packet.dll)和一个高级的独立于系统的DLL(Wpcap.dll) [1] 
收起全文
精华内容
参与话题
  • 如何在win10下成功安装winpcap_4.1.3

    万次阅读 2018-05-01 15:20:33
    想通过Wireshark抓包学习,首先需要安装winpcap驱动来获得网卡接口。现实是winpcap不支持win10系统,在安装时会出现下图所示的问题:先找到电脑中原先已安装的winpcap,但大多数时候我们是不知道自己电脑上已安装了...

           想通过Wireshark抓包学习,首先需要安装winpcap驱动来获得网卡接口。现实是winpcap不支持win10系统,在安装时会出现下图所示的问题:


    先找到电脑中原先已安装的winpcap,但大多数时候我们是不知道自己电脑上已安装了winpcap的。

    点击版本较早的winpcap(我这里是winpcap_4_1_2)安装,会发现安装失败,这不要紧,然后再点击安装winpcap_4.1.3就能成功安装上了。



    展开全文
  • WinPcap v4.1.3 官方版

    2020-07-30 23:31:55
    WinPcap分析在线播放的流媒体直接下载地址信息 类似与libpcap的包,支持WIN32平台。可以进行信息包捕获和网络分析,是基于UNIX的libpcap和BPF(Berkeley 分帧过滤器)模型的包。
  • 使用winpcap开发网络抓包工具

    千次阅读 2018-08-22 22:43:24
    winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。进行过网络方面学习...

    前言:
    winpcap(windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。进行过网络方面学习的都知道,wireshark软件是基于winpcap的,winpcap可直接开发基于网络底层协议的应用程序,例如arp,以后会写一篇arp的开发、应用和防御
    功能需求:
    1、截取主机A发送给主机B的消息
    2、获取消息保存到文件
    3、将消息下发到主机B
    4、截取接收主机B消息
    5、获取消息保存到文件
    6、将消息转发到主机A
    程序设计
    1、由于winpcap是基于网卡的数据获取,所以先获取正确的网卡
    2、打开选择的网卡设备
    设计一个获取主机A消息的线程和一个获取主机B消息的线程。
    相关接口介绍
    1、int pcap_findalldevs(pcap_if_t **, char *);//获取所有网络设备,保存于pcap_if_t 指向的内存空间
    2、void pcap_freealldevs(pcap_if_t *); // 清空所有网络设备
    3、pcap_t *pcap_open(const char *source, // 获取的设备名
    int snaplen, //要捕捉的数据包的部分
    int flags, // 模式
    int read_timeout,// 超时时间
    struct pcap_rmtauth *auth, // 远程机器验证
    char *errbuf);// 错误缓冲池

    4、void pcap_close(pcap_t *);//关闭设备
    5、int pcap_compile(//编译过滤规则
    pcap_t *,
    const char *,
    int,
    bpf_u_int32);

    6、int pcap_setfilter(pcap_t *, struct bpf_program *);// 设置过滤规则
    7、int pcap_next_ex(// 从interface或离线记录文件获取一个报文
    pcap_t *,
    struct pcap_pkthdr **, // 报文头,包含mac地址
    const u_char **);//报文内容

    程序设计
    main.cpp

    #include "pcap.h"
    #include "vector"
    
    using namespace std;
    
    int main()
    {
        vector<string> vecDevName;
        vecDevName.clear();
        pcap_if_t *alldevs;
        char errbuf[PCAP_ERRBUF_SIZE];
    
        /*查询网卡设备*/
        if(pcap_findalldevs(&alldevs, errbuf) == -1)
        {       
            /* At this point, we don't need any more the device list. Free it */
            pcap_freealldevs(alldevs);
            return -1;  
        }
        while (alldevs->next != NULL)
        {
            printf("%s:%s \n", alldevs->name, alldevs->description);
            vecDevName.push_back(alldevs->name);
            alldevs = alldevs->next;
        }
    
        // 打开网络设备
        pcap_t *adhandle;
        /* Open the device */
    
        /* 打开设备 */
        if ( (adhandle= pcap_open(vecDevName[0].c_str(),          // 设备名
            65536,            // 要捕捉的数据包的部分 
            // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
            PCAP_OPENFLAG_PROMISCUOUS,    // 混杂模式
            1000,             // 读取超时时间
            NULL,             // 远程机器验证
            errbuf            // 错误缓冲池
            ) ) == NULL)
        {
            // fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);
            return -1;
        }
    
        // 编译过滤规则
        bpf_u_int32 NetMask=0xffffff;
        struct bpf_program fcode;
        char szFilter[256];
        sprintf(szFilter, "ip host 192.168.1.254");
        //compile the filter
        if(pcap_compile(adhandle, &fcode, szFilter, 1, NetMask) < 0)
        {
            //strTip.Format("Error compiling filter: wrong syntax:%s", szFilter);
            pcap_close(adhandle);
            return -3;
        }
        // 设置过滤规则
        if(pcap_setfilter(adhandle, &fcode) < 0)
        {
            pcap_close(adhandle);
            return -4;
        }
    
        int res;
        struct pcap_pkthdr *header;
        const u_char *pkt_data;
        time_t local_tv_sec;
        struct tm *ltime;
        char timestr[16];
        while((res = pcap_next_ex( adhandle, &header, &pkt_data)) >= 0)
        {
            if(res == 0)
                continue;
    
            /* 将时间戳转换成可识别的格式 */
            local_tv_sec = header->ts.tv_sec;
            ltime=localtime(&local_tv_sec);
            strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);
    
            printf("%s,%.6d len:%d\n", timestr, header->ts.tv_usec, header->len);
        }
        return 0;
    }
    
    展开全文
  • winpcap 快速入门 实现抓包&&发包

    万次阅读 2017-09-16 19:21:06
    winpcap 快速入门 抓包&&发包 关键的winpcap api 实现抓包/发包 系统: windows 8.1 编译器: visaul stiduo 2015 pcap 执行版本: 4.1.3 pcap 开发包版本: 4.1.2

    winpcap 快速入门 抓包&&发包

    一、 概述

    本博客将叙述几个关键的winpcap api

    研习完本博客,可以最终实现抓包/发包操作

    环境描述:

    • 系统: windows 8.1

    • 编译器: visaul stiduo 2015

    • pcap 执行版本: 4.1.3

    • pcap 开发包版本: 4.1.2

    环境配置:

    传送门:winpcap在visual stiduo 2015上进行配置

    二、API介绍

    int pcap_findalldevs_ex

    使用目的

    主要用于获得所有本地的网络接口

    参数介绍

    • char *source: 关于lcoal/remote的设定,如果是查找本地的网路设备,填写PCAP_SRC_IF_STRING

    • struct pcap_rmtauth *auth: 权限设置,一般填NULL

    • pcap_if_t **alldevs: 保存扫描结果。struct pcapift保存了设备的信息/描述

    pcap_if_t定义

    • char *errbuf: 如果函数出错,则错误信息保存在这里

    返回值

    0 : 成功执行
    -1 : 执行失败

    示例

        pcap_if_t * allDevs;
        pcap_if_t * dev;
        char errbuf[PCAP_ERRBUF_SIZE];
        if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &allDevs, errbuf) > 0) {
            printf("pcap_findallDevs_ex failed\n");
        }
        for (dev = allDevs; dev->next != NULL; dev = dev->next) {
            printf("----------------------------\n");
            printf("name %s\n", dev->name);
            printf("description :%s\n", dev->description);
        }
    

    结果截图

    pcap_findalldevs_ex()执行结果

    pcap_t* pcap_open

    使用目的

    主要用于对指定的网络设备进行抓包/发包

    参数介绍

    • const char *source: 填充pcap_if_t -> name, 用于指定网络设备

    • int snaplen: 最大接受数据包的大小

    • int flags: 网络设备的监听模式,一般设置为混杂模式PCAP_OPENFLAG_PROMISCUOUS,即只要经过该网络设备的数据包都会被捕获

    • int read_timeout: 抓到包之后,并不是立即返回,而是再允许其他的包进入。此参数可能存在系统不支持

    • struct pcap_rmtauth * auth: 权限,一般传入NULL

    • char * errbuf: 如果函数出错,存储错误信息

    返回值

    pcap_t * : 执行成功

    NULL : 执行失败,错误信息填充在errbuf

    int pcap_next_ex()

    主要用途

    抓包(抓一次,抓一个)

    参数介绍

    • pcap_t * p: 指定抓包的网络设备,即pcap_open的返回值

    pcap_t定义

    • struct pcap_pkthdr ** pkt_header: 抓到包的描述,由winpcap自动生成

    • const u_char ** pkt_data: 存储完整的包数据

    返回值

    1: 成功执行

    0 : 超时,此时pkt_header,pkt_data所指向的包并不是有效的

    -1 : 出现错误

    -2 : 读取离线包时,出现了EOF结束符

    int pcap_sendpacket()

    主要用途

    发包

    参数介绍

    • pcap_t * p: 指定网络设备,使用此网络设备进行发包

    • u_char * buf: 数据包

    • int size: 数据包的大小

    返回值

    0 : 发送成功

    -1 : 发送失败

    三、综合示例

    抓包演示:将抓到的包数据进行打印

    #include <stdio.h>
    #include <stdlib.h>
    #include <pcap.h>
    #define HAVE_REMOTE
    int main() {
    pcap_if_t * allDevs;
    pcap_if_t * dev;
    char errbuf[PCAP_ERRBUF_SIZE];
    if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &allDevs, errbuf) > 0) {
    printf("pcap_findallDevs_ex failed\n");
    }
    
    int i = 0;
    //找到连接到internet的网络设备,根据自己电脑的环境自行更改i的终值
    /*windows下,要使用descroption近似为
      Network adapter 'Realtek PCIe GBE Family Controller' on local host
    的网络设备 */
    for (dev = allDevs, i = 0; i< 4; dev = dev->next, i++);
    
    pcap_t * handler;
    if (NULL == (handler = pcap_open(dev->name, 65535, PCAP_OPENFLAG_PROMISCUOUS, 3000, NULL, errbuf))) {
    //设置接受的包大小为65535,即可以接受所有大小的包
    printf("err in pcap_open : %s", errbuf);
    }
    
    pcap_pkthdr *pkt_header;
    const u_char *pkt_data;
    for (int j = 0; j < 5; j++) {
    printf("%d --------\n", j);
    if (1 == pcap_next_ex(handler, &pkt_header, &pkt_data)) {
    for (int k = 0; k < 66; k++) {//输出每个包的前66个byte数据
    if (k % 15 == 0 && k != 0)//输出美观
    printf("\n");
    printf("%02x ", *(pkt_data + k));
    }
    }
    printf("\n");
    }
    
    getchar();
    
    }
    

    结果截图

    抓包结果截图,抓取6个报文

    发包演示

    根据网络协议分层,数据包的格式为“|ethernet|ip|tcp/udp|http|”

    具体的网络数据包,博主不打算讲,毕竟是winpcap快速入门,可能后续会推出网络数据包解析的博文

    此处的数据包 packet 为博主从wireshare上复制的一个tcp syn的包,发送成功,则wireshark会接到数据大致相同的tcp synack包。如果要在自己的电脑上实现发包,需要自己使用wireshark抓取一个简单的包,复制其中的数据,填充至以下代码中的 packet变量中,然后进行发包测试

    #include <stdio.h>
    #include <stdlib.h>
    #include <pcap.h>
    #define HAVE_REMOTE
    int main() {
        pcap_if_t * allDevs;
        pcap_if_t * dev;
        char errbuf[PCAP_ERRBUF_SIZE];
        if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &allDevs, errbuf) > 0) {
            printf("pcap_findallDevs_ex failed\n");
        }
        for (dev = allDevs; dev->next != NULL; dev = dev->next) {
            printf("----------------------------\n");
            printf("name %s\n", dev->name);
            printf("description :%s\n", dev->description);
        }
        int i = 0;
        //找到连接到internet的网络设备
        for (dev = allDevs, i = 0; i< 4; dev = dev->next, i++);
    
        pcap_t * handler;
        if (NULL == (handler = pcap_open(dev->name, 65535, PCAP_OPENFLAG_PROMISCUOUS, 3000, NULL, errbuf))) {
            printf("err in pcap_open : %s", errbuf);
        }
    
        unsigned char packet[] = { 0x14,0x14,0x4b,0x80,0x40,0x81,0x54,0xee,   0x75,0x5e,0x6f,0xa8,0x08,0x00,
            0x45,0x00, 0x00,0x34,0x77,0x44,0x40,0x00,  0x80,0x06,0x76,0xaf,0x0a,0x0a,0x2d,0xe9, 0x6f,0x0d,0x65,0xd0,
            0xc3,0x67,0x00,0x50,0xaf,0xae,0x8c,0x23,0x00,0x00,0x00,0x00,0x80,0x02,0x20,0x00,0x42,0xb6,0x00,0x00,0x02,0x04,0x05,0xb4,0x01,0x03,0x03,0x08,0x01,0x01,0x04,0x02 };
    
        if (1 != pcap_sendpacket(handler, packet, sizeof(packet))) {
            printf("pcap_sendpacket failed");
        }
        getchar();
    
    }
    

    结果截图

    执行结果

    展开全文
  • WinPcap vs Npcap

    2019-07-08 12:49:49
    2、Wireshark默认使用WinPcap,他无法抓通过127.0.0.1本地环回地址的包,但是能够识别360建立的热点网卡,所以能够抓手机经过的包;而Npcap正好相反 截止2018年12月6日,两者版本分别是WinPcap4.1.3、Npcap...

    1、两者都一直有人在维护,而并不是nmap官网介绍的已经停止维护了,https://nmap.org/npcap/vs-winpcap.html

    2、Wireshark默认使用WinPcap,他无法抓通过127.0.0.1本地环回地址的包,但是能够识别360建立的热点网卡,所以能够抓手机经过的包;而Npcap正好相反

    截止2018年12月6日,两者版本分别是WinPcap4.1.3、Npcap-0.99-r7

    转载于:https://www.cnblogs.com/cc1840/p/10074686.html

    展开全文
  • WinPcap

    2019-08-18 10:39:53
    @echo off if “%PROCESSOR_ARCHITECTURE%”“AMD64” goto x64 if “%PROCESSOR_ARCHITECTURE%”“x86” goto x86 exit :x64 copy npf64.sys %systemroot%\System32\drivers\npf.sys /y copy wpcap32.dll %...
  • winpcap

    千次阅读 2019-03-10 18:47:05
    1. winpcap 1. winpcap简介 (windows packet capture)是windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。...
  • 最火的抓包工具winpcap使用教程

    千次阅读 2015-12-01 21:08:42
    从官网http://www.winpcap.org/default.htm先下载下来,安装到本地 在这个地址下载http://pan.baidu.com/s/1ntiebdZ ethereal-setup_veryhuo.com.rar 安装完成后,打开shell,ping 一个地址,一直请求, 使用 ...
  • 1 在winpcap官网上,下载WpdPack的二次开发包 2 配置include和lib的路径,引用wpcap.lib和packet.lib,定义WPCAP和HAVE_REMOTE的宏 3 以抓TCP包,并打印源IP和目的IP为例子,做简单分析。 #include <iostream...
  • winpcap安装使用教程

    万次阅读 2015-06-27 23:14:46
    1、安装winpcap 地址:http://www.winpcap.org/install/default.htm =》安装软件 地址:http://www.winpcap.org/archive =》下载package开发包wpdPack a) 执行安装包,这样你的机子就能运行winpcap程序了 b)解压...
  • winpcap抓包并进行协议解析

    热门讨论 2020-07-30 23:30:53
    这是我本学期的网络编程课程设计,是基于winpcap的抓包程序,用MFC实现。 本程序基于winpcap,可以实现抓包类型的选择,如ARP,IP,TCP,UDP,ICMP。一般网上的抓包程序都是利用原始套接字,而基于原始套接字的抓包...
  • 最近作业要用Winpcap开发包分析.pcap文件实现报文字段的识别…本来打算用Visual Studio写,不过想起以前打OJ的时候都用Code::Blocks写C语言的代码…在好奇心的驱使下研究了一下…还踩了个坑_(:з」∠)_ 1.下载...
  • 基于winpcap的抓包实验

    2020-07-30 23:31:53
    网络抓包技术是网络安全领域的一项重要技术,网络抓包器通过捕获网络上的数据包并对数据包进行详细的分析,能够及时发现网络中出现的问题,本课题主要设计并开发一个windows操作系统下的基于Winpcap的网络抓包器,...
  • 目前最新版本的winpcap,包含了sdk工具及元源码
  • 1、WinPcap WinPcap是一个基于Win32平台的,用于捕获网络数据包并进行分析的开源库。WinPcap提供了以下功能: 捕获原始数据包,无论它是发往某台机器的,还是在其他设备(共享媒介)上进行交换的; 在数据包发送...
  • WinPcap库文件WpdPack_4_1_2,压缩包内有Lib、Include等文件 使用了WinPcap提供的库函数,那么就需要在该文件开始的位置添加pcap.h包含文件(或者在引用的文件中),即#include 。不过在此之前你必须完成以下步骤: ...
  • 在查阅相关资料之后选择了Winpcap来进行收法包。 这里不详细说明Winpcap的相关用法,可以参考官方的说明文档。 winpcap提供了两种方式来接受网卡上的数据包,一个是回调函数的形式(pcap_loop),另一个就是非回调...
  • VSCode + MinGW-w64 + winpcap环境配置

    千次阅读 2019-03-24 15:31:31
    VSCode + MinGW-w64 + winpcap环境配置 最近计算机网络上机需要配winpcap的环境,因为VS装起来很麻烦还占地方,所以就在想VSCode上配环境,配置过程遇到了很多问题,网上也搜不到好的解决方法,改来改去花了好多时间...
  • [笔记]-winpcap学习记录

    2020-07-05 18:46:44
    这段时间要用到 winpcap 的函数包来完成一些项目,从没接触过,所以在各种函数学习的过程中做一下记录,列出我在学习过程中遇到的问题以及解决方法,如有错误欢迎评论XD。 学习一个第三方包最好的方式就是看官方文档...
  • c++ winpcap开发(1)

    2017-07-20 19:32:36
    libpcap和WinPcap都为此提供了pcap_findalldevs_ex()函数:该函数返回一个pcap_if结构的链表,每个结构都包含有关连接的适配器的综合信息。特别地,字段名称和描述分别包含对应设备的名称和人类可读描述。 以下...
1 2 3 4 5 ... 20
收藏数 7,786
精华内容 3,114
关键字:

winpcap