def recv_pkts(hdr, data): global lastexport global ha global pacchetticatturati try: #decodifica del pacchetto radio = RadioTapDecoder().decode(data) datadown = radio.get_body_as_string() ethe = Dot11ControlDecoder().decode(datadown) datadowndown = ethe.get_body_as_string() decodedDataDownDown = DataDecoder().decode(datadowndown) macS = (addressDecode(decodedDataDownDown)) s = type(radio.get_dBm_ant_signal()) time = datetime.datetime.now() #aggiunta al dizionario #controllo se il segnale ha un valore consistente, in caso contrario scarto if (s is int): signal = str(-(256 - radio.get_dBm_ant_signal())) + " dB" t = (time, signal) if (ha.has_key(macS)): ha.get(macS).append(t) else: l = [t] ha[macS] = l pacchetticatturati = pacchetticatturati + 1 #esporta su file (thread in parallelo) if ((time - lastexport).seconds > delay) & len(ha.keys()): haexport = ha ha = {} lastexport = time thread.start_new_thread(exporter, (haexport, )) except KeyboardInterrupt: raise except struct.error: pass #perche non lanciano eccezioni custom quelli di Impacket except: #per evitare che crashi qual'ora ci siano errori imprevisti, ne tengo traccia per il debug global imprexc _, exc_obj, exc_tb = sys.exc_info() imprexc = (exc_obj, exc_tb.tb_lineno) thread.start_new_thread(exporterException, (imprexc, ))
def recv_pkts(hdr, data): global lastexport global ha try: #decodifica del pacchetto radio = RadioTapDecoder().decode(data) datadown = radio.get_body_as_string() ethe = Dot11ControlDecoder().decode(datadown) datadowndown = ethe.get_body_as_string() decodedDataDownDown = DataDecoder().decode(datadowndown) ethMacS = [None] * 6 for i in range(0, 6): #salto i primi 8 byte per ottenere il mac trasmittente ethMacS[i] = hex(decodedDataDownDown.get_byte(8 + i)) macS = ':'.join(map(str, ethMacS)) s = type(radio.get_dBm_ant_signal()) time = datetime.datetime.now() #aggiunta al dizionario #controllo se il segnale ha un valore consistente, in caso contrario scarto if (s is int): signal = hex(radio.get_dBm_ant_signal()) t = (time, signal) if (ha.has_key(macS)): ha.get(macS).append(t) else: l = [t] ha[macS] = l #esporta su file (thread in parallelo) if ((time - lastexport).seconds > delay) & len(ha.keys()): haexport = ha ha = {} lastexport = time thread.start_new_thread(exporter, (haexport, )) except KeyboardInterrupt: raise except: pass