WinPcap捕获数据包
来源:互联网 发布:屏幕颜色校准软件 编辑:程序博客网 时间:2024/04/28 08:49
首先使用pcap_open打开指定的网卡, 获取使用pcap_loop进行捕获数据包.
// pcap_loop.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#define HAVE_REMOTE#include <pcap.h>/* packet handler 函数原型 */void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);#pragma comment(lib,"wpcap.lib")int _tmain(int argc, _TCHAR* argv[]){pcap_if_t *alldevs;pcap_if_t *d;int inum;int i=0;pcap_t *adhandle;char errbuf[PCAP_ERRBUF_SIZE];/* 获取本机设备列表 */if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1){fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf);exit(1);}/* 打印列表 */for(d=alldevs; d; d=d->next){printf("%d. %s", ++i, d->name);if (d->description)printf(" (%s)\n", d->description);elseprintf(" (No description available)\n");}if(i==0){printf("\nNo interfaces found! Make sure WinPcap is installed.\n");return -1;}printf("Enter the interface number (1-%d):",i);scanf("%d", &inum);if(inum < 1 || inum > i){printf("\nInterface number out of range.\n");/* 释放设备列表 */pcap_freealldevs(alldevs);return -1;}/* 跳转到选中的适配器 */for(d=alldevs, i=0; i< inum-1 ; d=d->next, i++);/* 打开设备 */if ( (adhandle= pcap_open(d->name, // 设备名65535, // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式1000, // 读取超时时间NULL, // 远程机器验证errbuf // 错误缓冲池) ) == NULL){fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);/* 释放设备列表 */pcap_freealldevs(alldevs);return -1;}printf("\nlistening on %s...\n", d->description);/* 释放设备列表 */pcap_freealldevs(alldevs);/* 开始捕获 */pcap_loop(adhandle, 0, packet_handler, NULL);getchar();return 0;}/* 每次捕获到数据包时,libpcap都会自动调用这个回调函数 */void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data){struct tm *ltime;char timestr[16];time_t local_tv_sec;/* 将时间戳转换成可识别的格式 */local_tv_sec = header->ts.tv_sec;ltime=localtime(&local_tv_sec);strftime( timestr, sizeof timestr, "%H:%M:%S", ltime);printf("%s,%.6ld len:%d\n", timestr, header->ts.tv_usec, header->len);}
0 0
- WinPcap捕获数据包
- 用WinPcap技术捕获数据包
- 利用WinPcap技术捕获数据包
- Winpcap捕获数据包并转发
- 利用WinPcap技术捕获数据包
- WinPcap编程4——捕获数据包
- Winpcap打开适配器并捕获数据包
- WinPcap编程4——捕获数据包
- WinPcap编程——捕获数据包
- 【Winpcap新手】使用Winpcap编程,无法捕获数据包
- Winpcap打开适配器并捕获数据包:过滤数据包
- WinPcap编程【4】打开适配器并捕获数据包
- WinPcap编程【5】不用回调方法捕获数据包
- WinPcap编程【4】打开适配器并捕获数据包
- WinPcap编程【5】不用回调方法捕获数据包
- WinPcap学习(四)打开适配器并捕获数据包
- WinPcap学习(五)不用回调方法捕获数据包
- WinPcap笔记(4):打开适配器并捕获数据包
- 9-4-Linear Regression for Binary Classification
- Tiny210 nfs挂载文件
- XRay1
- 有关java语言的话题,也许有你不知道的事
- 自学Unity之做一个MOBA游戏3——血条显示
- WinPcap捕获数据包
- CentOS 6.5下安装node.js mongodb(express driver)
- 第十四周第二天
- 修改右键多余的菜单
- The DVMM Lab at Columbia University
- Android动画精讲一:从setTranslationX谈属性动画和view动画的区别
- [D3.js] SVG-Axes(坐标轴)
- mysql给函数,存储过程权限的问题
- 栈与队列相互实现