问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

WinPcap 这是什么文件 能删除么

发布网友 发布时间:2022-04-22 04:13

我来回答

1个回答

热心网友 时间:2022-04-05 14:05

一.Winpcap简介

Winpcap是UNIX下的libpcap移植到windows下的产物,他是一个free and open source的项目。Winpcap工作于驱动(Driver)层,所以能以很高的效率进行网络操作。

Winpcap提供了以下强大的功能:

1.捕获原始的数据包

2.设置filter,只捕获自己敢兴趣的数据包

3.方便的把捕获的数据包输出到文件和从文件输入

4.发送原始的数据包

5.统计网络流量

6.…..(其它还有很多,我不知道了)

二.Winpcap的安装使用方法

1.到下载winpcap的安装包,程序员开发包。

2.执行安装包,这样你的机子就能运行winpcap程序了

3.解压开发包,在VC的option的include和lib中加入winpcap的

include和lib

4. 在你的程序中加入#include <pcap.h>, #include <remote-ext.h>.然后在工程的setting中加入预定义宏:WPCAP,HAVE_REMOTE.导入wpcap.lib库

5.就可以编写wpcap程序了

三.Winpcap的一些基本的功能的实现

一)捕获数据包

1. 枚举所有的可用的设备[pcap_findalldevs_ex](可选)

2. 通过名字打开一个设备[pcap_open()]

在这里可以打开一个文件,只是在打开这个文件之前需要通过pcap_createsrcstr创建相应的name string

3. 设置Filter[pcap_compile, pcap_setfilter] (可选)

4. 捕获数据

有几种捕获数据的方法(捕获数据的数据都是最原始的数据包,即包含数据链路层的数据头)

a. 是以回调的方式[ pcap_loop,pcap_dispatch() ].

这两种方法基本相同,底层收集数据包,当满足一定的条件(timeout 或者缓冲区满),就会调用回调函数,把收集到的原始数据包s,交给用户。他们返回的数据缓冲区包含多个包

b. pcap_next_ex()的方式

每当一个包到到达以后,pcap_next_ex就会返回,返回的数据缓冲区里只包涵一个包。

二)发送包

Winpcap中有发送单个包和发送多个包的方法。这里只说说发送单个包

1. 通过名字打开一个设备[pcap_open]

2. 自己构造一个原始数据包(这个数据包会不经过任何处理就发送出去,所以必须把包中的各个字段设置好。另外这个数据包是包含数据链路层报头的)

3. 使用pcap_sendpacket()发送数据包

三)统计网络流量

1. 通过名字打开一个设备[pcap_open]

通过 read_timeout来设置统计的时间间隔

2. 设置filter[pcap_compile, pcap_setfilter] (可选)

3. 设置设备的为统计模式[ pcap_setmode(MODE_STAT);]

4. 开始统计,pcap_loop/pcap_dispatch()

5.在回调函数中的参数中就包含了统计信息,如下图:

aspectratio="t" v:ext="edit">

四. 总结

这些东西都是我在学习winpcap的过程中的一些经验和总结。由于我学习winpcap的时间很匆忙,只是按照step by step guide来学习的,所以我对于winpcap的理解也就只能局限与此,希望能在以后有机会深入学习

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//下面是一个应用winpcap写的一个网络流量统计的例子,

// nettraffic.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <pcap.h>

#include <remote-ext.h>

#include <iostream>

#include <winsock2.h>

using namespace std;

//------------------------------------------------------------------------

//------------------------------------------------------------------------

void dispatcher_handler(u_char* user_data, const struct pcap_pkthdr * pkthdr, const u_char *pktdata);

//------------------------------------------------------------------------

int main(int argc, char* argv[])

{

int i;

pcap_if_t* alldevs;

pcap_if_t* dev;

char errorbuf[PCAP_ERRBUF_SIZE];

int choice;

pcap_t* stathandle;

WSADATA wsadata;

struct timeval timestamp;

if( WSAStartup( MAKEWORD(2,2), &wsadata) != 0 )

{

cerr<<"WSAStartup failed [ "<<WSAGetLastError() <<" ]"<<endl;

return (-1);

}

//enum all device

if( pcap_findalldevs_ex( PCAP_SRC_IF_STRING, NULL, &alldevs, errorbuf ) == -1 )

{

WSACleanup();

cerr<<"pcap_findalldevs_ex failed! ("<<errorbuf<<")"<<endl;

return (-1);

}

for( i=0,dev = alldevs; dev != NULL; dev = dev->next )

{

cout<<++i<<'\t'<<dev->name<<endl;

}

if( i== 0 )

{

WSACleanup();

cerr<<"no device found!"<<endl;

return (-2);

}

//let user choice

while( 1)

{

cout<<"please choice a device:";

cin>>choice;

if( choice >= 1 && choice <=i )

break;

cerr<<"input error, you shall choice a device from upon list"<<endl;

}

//move to the choice device

for( i=0, dev = alldevs; i<choice-1; i++,dev = dev->next );

if( (stathandle = pcap_open( dev->name,

100,

PCAP_OPENFLAG_PROMISCUOUS,

500,

NULL, errorbuf ) ) == NULL )

{

cerr<<"open device failed! [device:"<<dev->name<<"] "

<<errorbuf<<endl;

pcap_freealldevs( alldevs );

WSACleanup();

return (-3);

}

cout<<"is Stat "<<dev->name<<" ..."<<endl;

pcap_freealldevs( alldevs );

pcap_setmode( stathandle, MODE_STAT );

timestamp.tv_sec = 0;

timestamp.tv_usec = 0;

pcap_loop( stathandle, 0, dispatcher_handler,(unsigned char*)×tamp );

pcap_close( stathandle );

return 0;

}

//------------------------------------------------------------------------

void dispatcher_handler(u_char* user_data, const struct pcap_pkthdr * pkthdr, const u_char *pktdata)

{

static struct timeval tstamp = *( (struct timeval*)user_data );

LARGE_INTEGER Bps,Pps;

unsigned long delay;

char strtime[32];

delay = (pkthdr->ts.tv_sec - tstamp.tv_sec)*1000000 - tstamp.tv_usec + pkthdr->ts.tv_usec;

Pps.QuadPart = ((*(LONGLONG*)(pktdata)) * 1000000 ) / delay;

Bps.QuadPart = ((*(LONGLONG*)(pktdata + 8)) * 1000000 ) / delay;

struct tm* ltime = localtime( &(pkthdr->ts.tv_sec) );

strftime( strtime, sizeof(strtime),"%H:%M:%S", ltime);

printf("%s:", strtime );

printf("\tPps=%I64u\tBps=%I64u\r\n",Pps.QuadPart,Bps.QuadPart);

tstamp = pkthdr->ts;

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
八月中国最凉快的地方 八月份哪里最凉快,去哪旅游好?美丽的地方 乱字同韵字是什么意思 华硕笔记本电脑触摸板怎么开笔记本电脑触摸板怎么开启和关闭_百度知 ... 陕西职务侵占案立案准则 结婚后我的恋情维系了十年,怎么做到的? 玉米仁子饭产自哪里 中国期货交易所的交易品种有哪些? 历史要怎么读,有啥诀窍 高中历史诀窍 钉钉如果老师发起视频会议我按错了,最后怎么进? 中央人民广播电台音乐之声下载 请问县级行政部门能不能制定工作纲要,纲要和规划... 辅食土豆泥冷藏保存多久 中央人民广播电台的《中国之声》怎样下载啊 土豆泥放冰箱第二天还能吃吗 关于开展依托电子政务平台加强县级政府政务公开和... 怎样要回业主们14年南京南站商铺的总租金 土豆泥可以放冰箱吗 ? pcap格式是什么文件 土豆泥可以冷冻保存吗 南京工业大学江浦校区租店面找谁啊?租金大概多少... 吉林省九台市人民政府网站 c语言如何配置pcap.h 上海南京东路的店面租金大概是多少? 网站运营专家是如何运营网站的? Winpcap驱动程序这个文件,我在电脑中怎么找不到,请... 2020年中国商业地产(写字楼)市场租金情况怎么样? 有没有关于网页设计的工作计划书 上海南京路步行街一个30来平米的店铺一个月租金多少? 中央人民广播电台的节目可以下载吗? 南京市部队空于门面房可以出租和招商吗? 土豆泥能冻么 关于网络的(工作计划) 怎样下载到手机听广播电台节目 如何销售商铺 宝宝辅食土豆泥可以放冷藏保存吗? 怎样下载老年之友广播 广东省林业厅的信息公开 如何通过pcap包识别出应用名称 土豆可以冷冻保存吗 使用wireshark打开pcap pcap文件格式如何转换成excel格式 请问,在哪里下载中国之声 广播电台节目的MP3文件? 熟薯泥可以冷冻保存么 pcap文件最前面是0d0a0d0a,如何解析 广播电台节目怎么下载?是节目下载!最好是mp3.说... 熟土豆能放冰箱冷冻吗? 公积金抵押贷款条件 怎样下载中央人民广播电台的节目?