Commit c6f368e9f2922fd1a09233cb518323a8d5064c3e
1 parent
ad076126
kppv runs
Showing
1 changed file
with
60 additions
and
11 deletions
Show diff stats
python/main_kppv.py
@@ -14,6 +14,17 @@ import numpy as np; | @@ -14,6 +14,17 @@ import numpy as np; | ||
14 | import pandas as pd; | 14 | import pandas as pd; |
15 | ############################################################################### | 15 | ############################################################################### |
16 | 16 | ||
17 | +############################################################################### | ||
18 | +#VARIABLES MESUREES | ||
19 | +############################################################################### | ||
20 | +ping_mesured=0; | ||
21 | +rssi_mesured=0; | ||
22 | +result=0; | ||
23 | +puissance_read = 0; | ||
24 | +temp_read = 0; | ||
25 | +trame_read = []; | ||
26 | +############################################################################### | ||
27 | + | ||
17 | ############################################################################## | 28 | ############################################################################## |
18 | #DEFINITION DE LA LECTURE DE PORT | 29 | #DEFINITION DE LA LECTURE DE PORT |
19 | ############################################################################## | 30 | ############################################################################## |
@@ -58,27 +69,51 @@ dataset_rssi = np.concatenate((dataset_rssi_attack, dataset_rssi_norm), axis=0); | @@ -58,27 +69,51 @@ dataset_rssi = np.concatenate((dataset_rssi_attack, dataset_rssi_norm), axis=0); | ||
58 | #KPPV PING | 69 | #KPPV PING |
59 | ############################################################################### | 70 | ############################################################################### |
60 | def prediction_ping(ping): | 71 | def prediction_ping(ping): |
61 | - dataset_ping_temp = []; | ||
62 | cpt = 0; | 72 | cpt = 0; |
63 | k = 5; | 73 | k = 5; |
74 | + dataset_ping_temp = np.zeros((X_ping,1)); | ||
64 | #Remplissage des distances euclidiennes | 75 | #Remplissage des distances euclidiennes |
65 | - for i in range(0, X_ping-1): | ||
66 | - dataset_ping_temp[i][0] = ((dataset_ping[i][1]-ping)**2)**0.5; | 76 | + for i in range(0, X_ping): |
77 | + dataset_ping_temp[i,0] = ((dataset_ping[i,1]-ping)**2)**0.5; | ||
67 | #Concatenation avec distances euclidiennes | 78 | #Concatenation avec distances euclidiennes |
68 | dataset_ping_temp = np.c_[dataset_ping, dataset_ping_temp]; | 79 | dataset_ping_temp = np.c_[dataset_ping, dataset_ping_temp]; |
69 | #Tri | 80 | #Tri |
70 | - np.sort(dataset_ping_temp, axis=2); | 81 | + dataset_ping_temp = dataset_ping_temp[dataset_ping_temp[:,2].argsort()] |
71 | #Checking des k premiers voisins | 82 | #Checking des k premiers voisins |
83 | + print(dataset_ping_temp); | ||
72 | for j in range(0, k-1): | 84 | for j in range(0, k-1): |
73 | - if(dataset_ping_temp[i][0]==1): | ||
74 | - cpt = cpt+1; | 85 | + if(dataset_ping_temp[j,0]==1): |
86 | + cpt = cpt+1; | ||
75 | if(cpt >= (k/2)+1): | 87 | if(cpt >= (k/2)+1): |
76 | return 1; #Attaque | 88 | return 1; #Attaque |
77 | else: | 89 | else: |
78 | return 0; #RAS | 90 | return 0; #RAS |
79 | - | ||
80 | - | ||
81 | -t = prediction_ping(1000); | 91 | +############################################################################### |
92 | + | ||
93 | +############################################################################### | ||
94 | +#KPPV RSSI | ||
95 | +############################################################################### | ||
96 | +def prediction_rssi(rssi): | ||
97 | + cpt = 0; | ||
98 | + k = 5; | ||
99 | + dataset_rssi_temp = np.zeros((X_rssi,1)); | ||
100 | + #Remplissage des distances euclidiennes | ||
101 | + for i in range(0, X_rssi): | ||
102 | + dataset_rssi_temp[i,0] = ((dataset_rssi[i,1]-rssi)**2)**0.5; | ||
103 | + #Concatenation avec distances euclidiennes | ||
104 | + dataset_rssi_temp = np.c_[dataset_rssi, dataset_rssi_temp]; | ||
105 | + #Tri | ||
106 | + dataset_rssi_temp = dataset_rssi_temp[dataset_rssi_temp[:,2].argsort()] | ||
107 | + #Checking des k premiers voisins | ||
108 | + for j in range(0, k-1): | ||
109 | + if(dataset_rssi_temp[j,0]==1): | ||
110 | + cpt = cpt+1; | ||
111 | + if(cpt >= (k/2)+1): | ||
112 | + return 1; #Attaque | ||
113 | + else: | ||
114 | + return 0; #RAS | ||
115 | +############################################################################### | ||
116 | + | ||
82 | ############################################################################### | 117 | ############################################################################### |
83 | #AFFICHAGE | 118 | #AFFICHAGE |
84 | ############################################################################### | 119 | ############################################################################### |
@@ -89,7 +124,10 @@ def Recorder(): | @@ -89,7 +124,10 @@ def Recorder(): | ||
89 | global puissance_read; | 124 | global puissance_read; |
90 | global trame_read; | 125 | global trame_read; |
91 | global cpt_trames; | 126 | global cpt_trames; |
92 | - global cpt_trames_temp; | 127 | + global cpt_trames_temp; |
128 | + cpt_trames = 0; | ||
129 | + cpt_trames_temp = 0; | ||
130 | + | ||
93 | while(1): | 131 | while(1): |
94 | #RECUPERATION DES DONNEES | 132 | #RECUPERATION DES DONNEES |
95 | x = ser.readline(); | 133 | x = ser.readline(); |
@@ -114,7 +152,10 @@ def Recorder(): | @@ -114,7 +152,10 @@ def Recorder(): | ||
114 | #T2 | 152 | #T2 |
115 | temp = t2; | 153 | temp = t2; |
116 | 154 | ||
117 | - if(cpt_trames_temp+1 == cpt_trames): | 155 | + if(cpt_trames_temp + 1 == cpt_trames): |
156 | + #BOOLEEN | ||
157 | + state_ping = prediction_ping(ping_mesured); | ||
158 | + state_rssi = prediction_rssi(puissance_read); | ||
118 | #AFFICHAGE | 159 | #AFFICHAGE |
119 | print("\n###############################\n"); | 160 | print("\n###############################\n"); |
120 | print("TRAME : "+ "".join(map(chr, trame_read))+"\n"); | 161 | print("TRAME : "+ "".join(map(chr, trame_read))+"\n"); |
@@ -122,6 +163,14 @@ def Recorder(): | @@ -122,6 +163,14 @@ def Recorder(): | ||
122 | print("TEMPERATURE : "+str(temp_read)+" °C\n"); | 163 | print("TEMPERATURE : "+str(temp_read)+" °C\n"); |
123 | print("PUISSANCE : "+str(puissance_read)+" dBm\n"); | 164 | print("PUISSANCE : "+str(puissance_read)+" dBm\n"); |
124 | print("PING : "+str(ping_mesured)+" ms\n"); | 165 | print("PING : "+str(ping_mesured)+" ms\n"); |
166 | + if(state_ping == 0): | ||
167 | + print("PING NORMAL\n"); | ||
168 | + elif(state_ping == 1): | ||
169 | + print("PING ATTAQUE\n"); | ||
170 | + if(state_rssi == 0): | ||
171 | + print("RSSI NORMAL\n"); | ||
172 | + elif(state_rssi == 1): | ||
173 | + print("RSSI ATTAQUE\n"); | ||
125 | print("###############################\n"); | 174 | print("###############################\n"); |
126 | 175 | ||
127 | cpt_trames_temp = cpt_trames; | 176 | cpt_trames_temp = cpt_trames; |