pcap文件的python解析实例

本文介绍了使用Python解析pcap文件的过程,重点关注了Cooked Capture与Ethernet的区别以及时钟跳变的问题。通过示例展示了数据包抓取的时间信息和长度信息,并探讨了pcapng在解决多LinkType抓包问题上的优势。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

                最近一直在分析数据包。
同时也一直想学python。

凑一块儿了...于是,便开工了。座椅爆炸!

正文

首先要说的是,我知道python有很多解析pcap文件的库,这里不使用它们的原因是为了理解pcap文件的格式细节。使用tcpdump你可以很容易抓取到一系列的数据包,然而tcpdump并没有分析数据包的功能,如果想从这个抓包文件中分析出一些端倪,比如重传情况,你必须使用wireshark之类的软件,用wireshark打开tcpdump抓取的pcap文件,如果你看到了一堆堆的深红色(类似静脉血管里流出的猪血的颜色)的数据包,那么这些包一定是“在协议层看来”异常的数据包,包括但不限于重传,乱序等等,欲知详情,请在wireshark的过滤器中敲进去“tcp.analysis.”然后就会自动补全,这一切简直方便到极点。如果你还想看一些全局的统计数据,那么请点击”统计“菜单的第一个”捕获文件属性“,你会看到更多的信息。虽然数据包早就已经过去,但是雁过留声,我们通过抓取的数据包,还是可以得到更多的信息,多谢有wireshark/tshark(一个字符界面的pcap文件分析工具,类似wireshark,但更适合玩机械键盘的命令行粉们使用)/shookshark(...)这些工具,使得我们真实能够分析pcap文件以获取信息。
        然而,这些我觉得还不够。
        有一个简单的需求,我想得到在一个TCP连接中,一个端节点一共发送了多少字节的TCP载荷数据,包括正常发送以及重传。我没有在wireshark中找到得到这个数据的功能,于是我迫不及待自己写一个。厨师还怕没肉吃吗?
        但有个前提,那就是我必须搞明白pcap文件的格式,因为我想裸分析pcap文件,试图找出每一个感兴趣数据包的TCP载荷(不包括TCP头和IP头)长度,然后将其累加。这样我必须知道pcap文件的格式细节才行。
        幸运的是,pcap文件非常简单,就像我几乎10年前分析Windows PE文件一样,如今依然循着老路做着同样的事情。
        如果你不善于查文档,那么作为一个编程者,看libpcap的源码也是个不错的选择,几乎和任何文件格式一样,pcap也是一个自描述的格式(这个自描述设计的不够优雅,以至于后来出现了pcapng文件格式,后面我会写一篇文章单独论述之),整体包括文件头和数据载荷,这里所谓的数据载荷就是网络数据包。在libpcap的pcap.h文件中,结构体pcap_file_header描述了文件头:
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_*) */};
具体我就不解释了,待会儿我会用一个实例来解析。紧
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值