Kowo commited on
Commit
ef5da6b
·
verified ·
1 Parent(s): 1e61fc6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -50
app.py CHANGED
@@ -4,21 +4,10 @@ import matplotlib.pyplot as plt
4
  import time
5
  import numpy as np
6
  import seaborn as sns
7
- from streamlit_extras.colored_header import colored_header
8
- from streamlit_extras.card import card
9
- from streamlit_extras.badges import badge
10
- from streamlit_extras.metric_cards import style_metric_cards
11
- from streamlit_extras.dataframe_explorer import dataframe_explorer ,generate_fake_dataframe
12
- from streamlit_extras.mention import mention
13
- from streamlit_extras.chart_container import chart_container
14
- from streamlit_extras.grid import grid
15
- from streamlit_extras.row import row
16
  import tensorflow as tf
17
- # import pygame
18
- from io import StringIO
19
  import os
20
 
21
-
22
  # Constants
23
  APP_TITLE = "SAVE_ME"
24
  APP_LOGO = "matrix-hacker-background.jpg"
@@ -26,52 +15,32 @@ FEEDBACK_FILE = 'predictions_feedback.csv'
26
  DESCRIPTION = """
27
  <h2 style='color: #7D7D7D;'>Système de Détection d'Intrusion Basé sur l'Apprentissage Profond</h2>
28
  <p>Dans un monde numérique en constante évolution, les menaces en ligne deviennent de plus en plus sophistiquées. Les systèmes de détection d'intrusion traditionnels peuvent ne pas suffire pour contrer ces attaques avancées. C'est pourquoi nous avons développé un système de détection d'intrusion (IDS) <strong>révolutionnaire</strong> basé sur l'apprentissage profond, offrant une sécurité renforcée et une détection précise des anomalies.</p>
29
- <p>L'apprentissage profond est une branche de l'intelligence artificielle qui utilise des réseaux neuronaux artificiels pour analyser des données complexes. Contrairement aux méthodes de détection classiques, l'apprentissage profond permet à notre système d'identifier des modèles et des anomalies dans vos données de réseau avec une précision inégalée. Grâce à des algorithmes sophistiqués et à une formation sur des volumes massifs de données, notre IDS peut détecter des comportements suspects et des attaques potentiellement dangereuses que d'autres systèmes pourraient manquer.</p>
30
  """
31
  parameters = {
32
  "Action": {
33
- "description": """
34
- **Description:** C'est la décision finale de votre modèle, indiquant s'il considère le trafic comme une intrusion ou non.
35
- **Valeurs possibles:** 'Intrusion' ou 'Non Intrusion'.
36
- **Rôle:** Ce paramètre est crucial car il représente la sortie du modèle après toutes les analyses.
37
- """,
38
  "image": "hackers-film-ddos-attack-threat-video.jpg"
39
  },
40
  "Bytes Sent": {
41
- "description": """
42
- **Description:** Nombre total d'octets envoyés par l'entité au cours de la connexion.
43
- **Rôle:** Permet d'évaluer la quantité de données envoyées et peut être un indicateur du comportement du réseau.
44
- """,
45
  "image": "blue-optic-fiber-with-ethernet-cables.jpg"
46
  },
47
  "Bytes Received": {
48
- "description": """
49
- **Description:** Nombre total d'octets reçus par l'entité au cours de la connexion.
50
- **Rôle:** Comme pour les octets envoyés, ce paramètre aide à comprendre la quantité de données reçues et peut signaler des anomalies.
51
- """,
52
  "image": "computer-hacker-hooded-shirt-typing-software-algorithms-stealing-data-from-computer-network-laptop.jpg"
53
  }
54
  }
55
  params = {
56
  "pkts_sent": {
57
- "description": """
58
- **Description:** Nombre total de paquets envoyés durant la connexion.
59
- **Rôle:** Le volume de paquets envoyés peut aider à identifier les comportements suspects ou anormaux.
60
- """,
61
  "image": "password-with-hand-holding-tweezers-binary-code.jpg"
62
  },
63
  "pkts_received": {
64
- "description": """
65
- **Description:** Nombre total de paquets reçus durant la connexion.
66
- **Rôle:** Comme pour les paquets envoyés, ce paramètre est important pour détecter les anomalies en fonction du volume des données reçues.
67
- """,
68
  "image": "hackers-film-ddos-attack-threat-video.jpg"
69
  },
70
  "Elapsed Time (sec)": {
71
- "description": """
72
- **Description:** Temps écoulé en secondes durant la connexion ou l'événement observé.
73
- **Rôle:** Mesure la durée de l'activité, utile pour détecter les anomalies temporelles.
74
- """,
75
  "image": "html-css-collage-concept-with-hacker.jpg"
76
  }
77
  }
@@ -170,7 +139,7 @@ if chooseMenu == MenuNavigation[0]:
170
  """, unsafe_allow_html=True)
171
 
172
  elif chooseMenu == MenuNavigation[1]:
173
- col1, col2, col3, col4 ,col5 = st.columns(5)
174
  sumByte = np.sum(DATA["Bytes Sent"]) + np.sum(DATA["Bytes Received"])
175
  col1.metric(label="Nombre De Données", value=DATA.shape[0], delta=5000)
176
  col2.metric(label="Nombre Moyens de Paquets ", value=int((DATA.pkts_sent.sum() + DATA.pkts_received.sum()) / DATA.shape[0]), delta=100)
@@ -220,21 +189,25 @@ elif chooseMenu == MenuNavigation[3]:
220
 
221
  if not existing_feedback.empty:
222
  st.write("Cette situation a déjà été rencontrée.")
223
- st.write(f"Action Prédit: {existing_feedback['Model Prediction'].values[0]}")
 
 
224
  else:
225
  st.write("Prédiction du Modèle: " + data_Input["Model Prediction"].values[0])
226
 
227
  user_correction = st.selectbox("Cette prédiction est-elle correcte?", ["Oui", "Non"])
228
-
229
  if user_correction == "Non":
230
- corrected_action = st.selectbox("Correction de la Prédiction:", ["Intrusion", "No Intrusion"])
231
- else:
232
- corrected_action = data_Input["Model Prediction"].values[0]
233
-
234
- # Store feedback
235
- feedback_entry = data_Input.copy()
236
- feedback_entry["User Correction"] = corrected_action
237
- feedback_entry["Model Prediction"] = data_Input["Model Prediction"].values[0]
238
- save_feedback(feedback_entry)
 
239
 
240
  st.dataframe(data_Input, use_container_width=True)
 
 
4
  import time
5
  import numpy as np
6
  import seaborn as sns
 
 
 
 
 
 
 
 
 
7
  import tensorflow as tf
8
+ from streamlit_extras.dataframe_explorer import dataframe_explorer
 
9
  import os
10
 
 
11
  # Constants
12
  APP_TITLE = "SAVE_ME"
13
  APP_LOGO = "matrix-hacker-background.jpg"
 
15
  DESCRIPTION = """
16
  <h2 style='color: #7D7D7D;'>Système de Détection d'Intrusion Basé sur l'Apprentissage Profond</h2>
17
  <p>Dans un monde numérique en constante évolution, les menaces en ligne deviennent de plus en plus sophistiquées. Les systèmes de détection d'intrusion traditionnels peuvent ne pas suffire pour contrer ces attaques avancées. C'est pourquoi nous avons développé un système de détection d'intrusion (IDS) <strong>révolutionnaire</strong> basé sur l'apprentissage profond, offrant une sécurité renforcée et une détection précise des anomalies.</p>
 
18
  """
19
  parameters = {
20
  "Action": {
21
+ "description": "C'est la décision finale de votre modèle, indiquant s'il considère le trafic comme une intrusion ou non. Valeurs possibles: 'Intrusion' ou 'Non Intrusion'.",
 
 
 
 
22
  "image": "hackers-film-ddos-attack-threat-video.jpg"
23
  },
24
  "Bytes Sent": {
25
+ "description": "Nombre total d'octets envoyés par l'entité au cours de la connexion.",
 
 
 
26
  "image": "blue-optic-fiber-with-ethernet-cables.jpg"
27
  },
28
  "Bytes Received": {
29
+ "description": "Nombre total d'octets reçus par l'entité au cours de la connexion.",
 
 
 
30
  "image": "computer-hacker-hooded-shirt-typing-software-algorithms-stealing-data-from-computer-network-laptop.jpg"
31
  }
32
  }
33
  params = {
34
  "pkts_sent": {
35
+ "description": "Nombre total de paquets envoyés durant la connexion.",
 
 
 
36
  "image": "password-with-hand-holding-tweezers-binary-code.jpg"
37
  },
38
  "pkts_received": {
39
+ "description": "Nombre total de paquets reçus durant la connexion.",
 
 
 
40
  "image": "hackers-film-ddos-attack-threat-video.jpg"
41
  },
42
  "Elapsed Time (sec)": {
43
+ "description": "Temps écoulé en secondes durant la connexion ou l'événement observé.",
 
 
 
44
  "image": "html-css-collage-concept-with-hacker.jpg"
45
  }
46
  }
 
139
  """, unsafe_allow_html=True)
140
 
141
  elif chooseMenu == MenuNavigation[1]:
142
+ col1, col2, col3, col4, col5 = st.columns(5)
143
  sumByte = np.sum(DATA["Bytes Sent"]) + np.sum(DATA["Bytes Received"])
144
  col1.metric(label="Nombre De Données", value=DATA.shape[0], delta=5000)
145
  col2.metric(label="Nombre Moyens de Paquets ", value=int((DATA.pkts_sent.sum() + DATA.pkts_received.sum()) / DATA.shape[0]), delta=100)
 
189
 
190
  if not existing_feedback.empty:
191
  st.write("Cette situation a déjà été rencontrée.")
192
+ st.write(f"Action Prédite: {existing_feedback['Model Prediction'].values[0]}")
193
+ st.write(f"Action corrigée par l'utilisateur : {existing_feedback['User Correction'].values[0]}")
194
+
195
  else:
196
  st.write("Prédiction du Modèle: " + data_Input["Model Prediction"].values[0])
197
 
198
  user_correction = st.selectbox("Cette prédiction est-elle correcte?", ["Oui", "Non"])
199
+ corrected_action=""
200
  if user_correction == "Non":
201
+ # Set corrected_action to the inverse of the prediction
202
+ if data_Input["Model Prediction"].values[0] == "Intrusion":
203
+ corrected_action = "No Intrusion"
204
+ else:
205
+ corrected_action = "Intrusion"
206
+ feedback_entry = data_Input.copy()
207
+ feedback_entry["User Correction"] = corrected_action
208
+ feedback_entry["Model Prediction"] = data_Input["Model Prediction"].values[0] # Keep original prediction
209
+ save_feedback(feedback_entry)
210
+
211
 
212
  st.dataframe(data_Input, use_container_width=True)
213
+