Sto cercando di imparare QUANDO NON utilizzare:
- classi
- variabili membro
QUI È IL CODICE
access_point_detection_classes.py
from scapy.all import *
class Handler :
def __init__(self) :
self.wap_list = []
self.TempWAP = None
def process_packet_capture(self, packet_capture) :
for packet in packet_capture :
if packet.haslayer(Dot11) :
if packet.subtype == 8 :
bssid = packet.addr3
if packet.haslayer(Dot11Elt) :
p = packet[Dot11Elt]
while isinstance(p, Dot11Elt) :
if p.ID == 0 :
essid = p.info
if p.ID == 3 :
channel = ord(p.info)
p = p.payload
self.TempWAP = WirelessAccessPoint(bssid, essid, channel)
if self.check_for_duplicates() == False:
self.wap_list.append(self.TempWAP)
def check_for_duplicates(self) :
for w in self.wap_list :
if self.TempWAP.bssid == w.bssid :
return True
return False
class WirelessAccessPoint :
def __init__(self, bssid, essid, channel) :
self.bssid = bssid
self.essid = essid
self.channel = channel
access_point_detection.py
from scapy.all import *
from access_point_detection_classes_module import *
def main() :
H = Handler()
packet_capture = sniff(count = 50)
H.process_packet_capture(packet_capture)
for w in H.wap_list :
print w.bssid
print w.essid
print w.channel
print '++++++++++++++++++++++++'
# enable_managed_mode('wlan0')
if __name__ == "__main__" :
main()
QUI I MIEI PENSIERI
Sono quasi sicuro di sapere QUANDO utilizzare una classe e le variabili membro. Guarda la mia seconda classe WirelessAccessPoint
. Il perfetto bisogno di una classe secondo me.
- Ho bisogno di più oggetti di questo tipo
- Gestione più semplice dei dati associati a questo tipo
È grandioso, ma guarda la mia prima classe Handler
. Ad essere onesti, l'ho creato principalmente per poter praticare OOP. È utile quando ho bisogno di accedere a wap_list
. Tuttavia, lo inizializzo senza passare i parametri per il costruttore. E 'questo che sconfigge lo scopo? Sembra che potrei creare tutti i metodi di questa classe con solo il parametro self
. Ad esempio (haha) potrei rendere packet_capture
una variabile membro di Handler
e il metodo process_packet_capture()
prendere il parametro self
.
A questo punto mi sento come se non fissassi alcune regole di base per me stesso, cercherò di rendere tutto una classe e ogni cosa una variabile membro e non passerò mai più un parametro oltre a self
!