首页 文章

查找从pcap数据传输的数据量

提问于
浏览
0

我有一个pcap文件,其中包含来自二进制格式的实验的流量跟踪 . 我想要做的是找出不同主机互相交换的数据量,但我对使用pcap很新,我一直在寻找和尝试不同的事情而没有成功 .

tcpdump可以在这里有用吗?我用它处理了原始文件并得到了这样的东西:

2009-12-17 17:26:04.398500 IP 41.177.117.184.1618 > 41.177.3.224.51332: Flags [P.], seq 354231048:354231386, ack 3814681859, win 65535, length 338
2009-12-17 17:26:04.398601 IP 90.218.72.95.10749 > 244.3.160.239.80: Flags [P.], seq 1479609190:1479610159, ack 3766710729, win 17520, length 969
2009-12-17 17:26:04.398810 IP 244.3.160.239.80 > 90.218.72.95.10749: Flags [.], ack 969, win 24820, length 0
2009-12-17 17:26:04.398879 IP 41.177.3.224.51332 > 41.177.117.184.1618: Flags [P.], seq 1:611, ack 338, win 65535, length 610

每行末尾的“长度”值是两个主机相互转移了多少数据的良好指标吗?

问题是如果我用Wireshark查看原始文件,看起来这个长度实际上是TCP头长度,但数据/有效负载大小是在Wireshark中单独指定的(这四个数据包中的第一个包含38个字节)这令人困惑我 .

总结起来 - Wireshark说(关于第一个数据包):1)“线上396个字节”,2)“96个字节捕获”,3)“len:338”,4)“数据(38个字节)” .

Tcpdump说:“长度338”

如何找到有效负载大小?如果可能的话,我愿意使用Python,因为我将使用巨大的捕获文件 .

1 回答

  • 2

    tcpdump可以在这里有用吗?

    是 .

    每行末尾的“长度”值是两个主机相互转移了多少数据的良好指标吗?

    是 . 这是传输sans头的字节数 .

    我如何找到有效载荷大小?如果可能的话,我愿意使用Python,因为我将使用巨大的捕获文件 .

    你没有_17291890_假设是"everything after the IP header" . 这很容易用Python和 dpkt . 根据Jon's tutorial,假设没有选项的IP数据包,一些可能你想要的代码看起来像这样:

    #!/usr/bin/env python
    
    import dpkt
    from socket import inet_ntoa
    
    with open("sample.pcap") as f:
        pcap = dpkt.pcap.Reader(f)
        for ts, buf in pcap:
            ip = dpkt.ethernet.Ethernet(buf).data
            print "{} --> {} {}".format(inet_ntoa(ip.src), inet_ntoa(ip.dst), ip.len)
    

相关问题