web-dev-qa-db-fra.com

Erreur lors de la détection des paquets utilisant "SNIFF" dans "SCAPY" (python)

Je voulais renifler les images de balises du réseau sans fil. J'ai installé scapy et réglé le wlan0 en mode de surveillance. puis en terminal,

-

  1. Je suis entré dans la commande Scapy pour ouvrir Scapy.
  2. Puis dans Scapy, je mets: conf.iface="wlan0"
  3. Ensuite, j'ai utilisé la commande sniff en tant que: p=sniff(count=1)
  4. Mais cela m'a donné une erreur en tant que:

    Traceback (most recent call last):
    File "<console>", line 1, in <module>
    File "/usr/local/lib/python2.7/dist-packages/scapy/sendrecv.py", line 561, in sniff
    s = L2socket(type=ETH_P_ALL, *arg, **karg)
    File "/usr/local/lib/python2.7/dist-packages/scapy/Arch/linux.py", line 459, in __init__
    self.ins = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(type))
    File "/usr/lib/python2.7/socket.py", line 191, in __init__
    _sock = _realsocket(family, type, proto)
    error: [Errno 1] Operation not permitted
    

Sil te plait aide moi. J'essaie d'utiliser Scapy pour détecter une trame de balise sur le réseau. Dites-moi aussi ce que je devrais mettre comme filtre pour ne capturer que les images de balises.

1
Amit
#!/usr/bin/env python
from scapy.all import *

ap_list = []
def myPacketHandler(pkt) :
    if pkt.haslayer(Dot11) :
        #type 0 = Management subtype 4 = Beacon
        if pkt.type == 0 and pkt.subtype == 8 :
            if pkt.addr2 not in ap_list :
                ap_list.append(pkt.addr2)
                print "AP MAX: %s with SSID: %s" % (pkt.addr2, pkt.info)

sniff(iface="mon0", prn = myPacketHandler, store=0)

Edit (sortie après 500 balises - peuvent être les mêmes balises):

#!/usr/bin/env python
from scapy.all import *
import sys

ap_list = []
d = {'counter' : 0}
def myPacketHandler(pkt) :
    if pkt.haslayer(Dot11) :
        #type 0 = Management subtype 4 = Beacon
        if pkt.type == 0 and pkt.subtype == 8 :
            d['counter'] += 1
            if d['counter']>500:
                sys.exit()
            if pkt.addr2 not in ap_list :
                ap_list.append(pkt.addr2)
                print "AP MAX: %s with SSID: %s" % (pkt.addr2, pkt.info)

sniff(iface="mon0", prn = myPacketHandler, store=0)
0
aldwinaldwin

Je viens de me rendre compte que je n'utilisais pas scapy en tant qu'administrateur (Sudo). J'ai relancé la thérapie avec Sudo et cela a fonctionné. Afficher la réponse pour aider toute personne ayant un problème similaire.

Mais je ne suis toujours pas en mesure de savoir quoi utiliser comme filtre.

0
Amit