windows下的wireshark和Linux下的tcpdump所抓的包为同样的CAP文件的格式,sniffer软件所抓的包文件扩展名也是.cap,但格式却不太一样。本文主要说明ethereal和tcpdump抓包产生的.cap文件的格式。

其实,要获得PCAP文件的格式,除了直接打开.cap文件来分析外,可以看WinPcap包或Linux下/usr/include下的pcap.h头文件。pcap.h文件中不但提供了cap文件解析的各种结构体,还提供了解析函数。

OK,先使用UE或WinHex打开.cap文件,开始分析其内容:

(1)cap文件头

    前面24个字节是.cap文件的文件头。
    头信息对应的结构体为:
struct pcap_file_header {
    bpf_u_int32 magic;
    u_short version_major;
    u_short version_minor;
    bpf_int32 thiszone;    /* gmt to local correction */
    bpf_u_int32 sigfigs;    /* accuracy of timestamps */
    bpf_u_int32 snaplen;    /* max length saved portion of each pkt */
    bpf_u_int32 linktype;    /* data link type (LINKTYPE_*) */
};
    cap文件中的linktype很重要,不同的网络环境下抓包,数据帧的帧头是不一样的。比如,在局域网内抓包,linktype为1 ( DLT_EN10MB, Ethernet (10Mb) ),以太网的帧头就是两个网卡物理地址;如果直接用ADSL拨号上线,则linktype为9 ( DLT_PPP, Point-to-point Protocol),数据帧头为PPP协议。
    关于linktype支持的类型,可以参考pcap-bpf.h中定义的以DLT_开头的宏。

(2)每个帧的头信息
    头信息后是顺序的每个数据包的信息,其中前16字节是抓包时间、捕获的包长度、真实的数据包长度,然后才是具体的数据帧的内容。

上图是单个数据包的cap文件,数据包长度是62字节(3E0x)。
    以上一个数据段的内容。数据段的头对应的结构体为:
struct pcap_pkthdr {
    struct timeval ts;    /* time stamp */
    bpf_u_int32 caplen;    /* length of portion present */
    bpf_u_int32 len;    /* length this packet (off wire) */
};
    ts为抓包的时间;
    caplen和len我发现一般都是一样的。(什么情况下会不一样还没搞懂)
    若是多个帧的cap文件,每个帧之前都会有16字节的帧头信息,之后才是具体的捕获到的数据帧内容,需要根据每个帧的长度来将不同的帧分开。

也就是说,若是单个帧的cap文件,前40字节是cap文件提供的信息,之后才是帧内容。

(3)帧内容

之后就是包的信息了。例子中的包信息是局域网中抓的,所以是以太网帧头,结构体如下:
struct EthernetPacket
{
    char MacDst[6];             ///< 目的网卡物理地址
    char MacSrc[6];             ///< 源网卡物理地址
    unsigned short PacketType; ///< 包类型, ip或ARP等
};
    PacketType=0x0008是IP包,PacketType=0x0608是ARP包。

之后的具体数据包信息根据协议进行解析即可。

cap数据包文件解析相关推荐

  1. 后缀名为.cpa文件结尾的数据包文件解析

    首先明确一下cap包的内容 cap包为通过抓包软件保存下来的数据包文件,不同的抓包软件保存下来的cap包格式也有很大差异,从最开始的4个字节便可以看出,如下列出不同抓包软件的cap包文件前4字节的差异 ...

  2. linux上查看cap文件,如何使用tcpdump在Mac OS X上读取.cap数据包捕获文件 | MOS86

    还可以执行数据包跟踪或嗅探和捕获来自网络的数据包,结果通常是创建一个.上限捕获文件.那个无论您使用何种嗅探网络,网络管理员和安全性专业人士中相当常见的任务,都会创建cap,pcap或wcap数据包捕获 ...

  3. python分析数据包_Python解析pcap数据包

    Post Views: 29,789 零.前言 历时数月,终于结束了考研初试,Blog也很长时间没有更新了,期间还是有些小伙伴来Blog看文章很是感动.以后一定会坚持更新,尽量给大家推送一些干货.这次 ...

  4. tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间

    tcpip数据包编码解析(chunk and gzip)_space of Jialy_百度空间 // 使用zlib库的代码#include "zlib/zlib.h"void u ...

  5. Wireshark抓取的数据包文件提取

    (第一种方法 直接使用wireshark自带的导出) 分离图片文件) wireshark在指定的数据流中提取文件很简单.先选中要提取文件的数据包.wrieshark都会标明文件的类型.所以我们也就能够 ...

  6. 中国省市地图json数据包及解析

    地图数据包解析 Controller层代码 @PostMapping(value = "mapJson")@ApiOperation(value = "地图数据解析&qu ...

  7. 列举网络爬虫所用到的网络数据包,解析包?

    网络数据包 urllib.urllib2.requests 解析包 re.xpath.beautiful soup.lxml 转载于:https://www.cnblogs.com/sea-strea ...

  8. python解析数据包_python – 解析UDP数据包

    我正在构建一个UDP服务器来解析和验证传入的UDP数据包.我能够接收和解析数据包,但标头值不是我所期望的. 这是传入数据包的结构 包ID(4个字节) 包序列(4个字节) XOR密钥(2个字节) 数据包 ...

  9. DNS数据包格式解析

    DNS数据包大概可以分为基本选项部分.请求部分.应答资源部分:下面讲解将以访问百度抓取到的请求/应答数据包来说明 基本选项部分 基本选项部分的结构请求数据包和应答数据包基本都是一样的,只是对应的值不一 ...

最新文章

  1. python做电脑软件-程序员带你十天快速入门Python,玩转电脑软件开发(二)
  2. oracleDBA-D1
  3. Mysql 字符操作函数相关
  4. error 1307 (HY000):Failed to create procedure
  5. 2021年中国电动气动控制器市场趋势报告、技术动态创新及2027年市场预测
  6. 洛谷 P1948 [USACO08JAN]电话线Telephone Lines
  7. start.bat怎么启动java项目_部署java项目为服务,设置开机自启动
  8. 物理层数据通信理论基础
  9. VC中CListCtrl设置滚动条在最下边的方法(MSDN中的例子)
  10. PHP对图片按照一定比例缩放并生成图片文件
  11. 虚拟机安装python包会出问题吗_虚拟机CentOS7安装python3.6.2及requests模块的问题汇总...
  12. 文献阅读(19)ISSCC 2020
  13. 异数OS-织梦师-异数OS虚拟容器交换机(七) 走进4Tbps网络应用时代,加速5G应用真正落地
  14. autosar-Layered Software Architecture
  15. 计算机科学与技术有关参考文献,计算机科学与技术毕业论文参考文献示例
  16. Python进阶之路 简单的棋盘游戏
  17. 月薪3w算法工程师日均7行代码被开除 / AI歌手入学上海音乐学院 / 天文照片被植入恶意代码...
  18. Nine Knights
  19. ARP家族--ARP,代理ARP,Gratuitous ARP
  20. 2022-雨课堂-工程伦理期末考试答案

热门文章

  1. php调用接口发送短信
  2. 第3课用计算机处理信息,第3课 用计算机处理信息 课件.
  3. 常系数非齐次线性微分方程
  4. 杀戮空间2开服服务器架设教程UE3Redist
  5. 三相对称分量法详细推导
  6. Java公历(阳历)转换农历(阴历)工具类
  7. Java构建递归树工具类
  8. NOJ 1056 地道 普里姆算法+贪心法
  9. Qt QGraphicsTextItem 实现双击进入编辑状态
  10. linux内核如何安装vim,linux软件安装以及vim