读取使用dpkt和python发送和接收SYS和ACK数据包

时间:2015-12-01 22:28:28

标签: python dpkt

我需要解析一个.pcap文件来检测可能的SYS扫描。我需要能够显示发送的SYS数据包数量是其收到的SYS + ACK数据包数量的3倍的IP地址的IP地址。现在我对如何实现这一点有一个大概的了解。我的问题是,在解析pcap文件时,我不知道如何获取不同的SYS数据包(如何区分发送/接收的数据包)。我查看了其他帖子和documentation,但一直不走运。

我启动了一个python程序,开始有点像这样:

import dptk

    //take in command line arguement
    file = arg

        openFile = open(file)
        pcap = dpkt.pcap.Reader(openFile)

    //not sure about these two lines
        syn_flag = ( tcp.flags & dpkt.tcp.TH_SYN ) != 0       
        ack_flag = ( tcp.flags & dpkt.tcp.TH_ACK ) != 0

当我拨打最后两行时,我是否从pcap获取所有SYS和所有ACK数据包?如何判断已发送/接收的内容?

1 个答案:

答案 0 :(得分:-1)

我建议您使用可以找到的Scapy工具here。 Scapy是一个数据包生成和操作工具,可以为您提供解析数据包的大量灵活性。以下是Scapy代码的简单示例:

pkts = PcapReader(inFile)
for p in pkts:
        F = bin(p['TCP'].flags)
        if F == SYN # 0x02:
            # Process Syn Packet
        elif F == ACK # 0x10:
            # Process Ack Packet

可以从其解释器中使用Scapy,也可以将Scapy框架工作导入您自己的环境