Scapy: неопределенные переменные 'Dot11Beacon' и 'Dot11Elt' - PullRequest
1 голос
/ 11 января 2020

Я пытаюсь сделать простой сниффер Wi-Fi, используя scapy, в Ubuntu, но я столкнулся со следующими проблемами при попытке запустить приложение:

Undefined variable 'Dot11Beacon' 
Undefined variable 'Dot11Elt'

Пока я пытаюсь запустить код в следующий учебник: https://www.shellvoide.com/python/how-to-code-a-simple-wireless-sniffer-in-python/

, и он просто не работает из-за вышеуказанных ошибок. Я использую Python 3 и последнюю версию scapy, установленную через pip.

Даже если это то же самое, что и в руководстве, вот части кода, которые я использую:

from scapy.all import *

sniff(iface=interface, prn=process_packet)

def process_packet(pak):
    if pak.haslayer(Dot11Beacon):
        if pak.getlayer(Dot11).addr2 not in F_bssids:
            F_bssids.append(pak.getlayer(Dot11).addr2)
            ssid = pak.getlayer(Dot11Elt).info
            if ssid == '' or pak.getlayer(Dot11Elt).ID != 0:
                print("Hidden Network Detected")
            print("Network Detected: %s" % (ssid))

Ответы [ 2 ]

1 голос
/ 11 января 2020

У вас та же проблема, что и у { ссылка } То же самое относится к PyCharm и Visual studio. Посмотрите на мой ответ там.

Обходной путь - импортировать все, что вам нужно, из соответствующего файла scapy, без использования всего. Это чище, но дольше. Или вы можете использовать «добавить исключение» в вашей IDE, если вы не ищете что-то чистое.

1 голос
/ 11 января 2020

Если компилятор говорит, что переменные не определены, определите их в своей библиотеке, не используя *. Там для использования from scapy.all import (Dot11,Dot11Beacon,Dot11Elt) вместо from scapy.all import *

...