当前位置: 首页 > news >正文

libpcap 的使用

1.libpcap的模式

  • 有线环境: 使用混杂模式promisous,完成监听
  • 无线环境: 使用监听模式monitor,完成监听

2.交叉编译libpcap

  • 设置好交叉编译工具链后
  • 下载libpcap源码
  • 使用configure进行构建:–disable-shared 构建静态库,–host 、–with-linux
  • 构建
  • 参考海思 tcpdump 移植开发详解

3.去掉pcap文件里每帧的fcs

  • 利用libpcap库,读入待处理的pcap文件,然后去掉每帧尾部的4字节fcs,再写入新的pcap文件
#include <stdio.h>
#include <pcap.h>int main() {char errbuf[PCAP_ERRBUF_SIZE];pcap_t *handle;pcap_t *handle2;const u_char *packet;struct pcap_pkthdr header;int i;pcap_dumper_t *dumper;// 打开pcap文件handle = pcap_open_offline("1.pcap", errbuf);if (handle == NULL) {printf("Error opening pcap file: %s\n", errbuf);return 1;}// 打开输出pcap文件handle2 = pcap_open_dead(DLT_EN10MB, 65535);dumper = pcap_dump_open(handle2, "2.pcap");if (dumper == NULL) {printf("Error creating pcap file\n");return 1;}// 读取并打印每个数据包while ((packet = pcap_next(handle, &header)) != NULL) {// 写入数据包header.len -= 4;header.caplen -= 4;pcap_dump((u_char *)dumper, &header, packet);//printf("Packet length: %d\n", header.len);//for (i = 0; i < header.len; i++) {//    printf("%02x ", packet[i]);//}//printf("\n");}// 关闭pcap文件pcap_dump_close(dumper);pcap_close(handle2);// 关闭pcap文件pcap_close(handle);return 0;
}
http://www.lryc.cn/news/535948.html

相关文章:

  • ArcGISPro AA表O_Name字段 内容 复制到BB表BB字段里
  • 2.5 使用注解进行单元测试详解
  • 当没有OpenGL时,Skia如何绘制?
  • SaaS+AI应用架构:业务场景、智能体、大模型、知识库、传统工具系统
  • Go 语言中如何高效地处理集合
  • 布隆过滤器到底是什么东西?它有什么用
  • 【数据结构初阶第十节】队列(详解+附源码)
  • 沪深300股指期权能对股指期货进行完全套保吗?
  • JAVA学习第三天
  • win11电脑其他WiFi可以连,只有一个WiFi连不上
  • leetcode_1760 袋子里最少数目的球
  • Python 面向对象的三大特征
  • Linux下的进程切换与调度
  • 面向对象程序设计-实验六
  • MongoDB 7 分片副本集升级方案详解(上)
  • 【工业安全】-CVE-2022-35555- Tenda W6路由器 命令注入漏洞
  • 算法分析 ——《模拟》
  • 将Sqlite3数据库挂在内存上处理
  • 前端大屏适配方案:从设计到实现的全流程指南
  • 学习总结三十二
  • 飞书专栏-TEE文档
  • linux 查看设备中的摄像头迅速验证设备号
  • 2.8 企业级训练数据构造革命:从人工标注到GPT智能标注的工业级实践指南
  • DeepSeek的蒸馏技术:让模型推理更快
  • 19.4.6 读写数据库中的二进制数据
  • 如何在 Elasticsearch 中设置向量搜索 - 第二部分
  • 【CXX-Qt】0 Rust与Qt集成实践指南(CXX-Qt)
  • C++ 设计模式-适配器模式
  • 【Elasticsearch】文本分析Text analysis概述
  • 【IDEA】2017版本的使用