Чтение отправленных и полученных пакетов SYS и ACK с помощью dpkt и python

Мне нужно проанализировать файл.pcap для обнаружения возможных сканирований SYS. Мне нужно иметь возможность отображать IP-адрес любых IP-адресов, которые отправили в 3 раза больше пакетов SYS, чем количество полученных пакетов SYS+ACK. Теперь у меня есть общее представление о том, как это реализовать. Моя проблема в том, что я не знаю, как получить разные пакеты SYS (как отличить их от отправленных / полученных пакетов) при разборе файла pcap. Я просмотрел другие посты и документацию, но мне не повезло.

Я запустил программу на 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

Когда я вызываю эти последние две строки, я получаю все пакеты SYS и ACK от pcap? Как мне узнать, что было отправлено / получено?

1 ответ

Я бы порекомендовал вам использовать инструмент Scapy, который можно найти здесь. 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 в свою среду

Другие вопросы по тегам