基于wincap写抓包程序
首先,先枚举系统中的所有网卡:
/* 获取设备列表 */
if (pcap_findalldevs(&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);
else
printf(" (No description available)\n");
}
然后选择网卡,然后设备。
if ( (adhandle= pcap_open_live(d->name, //设备名
65536, // 捕捉完整的数据包
1 , // 混在模式
1, // 读入超时
errbuf // 错误缓冲
) ) == NULL)
{
printf("Unable to open the adapter");
pcap_freealldevs(alldevs);
return;
}
打开设备之后,我们就可以利用adhandle句柄来正式抓包了,先新建一个回调函数,形如
void packet_handler(u_char* packets,const struct pcap_pkthdr *header,const u_char *data)
{
}
然
后调用pcap_loop(adhandle, 0, packet_handler,
NULL);pcap_loop的最后一个参数和packet_handler的packets参数是对应的,用于在函数间传递数据。WinpCap每收
到一个包就自动调用packet_handler函数,将包的内容作为data参数,我们对data作强制类型转化就可以得到数据包各部分的内容。
事实上,WinpCap开发包除了可以用回调函数抓包外,还可以用非回调的方法。在得到adhandle后不调用pcap_loop,而用下面的方法:
while(1)
{
res = pcap_next_ex(adhandle,&header,&data);
if(res==0)
{
Sleep(100);
continue;
}
}
用pcap_next_ex读取数据包内容,至于if(res==0)这一段是为了防止没数据包到达时重复循环。
不多讲了全部源程序可看附件。附件中有两个抓包程序,一个是GUI的,一个是CUI的。CUI程序的运行结果如下:
附件下载:
WinpCap开发包 :
WinPcap_4_0_beta3.rar
CUI抓包源程序:
CapPack.rar
GUI抓包源程序(MFC):
MFCCapPack.rar
基于wincap写抓包程序相关推荐
- (网络实验)基于Jnetpcap的网络嗅探器(抓包程序)设计与实现
基于Jnetpcap的网络嗅探器(抓包程序)设计与实现 作者:程哥哥 学号:xxxx 引言: 此程序是由自己编写的个人网络嗅探器,相当于著名的包捕获软件Wireshark的简化版,界面参考至别人的博客 ...
- Linux系统无线网络抓包程序(分析手机WIFI MAC地址)
前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...
- Java 实现抓包程序
前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 项目准备 1. 首先得有 java 编译环境,安装并配置好 jdk:2. 需要安装 Winp ...
- Python scapy抓包程序
尝试使用Python scapy 包中 sniff 函数写个简单的抓包程序,sniff 抓取数据包并写入本地文件 1. 安装scapy,windows7 系统需要先安装 npcap,pip 之后 ,简 ...
- Windows和夜神模拟器上抓包程序mitmproxy的安装以及使用
** windows ** 一.介绍说明 mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler.Charles的功能,只不过它是一个控制台的形式操作. mitmproxy还 ...
- Java实现抓包程序(网络协议分析程序)
前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 文章目录 前言 项目准备 一.抓包功能的基本实现 二.完整项目实现 1.界面布局 2.抓包功 ...
- Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包
在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)--抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要 ...
- winpcap php,利用WinpCap 编写抓包程序
Problem1 解决编译过程中pcap.h no such file or directory 问题: 下载WpdPack_3_2_alpha1.zip (下载地址:) 然后解压,解压缩就可以看见I ...
- linux网卡抓包命令,基于Linux Socket实现的网卡抓包程序
[前言]通过对数据包的分析,我们可以判断通信双方的操作系统.网络信息流量.经过的路由.数据包的大小,以及数据包的内容等等.尤其对于喜欢网络安全的人来说,掌握这方面的知识是相当重要的.本文介绍一个基于L ...
- fiddler everywhere手机抓包_基于移动端抓包使用Fiddler模拟弱网测试
随着移动互联网的发展,移动端测试工作也提上日程,那移动互联网测试与web测试有什么不一样?首先它们架构不一样,再者基于的场景不一样,PC端网络基本固定宽带,而移动互联的网络测试一般分为:2G.3G.4 ...
最新文章
- Docker基础技术:Linux Namespace【上】
- HDFS块文件和存放目录的关系
- [待总结]高频率vim命令
- element中upload单图片转base64后添加进数组,请求接口
- set,env和export命令显示shell变量其区别,与环境变量扫盲(一)
- Leetcode Combinations
- 两种通过代码访问SalesOrder header text内容的办法
- java小程序开发平台,隔壁都馋哭了
- 2022年中国折叠屏手机市场洞察报告
- linux lsm模块,Linux安全模块LSM研究及改进
- 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
- Sharepoint CAML 增删改查 List
- JSP页面添加播放视频功能
- Windows 10下使用Xshell5连接虚拟机的ubuntu18系统
- RabbitMQ-理解消息通信-虚拟主机和隔离
- 非聚集索引的注意事项
- python熵权法求权重
- 雷达线雕的原理及功效
- 微信计数器微信加粉计数器开发
- 图片复印如何去除黑底_我告诉你照片打印如何去除黑底