Чтение отправленных и полученных пакетов 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 в свою среду