CAP文件是比较通用的一种文件格式,基本上大多数抓包软件都支持以此格式将捕获的网络数据包存储下来。
    需要说明的是,CAP文件存储下来的,一般都是网络数据帧。不同网络传输协议下的帧格式是有差异的,所以这里以以太网帧作讨论。我所
分析的CAP包是由ethereal抓取的。tcpdump和windump抓的包格式基本一致。CAP文件是全十六进制数据文件而不是文本文件,所以其结构需要分析,由于我并不打算做专门的分析软件,所以我只作对我来说有意义的
一些数据的分析。CAP里面的数据有些地方是和我们常规数据的顺序一样的,有些位置是标准的高位取反,根据该位置表示的数据类型确定。
    CAP文件的前24个16进制位是头文件相关的信息我们不用关心,随后紧跟的八个位(后面所有的位都指两个16进制数构成的一个十六进制位,如AC,B8就是两个
16进制位),是抓包的时间戳标记,里面应该包括了年月日和具体到毫秒级别的时间,前4位高低位的互换再乘1000可得到当前的时间精确到秒,后4位是微妙,算法同前面。
    随后的8个位是比较重要的,其中前4个是我们抓取到的数据帧长度,同时也关系到我们如何在CAP文件中得到下一组数据帧位置。这四个位
每个的前两位高位取反后表示数据帧的长度,第一组是软件抓取到的数据帧长度,后面一组是网络中实际数据帧的长度。一般来说第一组小于
等于第二组数据。这八个位结束后,就是帧的具体内容,长度就是前面的第一组数,这个长度的后面,就是CAP存的下一组帧数据,也就是说,
CAP文件里面并没有规定捕获的帧数据之间有什么间隔字符串,我们需要靠第一组数确定,下一组数据在文件中的起始位置。
    下面的内容其实应该算是TCP/IP书里的标准内容,不过我还是继续写吧。
    我们接着讲后面负载的内容,6位的目标MAC地址,6位的源MAC地址,然后二位是三层协议类型,一般来说,我们关心的可能只有0800这代
表IP,随后一位是IP协议的版本号,45表示的是V4版本,后一位是差分服务表示位,然后两位是IP包长度,这一长度包括了IP包头,随后两位
是鉴别代码,随后的标志第一个是数据分段标志,表示是否对数据进行分拆,00表示没有设置,40表示设置为不拆分。随后一位是拆分偏移量,
对于没有拆分的数据没有意义就是00。随后一位有名的time to live值,不用多说,随后一位是四层协议类型,TCP就是06,UDP是11,随后两
位是头校验码,知道的人都懂。
    随后四位就是我们的源IP地址,接着四位是目标IP地址,这8位也是属于IP包头的。随后两位是源端口,接着两位是目的端口(不管是TCP
还是UDP)
    下面要区分的说,如果是TCP的话,
    随后的两个四位数据分别是会话序号和回应序号,如果回应序号为0,很多时候意味着这是一个SYN,不过SYN专门有标志。接下来一位是
TCP包头长度。这个长度由源端口开始算。再接下来一位就是应答标志位,如果是02表示是SYN,如果是12则表示是SYN,ACK,如果是10则表示
是ACK。然后的两位是WINDOW SIZE,然后两位是TCP包头的校验。
    再接下来就是TCP包的负载内容了,这根据上层应用来说就更为复杂,这里不详细讨论。
    接着说,如果是UDP包,端口号过了直接就是包负载长度两位长和UDP包头校验码两位长,然后就是UDP包负载的内容了。

如何将抓取的文件保存到本地?

tcpdump tcp port 5432 -w ./postgres.cap

如何查看.cap文件?

tcpdump -r data8080.cap

关于.cap文件分析的更多相关文章

  1. 基于TcpDump和pcap文件分析的Android平台网络抓包程序设计与实现【随便】

    一.考虑使用Tcpdump,将抓到的包保存到cap文件中,然后手动分析.参考资料:1. http://www.cnblogs.com/tt-0411/archive/2012/09/23/269936 ...

  2. tcpdump抓包并保存成cap文件

    首选介绍一下tcpdump的常用参数 tcpdump采用命令行方式,它的命令格式为: tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ] [ -i 网络接 ...

  3. linux实践之ELF文件分析

    linux实践之ELF文件分析 下面开始elf文件的分析. 我们首先编写一个简单的C代码. 编译链接生成可执行文件. 首先,查看scn15elf.o文件的详细信息. 以16进制形式查看scn15elf ...

  4. 蓝屏 Dump文件分析方法

    WinDbg使用有点麻烦,还要符号表什么的.试了下,感觉显示很乱,分析的也不够全面... 试试其他的吧!今天电脑蓝屏了,就使用其dump文件测试,如下: 1.首先,最详细的,要属Osr Online这 ...

  5. KEIL MDK输出map文件分析

    一.文件分析流程 1.第一部分:Section Cross References 主要是各个源文件生成的模块之间相互引用的关系. stm32f10x.o(STACK) refers (Special) ...

  6. ecshop init.php文件分析

    1.  ecshop init.php文件分析 2.  <?php  3.   4.  /**  5.  * ECSHOP 前台公用文件  6.  * ===================== ...

  7. [转载]mysql慢日志文件分析处理

    原文地址:mysql慢日志文件分析处理作者:maxyicha mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysq ...

  8. 使用 Eclipse Memory Analyzer 进行堆转储文件分析

    Eclipse Memory Analyzer(MAT)是著名的跨平台集成开发环境 Eclipse Galileo 版本的 33 个组成项目中之一,它是一个功能丰富的 JAVA 堆转储文件分析工具,可 ...

  9. Android JNI入门第三篇——jni头文件分析

    一. 首先写了java文件: public class HeaderFile { private native void  doVoid(); native int doShort(); native ...

随机推荐

  1. 计蒜客 28437.Big brother said the calculation-线段树+二分-当前第k个位置的数 ( ACM训练联盟周赛 M)

    M. Big brother said the calculation 通过线段树维护. 这个题和杭电的一道题几乎就是一样的题目.HDU5649.DZY Loves Sorting 题意就是一个n的排 ...

  2. Python的程序结构[1] -> 方法/Method[2] -> 魔术方法 __init__ / __del__ / __new__

    魔术方法 / Magic Method 魔法方法就是可以给你的类增加魔力的特殊方法(实质应称为特殊方法,魔术方法在JavaScript中有所体现,对象具有不透明特性,而且无法在自定义对象中模拟这些行为 ...

  3. HDU 4417 Super Mario (划分树)(二分)

    Super Mario Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  4. luogu P1361 小M的作物

    题目链接 luogu P1361 小M的作物 题解 源汇点为A,B 向种子连边,容量为价值,每个种子能与A或B联通,考虑最小割 用建边的总流量减去最小割就是答案 相同利益的时候新建节点,由额外利益构成 ...

  5. oracle中执行execute的时候报异常ORA-01031的解决办法

    在做实验的时候,编写关于"在存储过程中使用动态sql,建立一个统计表,并把统计结果,插入这个表中"的PL/sql语句在执行时出现权限不足的问题. 上网查询很多,看到了下面这篇博文( ...

  6. uprobes issue with oracle 12c

    https://mahmoudhatem.wordpress.com/2017/03/21/uprobes-issue-with-oracle-12c/

  7. C#练习DataReader(转载)

    本文转自http://www.cnblogs.com/Mysterious/p/3422901.html SQL代码: create database ThreeDb go USE ThreeDb; ...

  8. 从let和const谈起

    注册博客园账号也有好些年了,有事没事经常来逛逛,感觉博客园的同学们一直都很活跃,相比国内其他社区来讲,这里的技术氛围很浓,非常适合学习和交流,所以博主我也决定在这里驻扎了,在这里,博主希望能坚持写一些 ...

  9. 墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法

    转自原文 墨卡托投影.高斯-克吕格投影.UTM投影及我国分带方法 一.墨卡托投影.高斯-克吕格投影.UTM投影 1. 墨卡托(Mercator)投影 墨卡托(Mercator)投影,是一种" ...

  10. 本地缓存localstorage使用

    最近做项目遇到一个问题,即从“个人中心”点击进入“修改支付宝”,需要自动获取用户手机号怎么做? 修改支付宝的api不提供用户手机号数据,但是发现个人中心提供,于是想通过localstorage在个人中 ...