""" Created on Thu Jan 11 15:22:56 2018 @author: Robin Cavalieri IMA5SC - PFE 2018 P32 - Détection automatique de DoS sur réseau LoRa Enregistrements des trafics normaux """ ############################################################################## #LIBRAIRIES UTILES ############################################################################## import csv; import serial; import time; ############################################################################## ############################################################################## #CONSTANTES ############################################################################## POPULATION = 3000; TRAME_SIZE = 18; ############################################################################## ############################################################################## #FONCTIONS UTILES ############################################################################## #Enregistre ou non la séquence reçue def record_condition(sequence): if (0x46 in sequence): return True; else: return False; ############################################################################## ############################################################################## #DEFINITION DE LA LECTURE DE PORT ############################################################################## ser = serial.Serial( #Pour Linux #port='/dev/ttyACM0', #Pour Windows port='COM4', #Vitesse de communication baudrate = 9600, #Parité parity=serial.PARITY_NONE, #Bit de stop stopbits=serial.STOPBITS_ONE, #Taille du message bytesize=serial.EIGHTBITS, #Out timeout=1 ) counter=0; ############################################################################## ############################################################################## #ENREGISTREMENT DES TRAMES ############################################################################## #INITIALISATION nb_individus = 1; #file_name = "C:/Users/Utilisateur/PFE/python/datasets/trame_norm.csv"; file_name = "C:/Users/Utilisateur/PFE/python/datasets/trame_attack.csv"; fp = open(file_name, "w"); writer = csv.writer(fp); #BOUCLE D'ENREGISTREMENT while(nb_individus <= POPULATION): #Vérification du contenu x=ser.readline(); print(x); #Condition d'enregistrement if(record_condition(x)==True): writer.writerow(('1', x[0:TRAME_SIZE])); #writer.writerow(('2', x[0:TRAME_SIZE])); nb_individus = nb_individus + 1; #TRAITEMENT DES DONNEES : suppression des caractères inutiles fp.write(open(file_name).read().replace('\n','')); ###A DEVELOPPER POUR SUPPRIMER TOUS LES CARACTERES INUTILES #FERMETURE DU FICHIER fp.close(); ############################################################################## ############################################################################## #ENREGISTREMENT DES PING ############################################################################## #INITIALISATION nb_individus = 1; temp = 0; #file_name = "C:/Users/Utilisateur/PFE/python/datasets/ping_norm.csv"; file_name = "C:/Users/Utilisateur/PFE/python/datasets/ping_attack.csv"; fp = open(file_name, "w"); writer = csv.writer(fp); #BOUCLE D'ENREGISTREMENT while(nb_individus <= POPULATION+1): #Vérification du contenu x=ser.readline(); print(x); if(record_condition(x)==True and nb_individus == 1): debut = time.time(); nb_individus = nb_individus + 1; temp = debut; #Condition d'enregistrement après le 1er individu if(record_condition(x)==True and nb_individus > 1): fin = time.time(); delta_t = round((fin - temp)*1000); #stocké en ms #writer.writerow(('0', delta_t)); writer.writerow(('1', delta_t)); nb_individus = nb_individus + 1; temp = fin; #FERMETURE DU FICHIER fp.close(); ############################################################################## ############################################################################## #ENREGISTREMENT DE PUISSANCE DE SIGNAL ############################################################################## #Ici j'enregistre le delta de puissance entre deux réception. #Si le delta est trop important, alors il est possible que l'émetteur soit usurpé #INITIALISATION nb_individus = 1; temp = 0; #file_name = "C:/Users/Utilisateur/PFE/python/datasets/rssi_norm.csv"; file_name = "C:/Users/Utilisateur/PFE/python/datasets/rssi_attack.csv"; fp = open(file_name, "w"); writer = csv.writer(fp); #BOUCLE D'ENREGISTREMENT while(nb_individus <= POPULATION+2): #Vérification du contenu x=ser.readline(); print(x); #Ne pas enregistrer la premiere valeurs if(record_condition(x)==True and nb_individus == 1): nb_individus = nb_individus + 1; if(record_condition(x)==True and nb_individus >1): #On ne lit que la ligne de puissance x=ser.readline(); #Suppression des caractères parasites #Conversion en décimal y=(x[1]-48)*10+x[2]-48; print(y); rssi_1 = y; #Calculs et écriture temp = rssi_1; #writer.writerow(('0', rssi_1)); writer.writerow(('1', rssi_1)); nb_individus = nb_individus + 1; #FERMETURE DU FICHIER fp.close(); ##############################################################################