【问题标题】:pcap parsing in python2.7python2.7中的pcap解析
【发布时间】:2020-11-20 10:23:55
【问题描述】:

从这个问题继续。https://stackoverflow.com/questions/9330686/parsing-pcap-in-python-2-6 我现在正在尝试执行打印摘要,但仍然不确定在打印摘要之前在我的最终参数中包含什么。请看下面的代码:

def run_example():

global total_packet_count, total_bytes_count, average_pkt_size

try:
    sys.argv[1]
    dmp_file = sys.argv[1]
    fp_dmp_file = open(dmp_file)
except Exception as e:
    print 'Error: please supply pcap filename!\n'
    return

f = open('test1.pcap') 尝试: 系统.argv[1] dmp_file = sys.argv[1] 文件 = 打开(dmp_file) 例外为 e: print '错误:请提供 pcap 文件名!\n' 返回

pcap = dpkt.pcap.Reader(file)

for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data
    src_ip = socket.inet_ntoa(ip.src)
    src_port = str(ip.data.sport)
    dst_ip = socket.inet_ntoa(ip.dst)
    dst_port = str(ip.data.dport)

    if type(ip.data) == dpkt.tcp.TCP:
        protocol = 'tcp'
    
    elif type(ip.data) == dpkt.udp.UDP:    
            protocol = 'udp'

    print_packet_info (ts, src_ip, src_port, dst_ip, dst_port, protocol, ip.len, ip.ttl)


print_summary(len (total_packet_count), len (total_bytes_count), len (average_pkt_size))

##fp_dmp_file.close()  

如果 name == 'ma​​in': run_example()

我设法打印了数据包数据,但仍然无法打印摘要。我想我需要对全局值进行计数才能打印摘要。

非常感谢任何帮助

【问题讨论】:

  • 我更新了代码,但仍然需要计算“全局变量才能打印摘要”。有人可以帮忙计数吗?
  • 任何人都可以帮助计数。首先,我想计算(总数据包计数),然后根据每个添加的数据包增加(总字节数)。然后我们根据前两个计数计算(平均 pkt 大小)。关于如何实现这一目标的任何提示?

标签: python-2.7 dpkt


【解决方案1】:

所以首先,我们需要在添加库之后的文件顶部再次识别全局变量,以便在“def run_example()”之外调用它。 然后,在“dst_port”之后,我们可以调用我们的摘要变量,第一个将增加文件中的数据包。在这种情况下,第二个将检查数据包大小的长度(字节),这可以在 dkpt 手册中找到。最后,我所做的“打印摘要”变量并不正确。相反,我们将定义的变量称为平均值,我们将除以“总字节数”/“总数据包”,从而得到数据包的平均大小。

【讨论】:

    猜你喜欢
    • 2016-08-27
    • 2012-10-11
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 2013-08-17
    相关资源
    最近更新 更多