windows下c++抓包实例
来源:互联网 发布:新闻联播图片素材软件 编辑:程序博客网 时间:2024/06/01 08:06
windows下c++抓包实例
1,第一步是安装WinPcap软件
http://pan.baidu.com/s/1slGiedv这是我放在网盘里的
2,第二步就是下载WpdPack开发包
http://pan.baidu.com/s/1jIFGw3W这是我放在网盘里的
里面有vs2013的安装方法,其实就是把两个文件include和lib文件夹下的内容拷贝到vs下面的相应文件下面
3,就是建立工程项目粘贴一下代码
自己再改改吧
// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#define HAVE_REMOTE
#include <pcap.h>
///////////////////////////////
#ifndef WIN32
#include <sys/socket.h>
#include <netinet/in.h>
#else
#include <winsock.h>
#endif
////////////////////////////
#define _CRT_SECURE_NO_WARNINGS
#pragma comment (lib,"wpcap.lib")
#pragma comment(lib,"ws2_32.lib")
using namespace std;
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data);
int main()
{
pcap_if_t *alldevs;
pcap_if_t *d;
int inum=0;
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: %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);
else
printf(" (没有可用的接口)\n");
}
if (i == 0)
{
printf("\n没有找到接口!确保安装winpcap.\n");
return -1;
}
printf("输入接口号 (1-%d):", i);
cin >> inum;
if (inum < 1 || inum > i)
{
printf("\n接口号超出范围 .\n");
/* 释放设备列表 */
pcap_freealldevs(alldevs);
return -1;
}
/* 跳转到选中的适配器 */
for (d = alldevs, i = 0; i< inum - 1; d = d->next, i++);
/* 打开设备 */
if ((adhandle = pcap_open(d->name, // 设备名
65536, // 65535保证能捕获到不同数据链路层上的每个数据包的全部内容
PCAP_OPENFLAG_PROMISCUOUS, // 混杂模式
1000, // 读取超时时间
NULL, // 远程机器验证
errbuf // 错误缓冲池
)) == NULL)
{
fprintf(stderr, "\n无法打开适配器 . %s 不支持通过WinPcap \n", d->name);
/* 释放设备列表 */
pcap_freealldevs(alldevs);
return -1;
}
printf("\n监听中 %s...\n", d->description);
/* 释放设备列表 */
pcap_freealldevs(alldevs);
/* 开始捕获 */
pcap_loop(adhandle, 0, packet_handler, NULL);
getchar();
return 1;
}
void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data)
{
struct tm *ltime=NULL;
char timestr[16];
time_t local_tv_sec;
/* 将时间戳转换成可识别的格式 */
local_tv_sec = header->ts.tv_sec;
localtime_s(ltime, &local_tv_sec);//
strftime(timestr, sizeof timestr, "%H:%M:%S", ltime);
printf("%s,%.6d 长度:%d\n", timestr, header->ts.tv_usec, header->len);
}
- windows下c++抓包实例
- c实现网络抓包windows下
- (windows) C 网络抓包
- linux 下 libpcap抓包实例程序
- windows下对127.0.0.1抓包
- windows下 charles 手机app抓包
- windows下如何用wireshark抓本地回路抓包
- live555抓包实例
- tcpdump抓包实例
- tcpdump抓包实例
- tcpdump抓包实例
- windows抓包程序
- Wireshark抓包实例分析HTTP问题(下)
- Windows下对本地网络通信进行抓包
- Windows下对本地网络通信进行抓包
- Windows下使用Wireshark(ethereal)进行抓包分析
- 做一个WINDOWS下破解WIFI。不需要Linux抓包!
- Windows平台下Android应用抓包挖掘漏洞方法
- 远程调用服务(RPC)和消息队列(Message Queue)对比及其适用/不适用场合分析
- Pycharm如何设置自定义背景颜色
- angular 中 一些名词解释
- 在eclipse中使用stanford构建中文依存关系树
- 主席树 poj 2104 K-th Number
- windows下c++抓包实例
- 封装android http框架
- Java设计模式(九)单例模式
- Maven 的生命周期介绍
- 关于Windows中生成FFTW的lib文件时报LNK1104错误
- cocos creator Button控件用法
- python操作数据库mysql
- ubuntu14.04 安装cuda8.0
- swift -基础1