解决编译过程中pcap.h no such file or directory 问题:
下载WpdPack_3_2_alpha1.zip
(下载地址:http://www.winpcap.org/install/bin/WpdPack_3_2_alpha1.zip)
然后解压,解压缩就可以看见Include和lib;然后用VC++打开项目,在"Project->Settings"标签栏中选择"C/C++",在"Preprocessor definitions"的输入框里添加"WPCAP";再选择"Link",在"Object/library modules"的输入框里添加"wpcap.lib Packet.lib"。
然后再设置VC++环境变量:
选择Tools->options->Directories的include里面加入下载的winpcap开发包解压以后的include文件夹。
选择Tools->options->Directories的lib里面加入下载的winpcap开发包解压以后的lib文件夹.
WinpCap是一个公开的免费的抓包驱动加开发包,利用它,可以大大缩短我们的开发周期。
首先,先枚举系统中的所有网卡:
/* 获取设备列表 */  
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写抓包程序相关推荐

  1. (网络实验)基于Jnetpcap的网络嗅探器(抓包程序)设计与实现

    基于Jnetpcap的网络嗅探器(抓包程序)设计与实现 作者:程哥哥 学号:xxxx 引言: 此程序是由自己编写的个人网络嗅探器,相当于著名的包捕获软件Wireshark的简化版,界面参考至别人的博客 ...

  2. Linux系统无线网络抓包程序(分析手机WIFI MAC地址)

    前面讲述了使用tcpdump和wireshark抓WIFI包,但这只是使用工具的层面,再深一层则是自己写代码实现这个功能.本文在前面文章<Linux系统有线网络抓包程序>的基础上添加实现无 ...

  3. Java 实现抓包程序

    前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 项目准备 1. 首先得有 java 编译环境,安装并配置好 jdk:2. 需要安装 Winp ...

  4. Python scapy抓包程序

    尝试使用Python scapy 包中 sniff 函数写个简单的抓包程序,sniff 抓取数据包并写入本地文件 1. 安装scapy,windows7 系统需要先安装 npcap,pip 之后 ,简 ...

  5. Windows和夜神模拟器上抓包程序mitmproxy的安装以及使用

    ** windows ** 一.介绍说明 mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler.Charles的功能,只不过它是一个控制台的形式操作. mitmproxy还 ...

  6. Java实现抓包程序(网络协议分析程序)

    前言 本学期计算机网络要求写一个抓包程序,我通过网上查阅资料,如何实现抓包,实现了一个较为简单的抓包程序. 文章目录 前言 项目准备 一.抓包功能的基本实现 二.完整项目实现 1.界面布局 2.抓包功 ...

  7. Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

    在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)--抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要 ...

  8. winpcap php,利用WinpCap 编写抓包程序

    Problem1 解决编译过程中pcap.h no such file or directory 问题: 下载WpdPack_3_2_alpha1.zip (下载地址:) 然后解压,解压缩就可以看见I ...

  9. linux网卡抓包命令,基于Linux Socket实现的网卡抓包程序

    [前言]通过对数据包的分析,我们可以判断通信双方的操作系统.网络信息流量.经过的路由.数据包的大小,以及数据包的内容等等.尤其对于喜欢网络安全的人来说,掌握这方面的知识是相当重要的.本文介绍一个基于L ...

  10. fiddler everywhere手机抓包_基于移动端抓包使用Fiddler模拟弱网测试

    随着移动互联网的发展,移动端测试工作也提上日程,那移动互联网测试与web测试有什么不一样?首先它们架构不一样,再者基于的场景不一样,PC端网络基本固定宽带,而移动互联的网络测试一般分为:2G.3G.4 ...

最新文章

  1. Docker基础技术:Linux Namespace【上】
  2. HDFS块文件和存放目录的关系
  3. [待总结]高频率vim命令
  4. element中upload单图片转base64后添加进数组,请求接口
  5. set,env和export命令显示shell变量其区别,与环境变量扫盲(一)
  6. Leetcode Combinations
  7. 两种通过代码访问SalesOrder header text内容的办法
  8. java小程序开发平台,隔壁都馋哭了
  9. 2022年中国折叠屏手机市场洞察报告
  10. linux lsm模块,Linux安全模块LSM研究及改进
  11. 毕设日志——配置服务器与测试gpu版本的tf faster rcnn代码
  12. Sharepoint CAML 增删改查 List
  13. JSP页面添加播放视频功能
  14. Windows 10下使用Xshell5连接虚拟机的ubuntu18系统
  15. RabbitMQ-理解消息通信-虚拟主机和隔离
  16. 非聚集索引的注意事项
  17. python熵权法求权重
  18. 雷达线雕的原理及功效
  19. 微信计数器微信加粉计数器开发
  20. 图片复印如何去除黑底_我告诉你照片打印如何去除黑底

热门文章

  1. 在校学生适合的云服务器有哪些?
  2. 王家林 构建spark集群
  3. MiCT: Mixed 3D/2D Convolutional Tube for Human Action Recognition论文笔记
  4. 电脑系统怎么升级到win10?win7升级win10系统操作教程
  5. Ps抠图(小白教程)
  6. iOS进阶 - GCD总结
  7. JetPack-Compose - Flutter 动态UI?
  8. javascript 单行内容连续滚动,允许停留
  9. 泛微OA前端经验总结
  10. sofa-jraft源码学习