a400222a
rcavalie
deut application
|
1
2
3
4
5
6
7
8
9
10
11
12
|
"""
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
Main - prédictions, affichage, vérification du trafic
"""
###############################################################################
#LIBRAIRIES UTILES
###############################################################################
import tkinter as tkr;
import time;
|
f0cdc988
rcavalie
travail sur la ré...
|
13
|
import serial;
|
9a50b3df
rcavalie
premiere version ok
|
14
15
16
17
18
|
import pandas as pd
# Réseau de neurones
from keras.models import Sequential
from keras.layers import Dense
from keras.models import model_from_json
|
a400222a
rcavalie
deut application
|
19
20
|
###############################################################################
|
f0cdc988
rcavalie
travail sur la ré...
|
21
22
23
|
###############################################################################
#VARIABLES GLOBALES
###############################################################################
|
9a50b3df
rcavalie
premiere version ok
|
24
25
|
ping_mesured=0;
rssi_mesured=0;
|
f0cdc988
rcavalie
travail sur la ré...
|
26
|
result=0;
|
9a50b3df
rcavalie
premiere version ok
|
27
28
29
30
31
32
|
puissance_read = 0;
temp_read = 0;
trame_read = [];
state_ok = 'Stable';
state_attack = 'Perturbé';
pred = 1;
|
f0cdc988
rcavalie
travail sur la ré...
|
33
|
###############################################################################
|
bdfec245
rcavalie
intégration du ré...
|
34
|
|
f0cdc988
rcavalie
travail sur la ré...
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
##############################################################################
#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;
##############################################################################
|
bdfec245
rcavalie
intégration du ré...
|
56
|
|
a400222a
rcavalie
deut application
|
57
58
59
|
###############################################################################
#FONCTIONS UTILES
###############################################################################
|
9a50b3df
rcavalie
premiere version ok
|
60
|
def Draw_info():
|
a400222a
rcavalie
deut application
|
61
62
63
64
65
|
#FRAME INFORMATIONS
infos=tkr.Frame(root,width=1000,height=5000,relief='groove',background='white',bd=3);
infos.place(x=10,y=10);
#DATE - HEURE
global text;
|
9a50b3df
rcavalie
premiere version ok
|
66
|
text=tkr.Label(infos,text='Contrôle du trafic LoRa\n\n');
|
a400222a
rcavalie
deut application
|
67
68
69
|
text.config(font=('arial', 20, 'bold'));
text.config(bg='white', fg='black');
text.pack();
|
9a50b3df
rcavalie
premiere version ok
|
70
71
72
73
74
|
global temperature;
temperature=tkr.Label(infos,text='\n\nTempérature (°C) : '+ str(temp_read));
temperature.config(font=('arial', 20, 'bold'));
temperature.config(bg='white', fg='black');
temperature.pack();
|
a400222a
rcavalie
deut application
|
75
|
global ping;
|
9a50b3df
rcavalie
premiere version ok
|
76
|
ping=tkr.Label(infos,text='\n\nPING(ms) : '+ str(ping_mesured));
|
a400222a
rcavalie
deut application
|
77
78
79
80
|
ping.config(font=('arial', 20, 'bold'));
ping.config(bg='white', fg='black');
ping.pack();
global rssi;
|
9a50b3df
rcavalie
premiere version ok
|
81
|
rssi=tkr.Label(infos,text='\n\nRSSI(dBm) : '+ str(puissance_read));
|
a400222a
rcavalie
deut application
|
82
83
84
85
|
rssi.config(font=('arial', 20, 'bold'));
rssi.config(bg='white', fg='black');
rssi.pack();
global trame;
|
3d16d72c
rcavalie
reception des don...
|
86
|
trame=tkr.Label(infos,text='\n\nTrame : '+ "".join(map(chr, trame_read)));
|
a400222a
rcavalie
deut application
|
87
88
|
trame.config(font=('arial', 20, 'bold'));
trame.config(bg='white', fg='black');
|
9a50b3df
rcavalie
premiere version ok
|
89
90
91
92
93
94
|
trame.pack();
global etat;
etat=tkr.Label(infos,text='\n\nEtat du trafic : '+ state_ok);
etat.config(font=('arial', 20, 'bold'));
etat.config(bg='white', fg='black');
etat.pack();
|
a400222a
rcavalie
deut application
|
95
|
|
9a50b3df
rcavalie
premiere version ok
|
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
###############################################################################
#FONCTION DE PREDICTION APPELEE DANS LE MAIN
###############################################################################
def predictions(data_eval):
###########################################################################
#ARCHITECTURE DU RESEAU DE NEURONES par le biais de la librairie KERAS
#ANN
###########################################################################
#Création du classifieur
classifier = Sequential();
#Couche d'entrée donc avec 2 entrées, PING et DELTA_RSSI
classifier.add(Dense(input_dim = 2, output_dim = 3, init = 'uniform', activation = 'sigmoid'));
#Couche cachée
classifier.add(Dense(output_dim = 3, init = 'uniform', activation = 'sigmoid'));
#Sortie du réseau de neurones
classifier.add(Dense(output_dim = 1, init = 'uniform', activation = 'sigmoid'));
###########################################################################
#LOAD DU TRAINING SET
###########################################################################
json_file=open('C:/Users/Utilisateur/PFE/python/Training/training.json','r');
loaded_model_json=json_file.read();
json_file.close();
loaded_model=model_from_json(loaded_model_json);
loaded_model.load_weights('C:/Users/Utilisateur/PFE/python/Training/training.h5');
###########################################################################
#REALISER DES PREDICTIONS
###########################################################################
#Normalisation des données
#sc = StandardScaler();
predictions = classifier.predict(data_eval);
return predictions;
###############################################################################
|
a400222a
rcavalie
deut application
|
128
129
|
def Refresher():
|
9a50b3df
rcavalie
premiere version ok
|
130
131
|
#VARIABLES GLOBALES
global cpt_trame;
|
a400222a
rcavalie
deut application
|
132
|
global text;
|
9a50b3df
rcavalie
premiere version ok
|
133
134
135
136
137
138
139
|
global temp;
global temperature;
global ping;
global rssi;
global trame;
global etat;
#RECUPERATION DES DONNEES
|
a400222a
rcavalie
deut application
|
140
|
text.configure(text=time.asctime());
|
9a50b3df
rcavalie
premiere version ok
|
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
|
x = ser.readline();
if(0x46 in x and cpt_trame == 0):
cpt_trame = cpt_trame + 1;
temp = time.time();
if(0x46 in x and cpt_trame >= 1):
t2 = time.time();
ping_mesured = (t2-temp)*1000;
temp = t2;
cpt_trame = cpt_trame + 1;
#Lecture de la trame
trame_read = x;
#Récupération de la température
temp_read = (trame_read[11]-48)*10 + trame_read[12]-48;
#Récupération de la puissance
x = ser.readline();
puissance_read = (x[1]-48)*10 + x[2]-48;
#REFRESH DES DONNEES
temperature.configure(text='\n\nTempérature (°C) : '+ str(temp_read));
ping.configure(text='\n\nPING(ms) : '+ str(ping_mesured));
rssi.configure(text='\n\nRSSI(dBm) : '+ str(puissance_read));
trame.configure(text='\n\nTrame : '+ "".join(map(chr, trame_read)));
#PREDICTION
data_to_pred = pd.read_csv('C:/Users/Utilisateur/PFE/python/datasets/data_to_pred.csv');
pred = predictions(data_to_pred);
if(pred==0):
etat.configure(text='\n\nEtat du trafic : '+ state_ok);
elif(pred==1):
etat.configure(text='\n\nEtat du trafic : '+ state_attack);
|
a400222a
rcavalie
deut application
|
169
170
|
root.after(1000, Refresher);#Refresh toutes les secondes
|
bdfec245
rcavalie
intégration du ré...
|
171
172
173
|
###############################################################################
#AFFICHAGE
###############################################################################
|
a400222a
rcavalie
deut application
|
174
|
root=tkr.Tk();
|
9a50b3df
rcavalie
premiere version ok
|
175
|
Draw_info();
|
a400222a
rcavalie
deut application
|
176
177
178
|
Refresher();
root.mainloop();
###############################################################################
|