使用WinPcap和libpcap类库读写pcap文件(001)开发环境配置
最近的项目要求写一个读写pcap文件的小程序,用来修改pcap中的部分信息,实现pcap的定制。
所以必须学会使用wireshark并能有利用WinPcap库和libpcap库进行开发。
虽然本文记录的都是windows下使用WinPcap进行开发,但是由于希望程序能够跨平台,所以代码中使用的都是库里面的跨平台函数,而不是windows专用的函数。
废话少说。
安装wireshark。这和开发本身无关,只是为了看包方便。
安装WinPcap库。
到http://www.winpcap.org/docs/default.htm下载WinPcap库的zip文件,将下载到的zip(写本文时下载的是WpdPack_4_1_2.zip)解压到一个路径,用<WpdPackDir>表示。里面有五个文件夹,包括docs(文档)、Include(头文件)、Lib(库文件)和两个例子程序。本文都是结合文档编写(差不多是翻译)。下面就是文档截图,怎么用都说的很清楚。
配置开发环境(以vs2010为例)
然后,在你需要用到WinPcap库的文件当中包含pcap.h就可以了。
测试
试着读取一个名为test.pcap的文件,看看如何。关于pcap文件的格式,将在下一篇文章中阐述。
#include "pcap.h"#include "stdio.h"int main(int argc, char *argv[]) {char errbuf[100]; pcap_t *pfile = pcap_open_offline("test.pcap", errbuf);if (NULL == pfile) {printf("%s\n", errbuf);return -1;} pcap_pkthdr *pkthdr = 0;const u_char *pktdata = 0;pcap_next_ex(pfile, &pkthdr, &pktdata);printf("%d\n", pkthdr->caplen);for (bpf_u_int32 i = 0; i < pkthdr->caplen; ++i) {if (0 < i && 0 == i % 16) printf("\n");printf("%2x ", pktdata[i]);}pcap_close(pfile);return 0;
}
程序读取了文件中的第一个数据包,并按照wireshark显示的格式,以十六进制打印出了数据包中的每一个字节。
对比一下,一样的。
程序中pcap_open_offline函数以二进制读方式打开一个已经存好的tcpdump/libpcap格式的文件。
pcap_open_offline需要两个参数,第一个是文件名,第二个是个char类型指针。这个指针用来返回错误信息,只有当打开文件失败时,这个字符串被设置为相应的错误信息并返回空指针。
pcap_next_ex函数,读取下一个数据包。需要pcap_pkthdr**指针(不需要实体)和const u_char**类型的指针。
另一个函数pcap_next可以实现同样的功能。单需要提供一个指向pcap_pkthdr结构体的指针(需要new一个实体)。代码如下。
#include "pcap.h"
#include "stdio.h"int main(int argc, char *argv[]) {char errbuf[100]; pcap_t *pfile = pcap_open_offline("test.pcap", errbuf);if (NULL == pfile) {printf("%s\n", errbuf);return -1;} pcap_pkthdr *pkthdr = new pcap_pkthdr;const u_char *pktdata = 0;pktdata = pcap_next(pfile, pkthdr);printf("%d\n", pkthdr->caplen);for (bpf_u_int32 i = 0; i < pkthdr->caplen; ++i) {if (0 < i && 0 == i % 16) printf("\n");printf("%2x ", pktdata[i]);}delete pkthdr;pcap_close(pfile);return 0;
}
使用WinPcap和libpcap类库读写pcap文件(001)开发环境配置相关推荐
- 使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式
本文基本翻译自https://wiki.wireshark.org/Development/LibpcapFileFormat,主要分析pcap文件的格式. 其中一些字段可能和现在的WinPcap类库 ...
- linux更改cxxflags环境变量,在64位的ubuntu 14.04 上开展32位Qt 程序开发环境配置(pro文件中增加 QMAKE_CXXFLAGS += -m32 命令)...
为了能中一个系统上开发64或32位C++程序,费了些周折,现在终于能够开始干过了.在此记录此时针对Q5.4版本的32位开发环境配置过程. 1. 下载Qt 5.4 的32位版本,进行安装,安装过程中会发 ...
- C++ 之 C++ 操作 json 文件(C++读写json文件)及jsoncpp配置详解
目录 前言 一.json文件简介 1.json文件 2.json与其他存储数据方式比较 二.C++操作json文件 1.jsoncpp 库下载 2.C++从字符串中读取json 3.C++从文件中读取 ...
- c++ 怎么配置头文件路径_OpenGL环境配置
每次换新电脑,我想搞openGL的时候,都会苦于一个问题,那就是环境搭配,虽然搭过很多次,但就是记不住,所以今天就把快速配置的过程写下来,方便下次使用,如果有人看到我这篇文章觉得说得太模糊了,不清楚, ...
- .axf文件_Keil开发环境如何生成BIN文件
为什么需要BIN文件呢? 有些烧录器只支持BIN文件. 进行OTA远程升级时,只能使用BIN文件. 使用JLink脚本文件进行一键烧录时,只支持BIN文件. BIN文件要比HEX和AXF文件小的多. ...
- wamp下配置php文件,wamp开发环境快速搭建详细步骤
简介:总结在Windows环境搭建PHP开发环境(Apache+PHP+MySQL) 安装Apache 2.解压压缩包,最好放到磁盘根目录,不然配置时容易报路径错误,我这里改了文件夹名,方便以后配置, ...
- wireshark读写pcap文件_PCAP-file-analysis 利用wireshark捕获tcp ip数据包和pcap文件分析 - 下载 - 搜珍网...
reademe.txt 实验报告-终版.doc 实验数据/ 实验数据/arp.pcap 实验数据/DHCP.pcap 实验数据/Diagram1.dia 实验数据/Diagram1.png 实验数据/ ...
- 【C++ 之 C++ 操作 json 文件(C++读写json文件)及jsoncpp配置详解】
文章目录 一.json文件简介 1.json文件 2.json与其他存储数据方式比较 二.C++操作json文件 1.jsoncpp 库下载 2.C++从字符串中读取json 1.简单json样式 2 ...
- android ndk怎样加载o文件_JNI初探之NDK 开发环境配置
安装 CMake.LLDB与NDK 开发工具包 CMake 简介 CMake 是一款比make更强大的编译自动配置工具,它可以根据不同平台.不同的编译器,并通过CMakeLists.txt文件中简单的 ...
最新文章
- idea 使用正则表达式 进行匹配替换
- vim中使用sed去除网上copy的源代码行号和空格
- 【计网】计算机网络期末总复习-谢希仁(个人总结)理论概念
- boost::math模块使用 non_finite_num facet 的一个非常简单的例子
- cstring判断包含字符串_作为java程序员要知道的大厂常见的算法面试题:字符串的包含...
- 中国科技大学计算机学院叶辉,中国科技大学计算机科学与技术学院导师教师师资介绍简介-黄文超...
- 刘强东发新年信:过去一年我们异常艰难
- MYSQL正式环境主从复制(不锁表,不停服务)
- 从入门到入土:Python爬虫学习|实例练手|爬取猫眼榜单|Xpath定位标签爬取|代码
- C++之模块对于 SAFESEH 映像是不安全的
- yum 安装jenkins
- ADSL拨号网络环境下实时视频广播的完美实现
- 1114 Family Property (25 分)
- scala中一些常见用法
- kettle Windows下载
- c语言编程多项式,多项式c语言编程.docx
- jzoj6495 死星 (竞赛图五元环)
- ReadLikeHumans: Autonomous,Bidirectional and Iterative Language Modeling for Scene Text Recognition
- 道高一尺 魔高一丈(使用插件订火车票)
- UltraEdit for Mac 18.00 强大的文本编辑器 中文破解版下载