Scapy фильтрация с помощью функции sniff () - PullRequest
4 голосов
/ 09 февраля 2012

Я использую функцию sciffy sniff () для захвата пакетов.Я хочу захватывать только пакеты EAP.Я могу отфильтровать пакеты EAP с помощью tcpdump с помощью следующего фильтра:

# tcpdump -i mon0 -p ether proto 0x888e
tcpdump: WARNING: mon0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on mon0, link-type IEEE802_11_RADIO (802.11 plus radiotap header), capture size 65535 bytes
13:04:41.949446 80847234901us tsft 48.0 Mb/s 2437 MHz 11g -16dB signal antenna 1 [bit 14] EAP packet (0) v1, len 5
13:04:46.545776 80851831746us tsft 54.0 Mb/s 2437 MHz 11g -13dB signal antenna 1 [bit 14] EAP packet (0) v1, len 5

В то же время у меня есть функция sniff (), работающая с тем же фильтром, но функция не захватывает пакеты EAP:

sniff(filter="ether proto 0x888e",iface="mon0", count = 1)

Почему функция sniff () не захватывает пакеты EAP?

РЕДАКТИРОВАТЬ:

Извините за позднюю реакцию, я попробовал то, что вы предложили:

> conf.iface = 'mon0'
> pkts = sniff(filter="wlan proto 0x888e", count = 1)
tcpdump: WARNING: mon0: no IPv4 address assigned
> pkts
Sniffed: TCP:0 UDP:0 ICMP:0 Other:1
> EAP in pkts[0]
False 

Но это по-прежнему не захватывает пакет EAP: (

Ответы [ 4 ]

5 голосов
/ 28 апреля 2013

Я знаю, что это год спустя, но в интересах любого, кто рассматривает этот вопрос, ответ заключается в том, что он перехватил пакеты EAPOL, а не пакеты EAP.Использование команды

sniff(filter="ether proto 0x888e", count=4)

0x888e относится к EAPOL в протоколе Ethernet, который требует использования протокола ether, а не протокола WLAN.Я не уверен, что 0888e можно ссылаться на что-либо в wlan proto, но после того, как я сделал почти то же самое, что и op (за исключением замены 'wlan' на 'ether'), я получил

>>> EAP in b[0]
False

Однако когдаЯ ввожу

>>> EAPOL in b[0]
True

Я полагаю, что OP захватил то, что искал его код (2 пакета EAPOL), но он не захватил то, что, как он думал, он искал - 2 пакета EAP.

Edit - Даже когда я заменяю ether на wlan, я все равно придумываю EAP как false и EAPOL как true.

1 голос
/ 20 апреля 2012

Вы запускаете tcpdump одновременно с scapy sniff?

Scapy может эмулировать TCPDUMP просто отлично. Просто запускайте их по одному.

1 голос
/ 10 февраля 2012

У вас может быть несколько вопросов здесь, поэтому позвольте мне обратиться к той, с которой я только что столкнулся сегодня.

Во-первых, как видно из следующего сообщения об ошибке: http://trac.secdev.org/scapy/ticket/537 - Scapy не учитывает параметр iface в функции сниффа.Поэтому, чтобы правильно установить iface, вы должны будете использовать:

conf.iface = 'mon0'

Надеюсь, это позволит вам добавить фильтр и фактически получать пакеты по сети.

Если вы прослушиваете mon0, и это беспроводной интерфейс, вы можете попробовать wlan proto вместо ether proto, но у меня нет сети для тестирования пакетов EAP для дальнейшей помощи.1010 *

0 голосов
/ 06 февраля 2015

Я думаю, что это все частичные ответы, вместе это сработало для меня. Я сделал:

conf.iface='wlan0.mon'
a=sniff(filter='ether proto 0x888e', prn=lambda x: x.summary(),
  count=100, store=1)

Затем я сгенерировал обмен EAPOL, вручную отключив устройство от сети WPA. Когда это попыталось повторно связать, я захватил обмен EAPOL с 4 путями. Сделайте счет> 4, потому что, вероятно, будут повторные передачи кадра. AFAIK, scapy не декодирует данные KEY, поэтому они выводятся в виде шестнадцатеричной строки.

...