Python 3 - опции фильтра Scapy sniff - PullRequest
       16

Python 3 - опции фильтра Scapy sniff

0 голосов
/ 14 февраля 2019

Я использую функцию Scapy sniff для отслеживания входящего трафика на локальном интерфейсе.Я хотел бы выделить и распечатать только конкретные пакеты.Для этого мне нужно сопоставить значения в определенных полях заголовков TCP / UDP / IP.Есть ли подробный документ, который объясняет использование фильтров Scapy sniff?Как я могу установить фильтр для ссылки на какое-то значение поля пакета?

Например, мне нужен фильтр, который показывает только и только пакеты SYN + ACK.По некоторым причинам это не работает, как ожидалось:

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter="ip src x.x.x.x and tcp-syn !=0 and tcp-rst !=1",
      prn=lambda x: x.summary)

1 Ответ

0 голосов
/ 15 февраля 2019

Фильтр написан в стандартном синтаксисе BPF, как описано здесь https://www.wireshark.org/docs/man-pages/pcap-filter.html

Для вашего случая использования (только пакеты SYN-ACK), я думаю, это будет что-то вроде этого:

filter = "host x.x.x.x and (tcp[tcpflags] & (tcp-syn|tcp-ack)) == (tcp-syn|tcp-ack)"

sniff(iface="Intel(R) Ethernet Connection (4) I219-LM",
      filter=filter, prn=lambda x: x.summary)
...