diff --git a/python/main_kppv.py b/python/main_kppv.py index c9d62e6..aa5450b 100644 --- a/python/main_kppv.py +++ b/python/main_kppv.py @@ -14,6 +14,17 @@ import numpy as np; import pandas as pd; ############################################################################### +############################################################################### +#VARIABLES MESUREES +############################################################################### +ping_mesured=0; +rssi_mesured=0; +result=0; +puissance_read = 0; +temp_read = 0; +trame_read = []; +############################################################################### + ############################################################################## #DEFINITION DE LA LECTURE DE PORT ############################################################################## @@ -58,27 +69,51 @@ dataset_rssi = np.concatenate((dataset_rssi_attack, dataset_rssi_norm), axis=0); #KPPV PING ############################################################################### def prediction_ping(ping): - dataset_ping_temp = []; cpt = 0; k = 5; + dataset_ping_temp = np.zeros((X_ping,1)); #Remplissage des distances euclidiennes - for i in range(0, X_ping-1): - dataset_ping_temp[i][0] = ((dataset_ping[i][1]-ping)**2)**0.5; + for i in range(0, X_ping): + dataset_ping_temp[i,0] = ((dataset_ping[i,1]-ping)**2)**0.5; #Concatenation avec distances euclidiennes dataset_ping_temp = np.c_[dataset_ping, dataset_ping_temp]; #Tri - np.sort(dataset_ping_temp, axis=2); + dataset_ping_temp = dataset_ping_temp[dataset_ping_temp[:,2].argsort()] #Checking des k premiers voisins + print(dataset_ping_temp); for j in range(0, k-1): - if(dataset_ping_temp[i][0]==1): - cpt = cpt+1; + if(dataset_ping_temp[j,0]==1): + cpt = cpt+1; if(cpt >= (k/2)+1): return 1; #Attaque else: return 0; #RAS - - -t = prediction_ping(1000); +############################################################################### + +############################################################################### +#KPPV RSSI +############################################################################### +def prediction_rssi(rssi): + cpt = 0; + k = 5; + dataset_rssi_temp = np.zeros((X_rssi,1)); + #Remplissage des distances euclidiennes + for i in range(0, X_rssi): + dataset_rssi_temp[i,0] = ((dataset_rssi[i,1]-rssi)**2)**0.5; + #Concatenation avec distances euclidiennes + dataset_rssi_temp = np.c_[dataset_rssi, dataset_rssi_temp]; + #Tri + dataset_rssi_temp = dataset_rssi_temp[dataset_rssi_temp[:,2].argsort()] + #Checking des k premiers voisins + for j in range(0, k-1): + if(dataset_rssi_temp[j,0]==1): + cpt = cpt+1; + if(cpt >= (k/2)+1): + return 1; #Attaque + else: + return 0; #RAS +############################################################################### + ############################################################################### #AFFICHAGE ############################################################################### @@ -89,7 +124,10 @@ def Recorder(): global puissance_read; global trame_read; global cpt_trames; - global cpt_trames_temp; + global cpt_trames_temp; + cpt_trames = 0; + cpt_trames_temp = 0; + while(1): #RECUPERATION DES DONNEES x = ser.readline(); @@ -114,7 +152,10 @@ def Recorder(): #T2 temp = t2; - if(cpt_trames_temp+1 == cpt_trames): + if(cpt_trames_temp + 1 == cpt_trames): + #BOOLEEN + state_ping = prediction_ping(ping_mesured); + state_rssi = prediction_rssi(puissance_read); #AFFICHAGE print("\n###############################\n"); print("TRAME : "+ "".join(map(chr, trame_read))+"\n"); @@ -122,6 +163,14 @@ def Recorder(): print("TEMPERATURE : "+str(temp_read)+" °C\n"); print("PUISSANCE : "+str(puissance_read)+" dBm\n"); print("PING : "+str(ping_mesured)+" ms\n"); + if(state_ping == 0): + print("PING NORMAL\n"); + elif(state_ping == 1): + print("PING ATTAQUE\n"); + if(state_rssi == 0): + print("RSSI NORMAL\n"); + elif(state_rssi == 1): + print("RSSI ATTAQUE\n"); print("###############################\n"); cpt_trames_temp = cpt_trames; -- libgit2 0.21.2