如何以 pcap 格式保存以太网帧
How to save Ethernet frames in pcap format
我正在编写一个应用程序,该应用程序侦听网络接口,选取一些帧,编辑它们,然后将它们保存到磁盘。与tshark和tcpdump非常相似。
我的代码是用C++编写的
但是,我想以 pcap 格式保存数据包,但我找不到接受以太网帧(在内存中)并将其保存到 .pcap 文件的 C/C++ 库。
- 注意:同时我使用hexdump和text2pcap,但这在生产中是不可接受的。
解决方案更新:
#include <pcap.h>
pcap_t* p = pcap_open_dead(DLT_EN10MB, 65535);
const std::string pcap_file_name = getPcapName();
pcap_dumper_t* dumper = pcap_dump_open(p, pcap_file_name.c_str());
pcap_pkthdr h;
h.caplen = packet_len;
h.len = packet_len;
pcap_dump((u_char*)dumper, &h, packet);
pcap_dump_close(dumper);
pcap_close(p);
为什么不能在C++代码中直接使用 WinPcap/libpcap?这些是 C 库,所以你应该能够链接它们。
在 unix 下使用 libpcap,或在 windoze 下使用 winpcap。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 在C++中将类(带有Vector成员)保存为二进制文件
- C++.我想将更改后的特定字符行保存在字符串中
- 使用FFMPEG将RGB图像序列保存到.mp4时出现问题
- 将RGB图像保存为PPM格式
- 哈希文件递归并保存到矢量Cryptopp中
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 无法通过头文件保存变量的值
- 我们可以将数据永久保存为数据结构吗?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- Gstreamer:每 5 秒使用多文件墨水保存图像/jpeg
- 如何访问由共享指针保存的类方法?
- 为什么签名字符可以保存大于 127 的值?
- 如何以 pcap 格式保存以太网帧