<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki-se.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ybenmbar</id>
	<title>wiki-se.plil.fr - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-se.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ybenmbar"/>
	<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Ybenmbar"/>
	<updated>2026-04-23T09:31:03Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8342</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8342"/>
		<updated>2025-01-30T17:13:53Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Réception et envoi de la Raspberry Pi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
- IP : 172.26.145.104&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera.&lt;br /&gt;
&lt;br /&gt;
=== Réception et envoi de la Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
La Raspberry Pi lit des données via l'UART et les publie sur le broker MQTT, de la machine virtuelle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
import paho.mqtt.client as mqtt&lt;br /&gt;
import serial&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Configuration UART&lt;br /&gt;
SERIAL_PORT = &amp;quot;/dev/ttyACM0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configuration MQTT&lt;br /&gt;
BROKER = &amp;quot;172.26.145.104&amp;quot;&lt;br /&gt;
PORT = 1883  &lt;br /&gt;
TOPIC = &amp;quot;IA/data&amp;quot;&lt;br /&gt;
CLIENT_ID = &amp;quot;client&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Connexion MQTT&lt;br /&gt;
def on_connect(client, userdata, flags, rc):&lt;br /&gt;
    if rc == 0:&lt;br /&gt;
        print(&amp;quot;Connexion au broker MQTT réussie&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(f&amp;quot;Échec de connexion, code retour : {rc}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
client = mqtt.Client(CLIENT_ID)&lt;br /&gt;
client.on_connect = on_connect&lt;br /&gt;
client.connect(BROKER, PORT, 60)&lt;br /&gt;
client.loop_start()&lt;br /&gt;
&lt;br /&gt;
# Configuration de la liaison série&lt;br /&gt;
try:&lt;br /&gt;
    ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)&lt;br /&gt;
    print(f&amp;quot;Ouverture du port série {SERIAL_PORT} à {BAUD_RATE} bauds&amp;quot;)&lt;br /&gt;
except serial.SerialException as e:&lt;br /&gt;
    print(f&amp;quot;Erreur d'ouverture du port série : {e}&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    while True:&lt;br /&gt;
        if ser.in_waiting:&lt;br /&gt;
            data = ser.readline().decode('utf-8').strip()&lt;br /&gt;
            if data:&lt;br /&gt;
                print(f&amp;quot;Donnée reçue : {data}&amp;quot;)&lt;br /&gt;
                client.publish(TOPIC, data)&lt;br /&gt;
        time.sleep(0.1)  # Pour éviter une surcharge CPU&lt;br /&gt;
except KeyboardInterrupt:&lt;br /&gt;
    print(&amp;quot;Arrêt du programme&amp;quot;)&lt;br /&gt;
    ser.close()&lt;br /&gt;
    client.disconnect()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Voici un aperçu de la matrice :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-54-16.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre benchmark indique 83% de fiabilité. Ce n'est pas l'idéal, mais c'est utilisable.&lt;br /&gt;
&lt;br /&gt;
L’étape de validation dans NanoEdge AI Studio permet d’évaluer les performances du modèle généré.Pour ce faire, NanoEdge AI Studio compare les résultats du modèle avec les classes attendues et génère un rapport de performance :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après avoir validé cette étape la librairie .a est alors prête à être exportée et intégrée au nucleo.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8341</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8341"/>
		<updated>2025-01-30T17:10:58Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Réseau */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
- IP : 172.26.145.104&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera.&lt;br /&gt;
&lt;br /&gt;
=== Réception et envoi de la Raspberry Pi ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
import paho.mqtt.client as mqtt&lt;br /&gt;
import serial&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Configuration UART&lt;br /&gt;
SERIAL_PORT = &amp;quot;/dev/ttyACM0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Configuration MQTT&lt;br /&gt;
BROKER = &amp;quot;172.26.145.104&amp;quot;&lt;br /&gt;
PORT = 1883  &lt;br /&gt;
TOPIC = &amp;quot;IA/data&amp;quot;&lt;br /&gt;
CLIENT_ID = &amp;quot;client&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Connexion MQTT&lt;br /&gt;
def on_connect(client, userdata, flags, rc):&lt;br /&gt;
    if rc == 0:&lt;br /&gt;
        print(&amp;quot;Connexion au broker MQTT réussie&amp;quot;)&lt;br /&gt;
    else:&lt;br /&gt;
        print(f&amp;quot;Échec de connexion, code retour : {rc}&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
client = mqtt.Client(CLIENT_ID)&lt;br /&gt;
client.on_connect = on_connect&lt;br /&gt;
client.connect(BROKER, PORT, 60)&lt;br /&gt;
client.loop_start()&lt;br /&gt;
&lt;br /&gt;
# Configuration de la liaison série&lt;br /&gt;
try:&lt;br /&gt;
    ser = serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1)&lt;br /&gt;
    print(f&amp;quot;Ouverture du port série {SERIAL_PORT} à {BAUD_RATE} bauds&amp;quot;)&lt;br /&gt;
except serial.SerialException as e:&lt;br /&gt;
    print(f&amp;quot;Erreur d'ouverture du port série : {e}&amp;quot;)&lt;br /&gt;
    exit(1)&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    while True:&lt;br /&gt;
        if ser.in_waiting:&lt;br /&gt;
            data = ser.readline().decode('utf-8').strip()&lt;br /&gt;
            if data:&lt;br /&gt;
                print(f&amp;quot;Donnée reçue : {data}&amp;quot;)&lt;br /&gt;
                client.publish(TOPIC, data)&lt;br /&gt;
        time.sleep(0.1)  # Pour éviter une surcharge CPU&lt;br /&gt;
except KeyboardInterrupt:&lt;br /&gt;
    print(&amp;quot;Arrêt du programme&amp;quot;)&lt;br /&gt;
    ser.close()&lt;br /&gt;
    client.disconnect()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Voici un aperçu de la matrice :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-54-16.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre benchmark indique 83% de fiabilité. Ce n'est pas l'idéal, mais c'est utilisable.&lt;br /&gt;
&lt;br /&gt;
L’étape de validation dans NanoEdge AI Studio permet d’évaluer les performances du modèle généré.Pour ce faire, NanoEdge AI Studio compare les résultats du modèle avec les classes attendues et génère un rapport de performance :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après avoir validé cette étape la librairie .a est alors prête à être exportée et intégrée au nucleo.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8339</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8339"/>
		<updated>2025-01-30T17:05:42Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Voici un aperçu de la matrice :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-54-16.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre benchmark indique 83% de fiabilité. Ce n'est pas l'idéal, mais c'est utilisable.&lt;br /&gt;
&lt;br /&gt;
L’étape de validation dans NanoEdge AI Studio permet d’évaluer les performances du modèle généré.Pour ce faire, NanoEdge AI Studio compare les résultats du modèle avec les classes attendues et génère un rapport de performance :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après avoir validé cette étape la librairie .a est alors prête à être exportée et intégrée au nucleo.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8338</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8338"/>
		<updated>2025-01-30T17:04:33Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Voici un aperçu de la matrice :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-54-16.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]]&lt;br /&gt;
&lt;br /&gt;
L’étape de validation dans NanoEdge AI Studio permet d’évaluer les performances du modèle généré.Pour ce faire, NanoEdge AI Studio compare les résultats du modèle avec les classes attendues et génère un rapport de performance :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après avoir validé cette étape la librairie .a est alors prête à être exportée et intégrée au nucleo.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8336</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8336"/>
		<updated>2025-01-30T17:01:57Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Voici un aperçu de la matrice :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-54-16.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capture_d%E2%80%99%C3%A9cran_du_2025-01-30_17-54-16.png&amp;diff=8335</id>
		<title>Fichier:Capture d’écran du 2025-01-30 17-54-16.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capture_d%E2%80%99%C3%A9cran_du_2025-01-30_17-54-16.png&amp;diff=8335"/>
		<updated>2025-01-30T17:01:35Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aaa&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8333</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8333"/>
		<updated>2025-01-30T16:58:36Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons pu générer un benchmark, représentatif de l'apprentissage du système :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8332</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8332"/>
		<updated>2025-01-30T16:57:41Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]&lt;br /&gt;
&lt;br /&gt;
Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette|centré|571x571px]]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8330</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8330"/>
		<updated>2025-01-30T16:56:42Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]]&lt;br /&gt;
[[Fichier:Qspkpocpqco.png|vignette]]&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Qspkpocpqco.png&amp;diff=8329</id>
		<title>Fichier:Qspkpocpqco.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Qspkpocpqco.png&amp;diff=8329"/>
		<updated>2025-01-30T16:56:27Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;qxjkkqjk&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8327</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8327"/>
		<updated>2025-01-30T16:53:40Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8326</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8326"/>
		<updated>2025-01-30T16:53:29Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8325</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8325"/>
		<updated>2025-01-30T16:53:01Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8324</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8324"/>
		<updated>2025-01-30T16:52:49Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8323</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8323"/>
		<updated>2025-01-30T16:52:37Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Apprentissage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
[[Fichier:274314.jpg|gauche|vignette|Conditions de Mesure]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:274314.jpg&amp;diff=8322</id>
		<title>Fichier:274314.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:274314.jpg&amp;diff=8322"/>
		<updated>2025-01-30T16:52:09Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dsldsmdsml&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8321</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8321"/>
		<updated>2025-01-30T16:51:04Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurées|571x571px]]Pour ajouter des données d'entraînement, nous insérons des signaux sur NanoEdge AI. Ces données représentent des mesures réelles capturées par le capteur. &lt;br /&gt;
&lt;br /&gt;
Comme nous avons 3 classes, nous allons le faire 3 fois :[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px|ù]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8320</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8320"/>
		<updated>2025-01-30T16:46:18Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qbjjbsdbj.png|centré|571x571px]][[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8319</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8319"/>
		<updated>2025-01-30T16:45:43Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Apprentissage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|centré|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qbjjbsdbj.png|centré|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8318</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8318"/>
		<updated>2025-01-30T16:44:33Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|vignette]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pqspqopsckpoqc.png|vignette]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Pappapappapaa.png|vignette]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Qbjjbsdbj.png|vignette]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Qbjjbsdbj.png&amp;diff=8317</id>
		<title>Fichier:Qbjjbsdbj.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Qbjjbsdbj.png&amp;diff=8317"/>
		<updated>2025-01-30T16:44:28Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;lkdmsvsd&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pqspqopsckpoqc.png&amp;diff=8316</id>
		<title>Fichier:Pqspqopsckpoqc.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pqspqopsckpoqc.png&amp;diff=8316"/>
		<updated>2025-01-30T16:43:57Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;SKLDCsLsLLC&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pappapappapaa.png&amp;diff=8315</id>
		<title>Fichier:Pappapappapaa.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pappapappapaa.png&amp;diff=8315"/>
		<updated>2025-01-30T16:43:25Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;kdk,ldskds&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8314</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8314"/>
		<updated>2025-01-30T16:41:12Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée|571x571px]]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture d’écran du 2025-01-30 17-34-42.png|vignette]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capture_d%E2%80%99%C3%A9cran_du_2025-01-30_17-34-42.png&amp;diff=8313</id>
		<title>Fichier:Capture d’écran du 2025-01-30 17-34-42.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capture_d%E2%80%99%C3%A9cran_du_2025-01-30_17-34-42.png&amp;diff=8313"/>
		<updated>2025-01-30T16:41:01Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ppppp&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8312</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8312"/>
		<updated>2025-01-30T16:37:39Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée|571x571px]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8311</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8311"/>
		<updated>2025-01-30T16:37:08Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Apprentissage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Captaaaa.png|centré|vignette|Distances (matrice 8*8) mesurée]]&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Captaaaa.png&amp;diff=8310</id>
		<title>Fichier:Captaaaa.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Captaaaa.png&amp;diff=8310"/>
		<updated>2025-01-30T16:36:08Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;aaaa&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8309</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8309"/>
		<updated>2025-01-30T16:34:50Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Nous avons mis en place un modèle simple de classification avec 3 classes, correspondant à 3 formes :&lt;br /&gt;
&lt;br /&gt;
* Coeur&lt;br /&gt;
&lt;br /&gt;
* Ours&lt;br /&gt;
&lt;br /&gt;
* Soleil&lt;br /&gt;
&lt;br /&gt;
Après avoir installé l'API X-CUBE-TOF1, qui nous permettra d'utiliser efficacement le capteur, nous avons pu &amp;quot;mettre en place&amp;quot; les données à envoyer.&lt;br /&gt;
&lt;br /&gt;
Sous la forme d'une ligne, chaque coefficient de la matrice 8*8 est représenté :&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8308</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8308"/>
		<updated>2025-01-30T16:30:30Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
&lt;br /&gt;
* La Raspberry recevra ces données par UART;&lt;br /&gt;
&lt;br /&gt;
* Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8307</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8307"/>
		<updated>2025-01-30T16:30:05Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- La Nucleo fera les mesures par le biais du capteur ToF;&lt;br /&gt;
- La Raspberry recevra ces données par UART;&lt;br /&gt;
- Enfin, la machine virtuelle les recevra et les affichera. &lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8306</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8306"/>
		<updated>2025-01-30T16:27:25Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8305</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8305"/>
		<updated>2025-01-30T16:27:12Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|centré|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8304</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8304"/>
		<updated>2025-01-30T16:26:49Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|left|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8303</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8303"/>
		<updated>2025-01-30T16:26:30Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|left|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8302</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8302"/>
		<updated>2025-01-30T16:26:13Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette|left|571x571px]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8301</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8301"/>
		<updated>2025-01-30T16:25:16Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;[[Fichier:Pppp.png|vignette]]&amp;lt;/div&amp;gt;&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8300</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8300"/>
		<updated>2025-01-30T16:24:43Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Fichier:Pppp.jpg|vignette|left]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8299</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8299"/>
		<updated>2025-01-30T16:22:41Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&amp;lt;div style=&amp;quot;flex:1; padding-left:10px;&amp;quot;&amp;gt;&lt;br /&gt;
[[Fichier:Pppp.jpg|vignette|left|881x571px]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pppp.png&amp;diff=8298</id>
		<title>Fichier:Pppp.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Pppp.png&amp;diff=8298"/>
		<updated>2025-01-30T16:22:20Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ss,&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capturd%E2%80%99%C3%A9cradu2025-01-3017-10-51.png&amp;diff=8297</id>
		<title>Fichier:Capturd’écradu2025-01-3017-10-51.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:Capturd%E2%80%99%C3%A9cradu2025-01-3017-10-51.png&amp;diff=8297"/>
		<updated>2025-01-30T16:19:04Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;a&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8294</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8294"/>
		<updated>2025-01-30T16:03:15Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Machine Virtuelle ===&lt;br /&gt;
&lt;br /&gt;
Nous avons créé un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar-IA'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents'''.&lt;br /&gt;
&lt;br /&gt;
Ce serveur sera nous servira de broker MQTT, afin d'analyser et afficher les résultats dynamiquement.&lt;br /&gt;
&lt;br /&gt;
=== Architecture Réseau ===&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8292</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8292"/>
		<updated>2025-01-30T15:53:49Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Pour ce TP d'IA, nous avons décidé de concevoir un système qui reconnaîtra des diverses formes.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:2025013063924.jpg|centré|vignette|Formes utilisées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Architecture Réseau ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons prévu cette architecture :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Apprentissage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le ca&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin Notre première approche est de proposer un modèle simple de classification.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:2025013063924.jpg&amp;diff=8287</id>
		<title>Fichier:2025013063924.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=Fichier:2025013063924.jpg&amp;diff=8287"/>
		<updated>2025-01-30T15:48:58Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8251</id>
		<title>SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_ECEAI/eceai_2024/2025/benmbarek-elqastalani&amp;diff=8251"/>
		<updated>2025-01-30T12:25:38Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# SE5 ECEAI/eceai 2024/2025/benmbarek-elqastalani&lt;br /&gt;
&lt;br /&gt;
'''Le 03/09/2024 :'''&lt;br /&gt;
&lt;br /&gt;
- Recherche du sujet&lt;br /&gt;
&lt;br /&gt;
- Installation des logiciels&lt;br /&gt;
&lt;br /&gt;
'''Le 05/09/2024 :''' Nous avons décidé de concevoir un système qui déterminera dans un premier temps la pression dans une balle en chute libre, puis, si on avance bien, prédire la hauteur du deuxième rebond.&lt;br /&gt;
&lt;br /&gt;
Voici la démarche à laquelle nous avons pensé : &lt;br /&gt;
[[Fichier:Schema ia1.png|800px|center|Schéma]]&lt;br /&gt;
&lt;br /&gt;
Avec quelques entrainements, nous pourrons calculer la pression.&lt;br /&gt;
&lt;br /&gt;
Le matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi 4&lt;br /&gt;
&lt;br /&gt;
* Nucleo-F401RE&lt;br /&gt;
&lt;br /&gt;
* Capteur de distance Nucleo-53L5A1&lt;br /&gt;
&lt;br /&gt;
* Accéléromètre (pas pour le moment) (mettre reference)&lt;br /&gt;
&lt;br /&gt;
Notre Raspberry communiquera avec la Nucleo par liaison série UART. Elle servira aussi d'interface entre la Nucleo, qui sera entraînée à manipuler les données, et le réseau.&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons aussi configuré l'OS de la Raspberry ainsi que sa connexion à la borne Wi-Fi de la salle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// utiliser architecture perceptron, une entrée 15 sorties. ( winner takes all concept, ReLu activation func ? )&lt;br /&gt;
&lt;br /&gt;
Nous avons besoin // &lt;br /&gt;
Notre première approche est de proposer un modèle simple de classification.&lt;br /&gt;
&lt;br /&gt;
// La communication entre l'accéléromètre et la nucleo se fait en I2C.&lt;br /&gt;
&lt;br /&gt;
// Possible Challenges: &lt;br /&gt;
&lt;br /&gt;
// The trajectory of the falling object will almost always be non linear, which introduces new parameters to the equation.&lt;br /&gt;
&lt;br /&gt;
// Need to take in account the weight of the object, the size, the rebound behaviour (ricochet). (Probably need a soft surface in order not to damage the object).&lt;br /&gt;
&lt;br /&gt;
// The length of the connection could probably affect the communication ? Would it be possible to store the experience data then feed the model, or should it be real time ?&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7908</id>
		<title>SE5 IdO sécurité des objets 2024/2025 b4</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7908"/>
		<updated>2025-01-26T21:23:05Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Temptale USB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Wi-Fi ==&lt;br /&gt;
&lt;br /&gt;
=== Création du serveur virtuel ===&lt;br /&gt;
- Création d'un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents''' avec :&lt;br /&gt;
   * Adresse IPv4 : '''172.26.145.104'''&lt;br /&gt;
   * Passerelle : '''172.26.145.251'''&lt;br /&gt;
- Interface réseau dans le VLAN 404 :&lt;br /&gt;
   * Adresse IPv4 : '''172.16.4.1'''&lt;br /&gt;
   * Masque : '''/24''' (255.255.255.0)&lt;br /&gt;
   * VLAN : '''404'''&lt;br /&gt;
&lt;br /&gt;
=== Configuration du point d'accès WiFi Cisco ===&lt;br /&gt;
&lt;br /&gt;
- Définition du SSID '''VM_binome_4''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   dot11 ssid VM_binome_4&lt;br /&gt;
     vlan 404&lt;br /&gt;
     authentication open eap eap_binome_4&lt;br /&gt;
     authentication network-eap eap_binome_4&lt;br /&gt;
     authentication key-management wpa&lt;br /&gt;
     mbssid guest-mode&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du VLAN 404 sur l'interface radio et l'interface Ethernet :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface Dot11Radio0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface GigabitEthernet0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration de l'accès au serveur FreeRADIUS :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   aaa new-model&lt;br /&gt;
   aaa authentication login eap_binome_4 group radius_binome_4&lt;br /&gt;
   radius-server host 172.16.4.1 auth-port 1812 acct-port 1813 key glopglop&lt;br /&gt;
   aaa group server radius radius_binome_4&lt;br /&gt;
     server 172.16.4.1 auth-port 1812 acct-port 1813&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur FreeRADIUS ===&lt;br /&gt;
- Installation de FreeRADIUS sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt install freeradius freeradius-utils&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout de l'adresse IP du point d'accès Cisco dans le fichier de clients FreeRADIUS :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/clients.conf''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   client wifi_ap {&lt;br /&gt;
       ipaddr = 172.26.145.4&lt;br /&gt;
       secret = glopglop&lt;br /&gt;
       shortname = wifi_ap_binome_4&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration d'un utilisateur pour l'authentification WPA2-EAP :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/users''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   mouss Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Activation de PEAP-MSCHAPv2 :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/mods-enabled/eap''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   peap {&lt;br /&gt;
       default_eap_type = mschapv2&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DHCP ===&lt;br /&gt;
- On a installé un serveur DHCP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt install isc-dhcp-server&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du serveur DHCP :&lt;br /&gt;
   * Dans le fichier '''/etc/dhcp/dhcpd.conf''' :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   subnet 172.16.4.0 netmask 255.255.255.0 {&lt;br /&gt;
       range 172.16.4.100 172.16.4.200;&lt;br /&gt;
       option routers 172.16.4.104;&lt;br /&gt;
       option domain-name-servers 255.255.255.0;&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Dans le fichier '''/etc/default/isc-dhcp-server''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   INTERFACESv4=&amp;quot;eth1&amp;quot; &lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DNS minimal ===&lt;br /&gt;
* Dans '''/etc/bind/named.conf.options'''&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   forwarders { &lt;br /&gt;
   		172.26.188.12;&lt;br /&gt;
   };&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mascarade entre VLAN privé et routeur ===&lt;br /&gt;
- Activation du transfert IP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl -w net.ipv4.ip_forward=1&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout d'une règle de masquerade avec '''iptables''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passage de WPA-EAP à WPA-PSK ===&lt;br /&gt;
Afin d'utiliser notre balance connectée, nous devons mettre en place un point d'accès avec WPA-PSK et non WPA-EAP.&lt;br /&gt;
&lt;br /&gt;
* Dans le point d'accès Cisco :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
no autentication open eap eap_binome_4&lt;br /&gt;
no authentication network-eap eap_binome_4&lt;br /&gt;
wpa-psk ascii [mdp]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Temptale USB == &lt;br /&gt;
&lt;br /&gt;
=== Identification des différentes puces ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Img cpsnts.jpg|vignette|Temptale ouvert]]&lt;br /&gt;
&lt;br /&gt;
µC : Atmel AT91SAM7S256&lt;br /&gt;
&lt;br /&gt;
Puce mémoire : Winbond 25X40CLNIG&lt;br /&gt;
&lt;br /&gt;
SN74CBTLV3126 : commutateur de bus FET quadripolaire, probablement utilisé comme convertisseur de niveau&lt;br /&gt;
&lt;br /&gt;
=== Modification du fichier pdf ===&lt;br /&gt;
Nous avons d'abord pensé à passer par le système de fichiers et plus précisément le fichier pdf pour hacker le Temptale.&lt;br /&gt;
&lt;br /&gt;
=== Mémoire ===&lt;br /&gt;
&lt;br /&gt;
Afin d'extraire les données de la mémoire, nous avons soudé des fils sur chaque broche de la puce mémoire. Elle fonctionne en SPI, nous l'avons alors connectée à la Raspberry Pi sur les broches correspondantes (SCK,MISO,MOSI,SS).&lt;br /&gt;
Grâce à l'utilitaire &amp;lt;code&amp;gt;flashrom&amp;lt;/code&amp;gt;, nous pouvons depuis la Raspberry Pi extraire la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture broches.png|vignette|Schéma de la puce mémoire]]&lt;br /&gt;
&lt;br /&gt;
Nous l'avons connecté de cette façon :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!RPi&lt;br /&gt;
!Winbond 25X40CLNIG&lt;br /&gt;
|-&lt;br /&gt;
|CE0&lt;br /&gt;
|CS&lt;br /&gt;
|-&lt;br /&gt;
|MOSI&lt;br /&gt;
|DI&lt;br /&gt;
|-&lt;br /&gt;
|MISO&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
|SCK&lt;br /&gt;
|CLK&lt;br /&gt;
|-&lt;br /&gt;
|3,3V&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|GND&lt;br /&gt;
|}[[Fichier:Memoire soudee.jpg|vignette|Fils soudés sur les broches de la puce mémoire]]&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais nous avons cette erreur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
No EEPROM/flash device found.&lt;br /&gt;
Note: flashrom can never write if the flash chip isn't found automatically. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons tenté de lancer le programme en lui spécifiant le modèle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 --chip W25X40&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais sans succès, nous suspectons un problème dans la soudure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors par la suite dessoudé la flash et soudé un fil à chaque broche de celle-ci :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:7e4d8b63-7e49-4d2c-abbb-20ecb95b6820.jpg|vignette|Broches de la mémoire soudées aux fils|centré]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons finalement réussi à extraire la mémoire.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Lecturemem.jpg|vignette|Lecture de la mémoire|centré]]&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;code&amp;gt;binwalk&amp;lt;/code&amp;gt;nous indique la présence d'un fichier pdf . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de remplacer le fichier pdf de base par un autre afin d'observer le comportement du temptale : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 -w memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, nous avons fait en sorte de trouver un espace mémoire vide grâce à la commande &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
strings -tx memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMg.jpg|vignette|Visualisation de la mémoire, constat d'un espace mémoire disponible entre 0x136a2 et 0x16f8d|centré]]&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi de commencer à l'adresse 0x13700, donc en décimal 79616. Le fichier que nous avons choisi d'injecter fait 10,7 Ko. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
dd if=example.pdf of=memory.bin bs=1 seek=79616 count=10771&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nous devons compléter la mémoire (524 kB) pour que l'écriture se fasse :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
truncate -s 524288 memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
&lt;br /&gt;
=== Objectif du TP: ===&lt;br /&gt;
Nous devons analyser et compromettre la sécurité d'une balance connectée fournie par Nedis. Pour cela, nous avons installé l'application mobile associée, Nedis SmartLife, qui permet d'interagir avec la balance. [https://nedis.fr/fr-fr/smartlife Nedis SmartLife]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:WIFIHS10WT P50.jpg|vignette|Balance WiFi Nedis|néant]]&lt;br /&gt;
&lt;br /&gt;
=== Problème réseau initial: ===&lt;br /&gt;
Lors des premières configurations, nous avons découvert que notre réseau Wi-Fi configuré en WPA EAP n’était pas compatible avec les exigences de la balance. Cette dernière nécessite une configuration en WPA PSK pour fonctionner correctement.&lt;br /&gt;
&lt;br /&gt;
Malgré cette adaptation, nous avons rencontré des difficultés pour connecter nos téléphones à la balance. À la fin de l’appairage, la balance se déconnectait systématiquement avec le message d’erreur &amp;quot;Err2&amp;quot;. D’après nos recherches, cette erreur est liée à un problème de réseau. Bien que la balance apparaisse dans l’application, elle n’envoie aucune donnée dans des conditions d’utilisation normale.&lt;br /&gt;
[[Fichier:Interface appli.jpg|néant|vignette|312x312px|interface de l'application]]&lt;br /&gt;
[[Fichier:Prob réseau appli.png|néant|vignette|333x333px|Erreur de connexion réseau]]&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic initial: ===&lt;br /&gt;
Pour identifier la source du problème, nous avons vérifié la communication entre les trois entités principales du système : le téléphone, la balance, et le point d’accès Wi-Fi. Nous avons utilisé le Wi-Fi préalablement configuré lors des séances précédentes et effectué des tests de connectivité :[[Fichier:Ping phone.jpg|vignette|Ping vers le téléphone : Réussi|néant]][[Fichier:Ping balance.jpg|vignette|Ping vers la balance : Réussi|néant]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces résultats montrent que les appareils sont correctement connectés au réseau, ce qui écarte l’hypothèse d’un problème de connexion simple. Cependant, cela laisse supposer une potentielle perte des données pendant les échanges.&lt;br /&gt;
&lt;br /&gt;
=== Analyse avancée avec Wireshark: ===&lt;br /&gt;
Pour approfondir le diagnostic, notre professeur nous a suggéré de mettre en place une analyse de trafic réseau en utilisant :&lt;br /&gt;
&lt;br /&gt;
* Un injecteur PoE &lt;br /&gt;
* Le point d'accès PLIL &lt;br /&gt;
* Un commutateur réseau configuré pour effectuer un port mirroring.&lt;br /&gt;
* Wireshark en mode promiscuous pour capturer les paquets circulant dans le réseau.&lt;br /&gt;
&lt;br /&gt;
Commande pour la configuration du port mirroring :&lt;br /&gt;
 Switch(config)#monitor source interface fa 0/1 both&lt;br /&gt;
[[Fichier:Setup réseau.jpg|néant|vignette|Schéma du réseau]]&lt;br /&gt;
&lt;br /&gt;
Grâce à cette configuration, nous avons pu observer que la balance établit bien une connexion avec un serveur cloud spécifique. Cependant, les données échangées restent inintelligibles, ce qui rend le problème difficile à cerner.&lt;br /&gt;
&lt;br /&gt;
=== Observation architecture cloud: ===&lt;br /&gt;
[[Fichier:Arp.jpg|néant|vignette|379x379px|La balance qui prend l'adresse ip 172.26.145.206]]&lt;br /&gt;
&lt;br /&gt;
La balance est identifiable dans les trames capturées par son adresse MAC : '''Express:16:2d:4c'''. Cette adresse MAC apparaît principalement dans des paquets ARP, confirmant que la balance effectue des requêtes pour résoudre des adresses IP ou répondre aux requêtes des autres équipements du réseau.&lt;br /&gt;
Nous remarquons que les paquets montrent une tentative de négociation TLS entre la balance et un serveur cloud.&lt;br /&gt;
[[Fichier:Host-cloud2.png|néant|vignette|584x584px|le serveur cloud]]&lt;br /&gt;
[[Fichier:Host-cloud.png|néant|vignette|580x580px|Le serveur cloud]]Ce qui signifie que la communication entre la balance et l’application ne se fait pas directement via le routeur local. Au lieu de cela, les données transitent par un serveur cloud distant. Cette architecture ajoute une couche d’abstraction qui complique le diagnostic.&lt;br /&gt;
[[Fichier:Wireshark 2.jpg|néant|vignette|393x393px|le handshake entre le téléphone ayant l'ip 172.26.145.211 et le serveur]]&lt;br /&gt;
[[Fichier:Interruption de la com.jpg|néant|vignette|389x389px|transfert des paquets par chiffrement TLS]]Bien que la balance semble bien résoudre les adresses et tenter d'établir une connexion avec le cloud, le message '''TCP RST''' indique probablement que l'une des deux parties rejette la connexion.&lt;br /&gt;
[[Fichier:TCP RST.jpg|néant|vignette|l'interruption de le communication TCP]]&lt;br /&gt;
&lt;br /&gt;
=== Approche MITM (Man-in-the-Middle): ===&lt;br /&gt;
Un rejet du certificat présenté par le serveur peut être la cause de l'échec de la communication, donc pour mieux comprendre et intercepter les données, une approche MITM (Man-in-the-Middle) a été proposée. L’objectif est de configurer un serveur local qui imiterait le serveur cloud en utilisant un certificat TLS falsifié, permettant ainsi de capturer et d’analyser les communications chiffrées entre la balance et le serveur.&lt;br /&gt;
&lt;br /&gt;
Avec l’équipe 5, nous avons configuré le réseau suivant:&lt;br /&gt;
&lt;br /&gt;
VLAN 200: Réseau dédié à la balance, configuré pour se connecter à l’adresse 17.188.185.132 sur le port 5223.&lt;br /&gt;
&lt;br /&gt;
VLAN 50: Réseau pour la machine locale à l’adresse 172.26.145.231, qui hébergera notre serveur MITM.&lt;br /&gt;
&lt;br /&gt;
Le serveur est conçu pour générer et présenter un certificat TLS falsifié afin de se faire passer pour le serveur cloud légitime auprès de la balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import socket&lt;br /&gt;
import ssl&lt;br /&gt;
&lt;br /&gt;
# Chemins vers les certificats falsifiés&lt;br /&gt;
CERT_FILE = &amp;quot;fake_cert.pem&amp;quot;&lt;br /&gt;
KEY_FILE = &amp;quot;fake_key.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création du socket serveur&lt;br /&gt;
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
server_socket.bind(('0.0.0.0', 8443))  # Écoute sur le port 8443&lt;br /&gt;
server_socket.listen(5)&lt;br /&gt;
&lt;br /&gt;
# Ajout de la couche TLS/SSL&lt;br /&gt;
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)&lt;br /&gt;
ssl_context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Serveur en attente de connexions...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    client_socket, addr = server_socket.accept()&lt;br /&gt;
    print(f&amp;quot;Connexion acceptée de : {addr}&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        secure_socket = ssl_context.wrap_socket(client_socket, server_side=True)&lt;br /&gt;
        print(&amp;quot;TLS établi avec le client.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Communication avec le client&lt;br /&gt;
        data = secure_socket.recv(1024)&lt;br /&gt;
        print(f&amp;quot;Données reçues : {data.decode()}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Réponse du serveur&lt;br /&gt;
        secure_socket.sendall(b&amp;quot;HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nFake Cloud Response&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur TLS : {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        if 'secure_socket' in locals():&lt;br /&gt;
            secure_socket.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Génération des certificats falisifiés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openssl req -new -x509 -key fake_key.pem -out fake_cert.pem -days 365 -subj &amp;quot;/C=FR/ST=Lille/L=Lille/O=Fake Cloud/OU=Dev/CN=localhost&amp;quot;&lt;br /&gt;
openssl genrsa -out fake_key.pem 2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection de l'adresse de destination vers le serveur TCP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo iptables -t nat -A PREROUTING -p tcp -d 3.121.210.75 --dport 443 -j DNAT --to-destination 127.0.0.1:8443&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusion et étapes suivantes : ===&lt;br /&gt;
Problème actuel : &lt;br /&gt;
&lt;br /&gt;
Bien que la configuration MITM soit en place, nous devons encore analyser en détail les paquets chiffrés interceptés pour identifier la cause exacte de l’échec de communication.&lt;br /&gt;
&lt;br /&gt;
Étape suivante ou éventuelle:&lt;br /&gt;
&lt;br /&gt;
* Déployer des outils pour décrypter le trafic TLS intercepté et approfondir l’analyse des données échangées. (obsolète)&lt;br /&gt;
* Repérer l'extension apk de l'application Nedis pour faire du reverse.&lt;br /&gt;
* transformer la zabeth17 en un routeur pour pouvoir rediriger les paquets vers son adresse ip&lt;br /&gt;
* déssouder la puce mémoire de la carte pour la tester à part.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7907</id>
		<title>SE5 IdO sécurité des objets 2024/2025 b4</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7907"/>
		<updated>2025-01-26T21:22:25Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Wi-Fi ==&lt;br /&gt;
&lt;br /&gt;
=== Création du serveur virtuel ===&lt;br /&gt;
- Création d'un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents''' avec :&lt;br /&gt;
   * Adresse IPv4 : '''172.26.145.104'''&lt;br /&gt;
   * Passerelle : '''172.26.145.251'''&lt;br /&gt;
- Interface réseau dans le VLAN 404 :&lt;br /&gt;
   * Adresse IPv4 : '''172.16.4.1'''&lt;br /&gt;
   * Masque : '''/24''' (255.255.255.0)&lt;br /&gt;
   * VLAN : '''404'''&lt;br /&gt;
&lt;br /&gt;
=== Configuration du point d'accès WiFi Cisco ===&lt;br /&gt;
&lt;br /&gt;
- Définition du SSID '''VM_binome_4''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   dot11 ssid VM_binome_4&lt;br /&gt;
     vlan 404&lt;br /&gt;
     authentication open eap eap_binome_4&lt;br /&gt;
     authentication network-eap eap_binome_4&lt;br /&gt;
     authentication key-management wpa&lt;br /&gt;
     mbssid guest-mode&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du VLAN 404 sur l'interface radio et l'interface Ethernet :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface Dot11Radio0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface GigabitEthernet0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration de l'accès au serveur FreeRADIUS :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   aaa new-model&lt;br /&gt;
   aaa authentication login eap_binome_4 group radius_binome_4&lt;br /&gt;
   radius-server host 172.16.4.1 auth-port 1812 acct-port 1813 key glopglop&lt;br /&gt;
   aaa group server radius radius_binome_4&lt;br /&gt;
     server 172.16.4.1 auth-port 1812 acct-port 1813&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur FreeRADIUS ===&lt;br /&gt;
- Installation de FreeRADIUS sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt install freeradius freeradius-utils&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout de l'adresse IP du point d'accès Cisco dans le fichier de clients FreeRADIUS :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/clients.conf''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   client wifi_ap {&lt;br /&gt;
       ipaddr = 172.26.145.4&lt;br /&gt;
       secret = glopglop&lt;br /&gt;
       shortname = wifi_ap_binome_4&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration d'un utilisateur pour l'authentification WPA2-EAP :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/users''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   mouss Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Activation de PEAP-MSCHAPv2 :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/mods-enabled/eap''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   peap {&lt;br /&gt;
       default_eap_type = mschapv2&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DHCP ===&lt;br /&gt;
- On a installé un serveur DHCP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt install isc-dhcp-server&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du serveur DHCP :&lt;br /&gt;
   * Dans le fichier '''/etc/dhcp/dhcpd.conf''' :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   subnet 172.16.4.0 netmask 255.255.255.0 {&lt;br /&gt;
       range 172.16.4.100 172.16.4.200;&lt;br /&gt;
       option routers 172.16.4.104;&lt;br /&gt;
       option domain-name-servers 255.255.255.0;&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Dans le fichier '''/etc/default/isc-dhcp-server''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   INTERFACESv4=&amp;quot;eth1&amp;quot; &lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DNS minimal ===&lt;br /&gt;
* Dans '''/etc/bind/named.conf.options'''&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   forwarders { &lt;br /&gt;
   		172.26.188.12;&lt;br /&gt;
   };&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mascarade entre VLAN privé et routeur ===&lt;br /&gt;
- Activation du transfert IP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl -w net.ipv4.ip_forward=1&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout d'une règle de masquerade avec '''iptables''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passage de WPA-EAP à WPA-PSK ===&lt;br /&gt;
Afin d'utiliser notre balance connectée, nous devons mettre en place un point d'accès avec WPA-PSK et non WPA-EAP.&lt;br /&gt;
&lt;br /&gt;
* Dans le point d'accès Cisco :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
no autentication open eap eap_binome_4&lt;br /&gt;
no authentication network-eap eap_binome_4&lt;br /&gt;
wpa-psk ascii [mdp]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Temptale USB == &lt;br /&gt;
&lt;br /&gt;
=== Identification des différentes puces ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Img cpsnts.jpg|vignette|Temptale ouvert]]&lt;br /&gt;
&lt;br /&gt;
µC : Atmel AT91SAM7S256&lt;br /&gt;
&lt;br /&gt;
Puce mémoire : Winbond 25X40CLNIG&lt;br /&gt;
&lt;br /&gt;
SN74CBTLV3126 : commutateur de bus FET quadripolaire, probablement utilisé comme convertisseur de niveau&lt;br /&gt;
&lt;br /&gt;
=== Modification du fichier pdf ===&lt;br /&gt;
Nous avons d'abord pensé à passer par le système de fichiers et plus précisément le fichier pdf pour hacker le Temptale.&lt;br /&gt;
&lt;br /&gt;
=== Mémoire ===&lt;br /&gt;
&lt;br /&gt;
Afin d'extraire les données de la mémoire, nous avons soudé des fils sur chaque broche de la puce mémoire. Elle fonctionne en SPI, nous l'avons alors connectée à la Raspberry Pi sur les broches correspondantes (SCK,MISO,MOSI,SS).&lt;br /&gt;
Grâce à l'utilitaire &amp;lt;code&amp;gt;flashrom&amp;lt;/code&amp;gt;, nous pouvons depuis la Raspberry Pi extraire la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture broches.png|vignette|Schéma de la puce mémoire]]&lt;br /&gt;
&lt;br /&gt;
Nous l'avons connecté de cette façon :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!RPi&lt;br /&gt;
!Winbond 25X40CLNIG&lt;br /&gt;
|-&lt;br /&gt;
|CE0&lt;br /&gt;
|CS&lt;br /&gt;
|-&lt;br /&gt;
|MOSI&lt;br /&gt;
|DI&lt;br /&gt;
|-&lt;br /&gt;
|MISO&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
|SCK&lt;br /&gt;
|CLK&lt;br /&gt;
|-&lt;br /&gt;
|3,3V&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|GND&lt;br /&gt;
|}[[Fichier:Memoire soudee.jpg|vignette|Fils soudés sur les broches de la puce mémoire]]&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais nous avons cette erreur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
No EEPROM/flash device found.&lt;br /&gt;
Note: flashrom can never write if the flash chip isn't found automatically. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons tenté de lancer le programme en lui spécifiant le modèle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 --chip W25X40&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais sans succès, nous suspectons un problème dans la soudure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors par la suite dessoudé la flash et soudé un fil à chaque broche de celle-ci :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:7e4d8b63-7e49-4d2c-abbb-20ecb95b6820.jpg|vignette|Broches de la mémoire soudées aux fils|centré]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons finalement réussi à extraire la mémoire.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Lecturemem.jpg|vignette|Lecture de la mémoire|centré]]&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;code&amp;gt;binwalk&amp;lt;/code&amp;gt;nous indique la présence d'un fichier pdf . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de remplacer le fichier pdf de base par un autre afin d'observer le comportement du temptale : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 -w memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, nous avons fait en sorte de trouver un espace mémoire vide grâce à la commande &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
strings -tx memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMg.jpg|vignette|Visualisation de la mémoire, constat d'un espace mémoire disponible entre 0x136a2 et 0x16f8d|centré]]&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi de commencer à l'adresse 0x13700, donc en décimal 79616. Le fichier que nous avons choisi d'injecter fait 10,7 Ko. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
dd if=example.pdf of=memory.bin bs=1 seek=79616 count=10771&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nous devons compléter la mémoire pour que l'écriture se fasse :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
truncate -s 524288 memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
&lt;br /&gt;
=== Objectif du TP: ===&lt;br /&gt;
Nous devons analyser et compromettre la sécurité d'une balance connectée fournie par Nedis. Pour cela, nous avons installé l'application mobile associée, Nedis SmartLife, qui permet d'interagir avec la balance. [https://nedis.fr/fr-fr/smartlife Nedis SmartLife]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:WIFIHS10WT P50.jpg|vignette|Balance WiFi Nedis|néant]]&lt;br /&gt;
&lt;br /&gt;
=== Problème réseau initial: ===&lt;br /&gt;
Lors des premières configurations, nous avons découvert que notre réseau Wi-Fi configuré en WPA EAP n’était pas compatible avec les exigences de la balance. Cette dernière nécessite une configuration en WPA PSK pour fonctionner correctement.&lt;br /&gt;
&lt;br /&gt;
Malgré cette adaptation, nous avons rencontré des difficultés pour connecter nos téléphones à la balance. À la fin de l’appairage, la balance se déconnectait systématiquement avec le message d’erreur &amp;quot;Err2&amp;quot;. D’après nos recherches, cette erreur est liée à un problème de réseau. Bien que la balance apparaisse dans l’application, elle n’envoie aucune donnée dans des conditions d’utilisation normale.&lt;br /&gt;
[[Fichier:Interface appli.jpg|néant|vignette|312x312px|interface de l'application]]&lt;br /&gt;
[[Fichier:Prob réseau appli.png|néant|vignette|333x333px|Erreur de connexion réseau]]&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic initial: ===&lt;br /&gt;
Pour identifier la source du problème, nous avons vérifié la communication entre les trois entités principales du système : le téléphone, la balance, et le point d’accès Wi-Fi. Nous avons utilisé le Wi-Fi préalablement configuré lors des séances précédentes et effectué des tests de connectivité :[[Fichier:Ping phone.jpg|vignette|Ping vers le téléphone : Réussi|néant]][[Fichier:Ping balance.jpg|vignette|Ping vers la balance : Réussi|néant]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces résultats montrent que les appareils sont correctement connectés au réseau, ce qui écarte l’hypothèse d’un problème de connexion simple. Cependant, cela laisse supposer une potentielle perte des données pendant les échanges.&lt;br /&gt;
&lt;br /&gt;
=== Analyse avancée avec Wireshark: ===&lt;br /&gt;
Pour approfondir le diagnostic, notre professeur nous a suggéré de mettre en place une analyse de trafic réseau en utilisant :&lt;br /&gt;
&lt;br /&gt;
* Un injecteur PoE &lt;br /&gt;
* Le point d'accès PLIL &lt;br /&gt;
* Un commutateur réseau configuré pour effectuer un port mirroring.&lt;br /&gt;
* Wireshark en mode promiscuous pour capturer les paquets circulant dans le réseau.&lt;br /&gt;
&lt;br /&gt;
Commande pour la configuration du port mirroring :&lt;br /&gt;
 Switch(config)#monitor source interface fa 0/1 both&lt;br /&gt;
[[Fichier:Setup réseau.jpg|néant|vignette|Schéma du réseau]]&lt;br /&gt;
&lt;br /&gt;
Grâce à cette configuration, nous avons pu observer que la balance établit bien une connexion avec un serveur cloud spécifique. Cependant, les données échangées restent inintelligibles, ce qui rend le problème difficile à cerner.&lt;br /&gt;
&lt;br /&gt;
=== Observation architecture cloud: ===&lt;br /&gt;
[[Fichier:Arp.jpg|néant|vignette|379x379px|La balance qui prend l'adresse ip 172.26.145.206]]&lt;br /&gt;
&lt;br /&gt;
La balance est identifiable dans les trames capturées par son adresse MAC : '''Express:16:2d:4c'''. Cette adresse MAC apparaît principalement dans des paquets ARP, confirmant que la balance effectue des requêtes pour résoudre des adresses IP ou répondre aux requêtes des autres équipements du réseau.&lt;br /&gt;
Nous remarquons que les paquets montrent une tentative de négociation TLS entre la balance et un serveur cloud.&lt;br /&gt;
[[Fichier:Host-cloud2.png|néant|vignette|584x584px|le serveur cloud]]&lt;br /&gt;
[[Fichier:Host-cloud.png|néant|vignette|580x580px|Le serveur cloud]]Ce qui signifie que la communication entre la balance et l’application ne se fait pas directement via le routeur local. Au lieu de cela, les données transitent par un serveur cloud distant. Cette architecture ajoute une couche d’abstraction qui complique le diagnostic.&lt;br /&gt;
[[Fichier:Wireshark 2.jpg|néant|vignette|393x393px|le handshake entre le téléphone ayant l'ip 172.26.145.211 et le serveur]]&lt;br /&gt;
[[Fichier:Interruption de la com.jpg|néant|vignette|389x389px|transfert des paquets par chiffrement TLS]]Bien que la balance semble bien résoudre les adresses et tenter d'établir une connexion avec le cloud, le message '''TCP RST''' indique probablement que l'une des deux parties rejette la connexion.&lt;br /&gt;
[[Fichier:TCP RST.jpg|néant|vignette|l'interruption de le communication TCP]]&lt;br /&gt;
&lt;br /&gt;
=== Approche MITM (Man-in-the-Middle): ===&lt;br /&gt;
Un rejet du certificat présenté par le serveur peut être la cause de l'échec de la communication, donc pour mieux comprendre et intercepter les données, une approche MITM (Man-in-the-Middle) a été proposée. L’objectif est de configurer un serveur local qui imiterait le serveur cloud en utilisant un certificat TLS falsifié, permettant ainsi de capturer et d’analyser les communications chiffrées entre la balance et le serveur.&lt;br /&gt;
&lt;br /&gt;
Avec l’équipe 5, nous avons configuré le réseau suivant:&lt;br /&gt;
&lt;br /&gt;
VLAN 200: Réseau dédié à la balance, configuré pour se connecter à l’adresse 17.188.185.132 sur le port 5223.&lt;br /&gt;
&lt;br /&gt;
VLAN 50: Réseau pour la machine locale à l’adresse 172.26.145.231, qui hébergera notre serveur MITM.&lt;br /&gt;
&lt;br /&gt;
Le serveur est conçu pour générer et présenter un certificat TLS falsifié afin de se faire passer pour le serveur cloud légitime auprès de la balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import socket&lt;br /&gt;
import ssl&lt;br /&gt;
&lt;br /&gt;
# Chemins vers les certificats falsifiés&lt;br /&gt;
CERT_FILE = &amp;quot;fake_cert.pem&amp;quot;&lt;br /&gt;
KEY_FILE = &amp;quot;fake_key.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création du socket serveur&lt;br /&gt;
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
server_socket.bind(('0.0.0.0', 8443))  # Écoute sur le port 8443&lt;br /&gt;
server_socket.listen(5)&lt;br /&gt;
&lt;br /&gt;
# Ajout de la couche TLS/SSL&lt;br /&gt;
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)&lt;br /&gt;
ssl_context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Serveur en attente de connexions...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    client_socket, addr = server_socket.accept()&lt;br /&gt;
    print(f&amp;quot;Connexion acceptée de : {addr}&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        secure_socket = ssl_context.wrap_socket(client_socket, server_side=True)&lt;br /&gt;
        print(&amp;quot;TLS établi avec le client.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Communication avec le client&lt;br /&gt;
        data = secure_socket.recv(1024)&lt;br /&gt;
        print(f&amp;quot;Données reçues : {data.decode()}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Réponse du serveur&lt;br /&gt;
        secure_socket.sendall(b&amp;quot;HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nFake Cloud Response&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur TLS : {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        if 'secure_socket' in locals():&lt;br /&gt;
            secure_socket.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Génération des certificats falisifiés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openssl req -new -x509 -key fake_key.pem -out fake_cert.pem -days 365 -subj &amp;quot;/C=FR/ST=Lille/L=Lille/O=Fake Cloud/OU=Dev/CN=localhost&amp;quot;&lt;br /&gt;
openssl genrsa -out fake_key.pem 2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection de l'adresse de destination vers le serveur TCP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo iptables -t nat -A PREROUTING -p tcp -d 3.121.210.75 --dport 443 -j DNAT --to-destination 127.0.0.1:8443&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusion et étapes suivantes : ===&lt;br /&gt;
Problème actuel : &lt;br /&gt;
&lt;br /&gt;
Bien que la configuration MITM soit en place, nous devons encore analyser en détail les paquets chiffrés interceptés pour identifier la cause exacte de l’échec de communication.&lt;br /&gt;
&lt;br /&gt;
Étape suivante ou éventuelle:&lt;br /&gt;
&lt;br /&gt;
* Déployer des outils pour décrypter le trafic TLS intercepté et approfondir l’analyse des données échangées. (obsolète)&lt;br /&gt;
* Repérer l'extension apk de l'application Nedis pour faire du reverse.&lt;br /&gt;
* transformer la zabeth17 en un routeur pour pouvoir rediriger les paquets vers son adresse ip&lt;br /&gt;
* déssouder la puce mémoire de la carte pour la tester à part.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7906</id>
		<title>SE5 IdO sécurité des objets 2024/2025 b4</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7906"/>
		<updated>2025-01-26T21:19:05Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Wi-Fi ==&lt;br /&gt;
&lt;br /&gt;
=== Création du serveur virtuel ===&lt;br /&gt;
- Création d'un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents''' avec :&lt;br /&gt;
   * Adresse IPv4 : '''172.26.145.104'''&lt;br /&gt;
   * Passerelle : '''172.26.145.251'''&lt;br /&gt;
- Interface réseau dans le VLAN 404 :&lt;br /&gt;
   * Adresse IPv4 : '''172.16.4.1'''&lt;br /&gt;
   * Masque : '''/24''' (255.255.255.0)&lt;br /&gt;
   * VLAN : '''404'''&lt;br /&gt;
&lt;br /&gt;
=== Configuration du point d'accès WiFi Cisco ===&lt;br /&gt;
&lt;br /&gt;
- Définition du SSID '''VM_binome_4''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   dot11 ssid VM_binome_4&lt;br /&gt;
     vlan 404&lt;br /&gt;
     authentication open eap eap_binome_4&lt;br /&gt;
     authentication network-eap eap_binome_4&lt;br /&gt;
     authentication key-management wpa&lt;br /&gt;
     mbssid guest-mode&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du VLAN 404 sur l'interface radio et l'interface Ethernet :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface Dot11Radio0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface GigabitEthernet0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration de l'accès au serveur FreeRADIUS :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   aaa new-model&lt;br /&gt;
   aaa authentication login eap_binome_4 group radius_binome_4&lt;br /&gt;
   radius-server host 172.16.4.1 auth-port 1812 acct-port 1813 key glopglop&lt;br /&gt;
   aaa group server radius radius_binome_4&lt;br /&gt;
     server 172.16.4.1 auth-port 1812 acct-port 1813&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur FreeRADIUS ===&lt;br /&gt;
- Installation de FreeRADIUS sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt install freeradius freeradius-utils&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout de l'adresse IP du point d'accès Cisco dans le fichier de clients FreeRADIUS :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/clients.conf''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   client wifi_ap {&lt;br /&gt;
       ipaddr = 172.26.145.4&lt;br /&gt;
       secret = glopglop&lt;br /&gt;
       shortname = wifi_ap_binome_4&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration d'un utilisateur pour l'authentification WPA2-EAP :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/users''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   mouss Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Activation de PEAP-MSCHAPv2 :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/mods-enabled/eap''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   peap {&lt;br /&gt;
       default_eap_type = mschapv2&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DHCP ===&lt;br /&gt;
- On a installé un serveur DHCP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt install isc-dhcp-server&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du serveur DHCP :&lt;br /&gt;
   * Dans le fichier '''/etc/dhcp/dhcpd.conf''' :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   subnet 172.16.4.0 netmask 255.255.255.0 {&lt;br /&gt;
       range 172.16.4.100 172.16.4.200;&lt;br /&gt;
       option routers 172.16.4.104;&lt;br /&gt;
       option domain-name-servers 255.255.255.0;&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Dans le fichier '''/etc/default/isc-dhcp-server''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   INTERFACESv4=&amp;quot;eth1&amp;quot; &lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DNS minimal ===&lt;br /&gt;
* Dans '''/etc/bind/named.conf.options'''&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   forwarders { &lt;br /&gt;
   		172.26.188.12;&lt;br /&gt;
   };&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mascarade entre VLAN privé et routeur ===&lt;br /&gt;
- Activation du transfert IP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl -w net.ipv4.ip_forward=1&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout d'une règle de masquerade avec '''iptables''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passage de WPA-EAP à WPA-PSK ===&lt;br /&gt;
Afin d'utiliser notre balance connectée, nous devons mettre en place un point d'accès avec WPA-PSK et non WPA-EAP.&lt;br /&gt;
&lt;br /&gt;
* Dans le point d'accès Cisco :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
no autentication open eap eap_binome_4&lt;br /&gt;
no authentication network-eap eap_binome_4&lt;br /&gt;
wpa-psk ascii [mdp]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Temptale USB == &lt;br /&gt;
&lt;br /&gt;
=== Identification des différentes puces ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Img cpsnts.jpg|vignette|Temptale ouvert]]&lt;br /&gt;
&lt;br /&gt;
µC : Atmel AT91SAM7S256&lt;br /&gt;
&lt;br /&gt;
Puce mémoire : Winbond 25X40CLNIG&lt;br /&gt;
&lt;br /&gt;
SN74CBTLV3126 : commutateur de bus FET quadripolaire, probablement utilisé comme convertisseur de niveau&lt;br /&gt;
&lt;br /&gt;
=== Modification du fichier pdf ===&lt;br /&gt;
Nous avons d'abord pensé à passer par le système de fichiers et plus précisément le fichier pdf pour hacker le Temptale.&lt;br /&gt;
&lt;br /&gt;
=== Mémoire ===&lt;br /&gt;
&lt;br /&gt;
Afin d'extraire les données de la mémoire, nous avons soudé des fils sur chaque broche de la puce mémoire. Elle fonctionne en SPI, nous l'avons alors connectée à la Raspberry Pi sur les broches correspondantes (SCK,MISO,MOSI,SS).&lt;br /&gt;
Grâce à l'utilitaire &amp;lt;code&amp;gt;flashrom&amp;lt;/code&amp;gt;, nous pouvons depuis la Raspberry Pi extraire la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture broches.png|vignette|Schéma de la puce mémoire]]&lt;br /&gt;
&lt;br /&gt;
Nous l'avons connecté de cette façon :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!RPi&lt;br /&gt;
!Winbond 25X40CLNIG&lt;br /&gt;
|-&lt;br /&gt;
|CE0&lt;br /&gt;
|CS&lt;br /&gt;
|-&lt;br /&gt;
|MOSI&lt;br /&gt;
|DI&lt;br /&gt;
|-&lt;br /&gt;
|MISO&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
|SCK&lt;br /&gt;
|CLK&lt;br /&gt;
|-&lt;br /&gt;
|3,3V&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|GND&lt;br /&gt;
|}[[Fichier:Memoire soudee.jpg|vignette|Fils soudés sur les broches de la puce mémoire]]&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais nous avons cette erreur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
No EEPROM/flash device found.&lt;br /&gt;
Note: flashrom can never write if the flash chip isn't found automatically. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons tenté de lancer le programme en lui spécifiant le modèle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 --chip W25X40&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais sans succès, nous suspectons un problème dans la soudure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors par la suite dessoudé la flash et soudé un fil à chaque broche de celle-ci :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:7e4d8b63-7e49-4d2c-abbb-20ecb95b6820.jpg|vignette|Broches de la mémoire soudées aux fils|centré]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons finalement réussi à extraire la mémoire.  &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Lecturemem.jpg|vignette|Lecture de la mémoire|centré]]&lt;br /&gt;
&lt;br /&gt;
L'utilitaire &amp;lt;code&amp;gt;binwalk&amp;lt;/code&amp;gt;nous indique la présence d'un fichier pdf . &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de remplacer le fichier pdf de base par un autre afin d'observer le comportement du temptale : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 -w memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, nous avons fait en sorte de trouver un espace mémoire vide grâce à la commande &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
strings -tx memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMg.jpg|vignette|Visualisation de la mémoire, constat d'un espace mémoire disponible entre 0x136a2 et 0x16f8d]]&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi de commencer à l'adresse 0x13700, donc en décimal 79616. Le fichier fait 10,7 Ko. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
dd if=example.pdf of=memory.bin bs=1 seek=79616 count=10771&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nous devons compléter la mémoire pour que l'écriture se fasse :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
truncate -s 524288 memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
&lt;br /&gt;
=== Objectif du TP: ===&lt;br /&gt;
Nous devons analyser et compromettre la sécurité d'une balance connectée fournie par Nedis. Pour cela, nous avons installé l'application mobile associée, Nedis SmartLife, qui permet d'interagir avec la balance. [https://nedis.fr/fr-fr/smartlife Nedis SmartLife]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:WIFIHS10WT P50.jpg|vignette|Balance WiFi Nedis|néant]]&lt;br /&gt;
&lt;br /&gt;
=== Problème réseau initial: ===&lt;br /&gt;
Lors des premières configurations, nous avons découvert que notre réseau Wi-Fi configuré en WPA EAP n’était pas compatible avec les exigences de la balance. Cette dernière nécessite une configuration en WPA PSK pour fonctionner correctement.&lt;br /&gt;
&lt;br /&gt;
Malgré cette adaptation, nous avons rencontré des difficultés pour connecter nos téléphones à la balance. À la fin de l’appairage, la balance se déconnectait systématiquement avec le message d’erreur &amp;quot;Err2&amp;quot;. D’après nos recherches, cette erreur est liée à un problème de réseau. Bien que la balance apparaisse dans l’application, elle n’envoie aucune donnée dans des conditions d’utilisation normale.&lt;br /&gt;
[[Fichier:Interface appli.jpg|néant|vignette|312x312px|interface de l'application]]&lt;br /&gt;
[[Fichier:Prob réseau appli.png|néant|vignette|333x333px|Erreur de connexion réseau]]&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic initial: ===&lt;br /&gt;
Pour identifier la source du problème, nous avons vérifié la communication entre les trois entités principales du système : le téléphone, la balance, et le point d’accès Wi-Fi. Nous avons utilisé le Wi-Fi préalablement configuré lors des séances précédentes et effectué des tests de connectivité :[[Fichier:Ping phone.jpg|vignette|Ping vers le téléphone : Réussi|néant]][[Fichier:Ping balance.jpg|vignette|Ping vers la balance : Réussi|néant]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces résultats montrent que les appareils sont correctement connectés au réseau, ce qui écarte l’hypothèse d’un problème de connexion simple. Cependant, cela laisse supposer une potentielle perte des données pendant les échanges.&lt;br /&gt;
&lt;br /&gt;
=== Analyse avancée avec Wireshark: ===&lt;br /&gt;
Pour approfondir le diagnostic, notre professeur nous a suggéré de mettre en place une analyse de trafic réseau en utilisant :&lt;br /&gt;
&lt;br /&gt;
* Un injecteur PoE &lt;br /&gt;
* Le point d'accès PLIL &lt;br /&gt;
* Un commutateur réseau configuré pour effectuer un port mirroring.&lt;br /&gt;
* Wireshark en mode promiscuous pour capturer les paquets circulant dans le réseau.&lt;br /&gt;
&lt;br /&gt;
Commande pour la configuration du port mirroring :&lt;br /&gt;
 Switch(config)#monitor source interface fa 0/1 both&lt;br /&gt;
[[Fichier:Setup réseau.jpg|néant|vignette|Schéma du réseau]]&lt;br /&gt;
&lt;br /&gt;
Grâce à cette configuration, nous avons pu observer que la balance établit bien une connexion avec un serveur cloud spécifique. Cependant, les données échangées restent inintelligibles, ce qui rend le problème difficile à cerner.&lt;br /&gt;
&lt;br /&gt;
=== Observation architecture cloud: ===&lt;br /&gt;
[[Fichier:Arp.jpg|néant|vignette|379x379px|La balance qui prend l'adresse ip 172.26.145.206]]&lt;br /&gt;
&lt;br /&gt;
La balance est identifiable dans les trames capturées par son adresse MAC : '''Express:16:2d:4c'''. Cette adresse MAC apparaît principalement dans des paquets ARP, confirmant que la balance effectue des requêtes pour résoudre des adresses IP ou répondre aux requêtes des autres équipements du réseau.&lt;br /&gt;
Nous remarquons que les paquets montrent une tentative de négociation TLS entre la balance et un serveur cloud.&lt;br /&gt;
[[Fichier:Host-cloud2.png|néant|vignette|584x584px|le serveur cloud]]&lt;br /&gt;
[[Fichier:Host-cloud.png|néant|vignette|580x580px|Le serveur cloud]]Ce qui signifie que la communication entre la balance et l’application ne se fait pas directement via le routeur local. Au lieu de cela, les données transitent par un serveur cloud distant. Cette architecture ajoute une couche d’abstraction qui complique le diagnostic.&lt;br /&gt;
[[Fichier:Wireshark 2.jpg|néant|vignette|393x393px|le handshake entre le téléphone ayant l'ip 172.26.145.211 et le serveur]]&lt;br /&gt;
[[Fichier:Interruption de la com.jpg|néant|vignette|389x389px|transfert des paquets par chiffrement TLS]]Bien que la balance semble bien résoudre les adresses et tenter d'établir une connexion avec le cloud, le message '''TCP RST''' indique probablement que l'une des deux parties rejette la connexion.&lt;br /&gt;
[[Fichier:TCP RST.jpg|néant|vignette|l'interruption de le communication TCP]]&lt;br /&gt;
&lt;br /&gt;
=== Approche MITM (Man-in-the-Middle): ===&lt;br /&gt;
Un rejet du certificat présenté par le serveur peut être la cause de l'échec de la communication, donc pour mieux comprendre et intercepter les données, une approche MITM (Man-in-the-Middle) a été proposée. L’objectif est de configurer un serveur local qui imiterait le serveur cloud en utilisant un certificat TLS falsifié, permettant ainsi de capturer et d’analyser les communications chiffrées entre la balance et le serveur.&lt;br /&gt;
&lt;br /&gt;
Avec l’équipe 5, nous avons configuré le réseau suivant:&lt;br /&gt;
&lt;br /&gt;
VLAN 200: Réseau dédié à la balance, configuré pour se connecter à l’adresse 17.188.185.132 sur le port 5223.&lt;br /&gt;
&lt;br /&gt;
VLAN 50: Réseau pour la machine locale à l’adresse 172.26.145.231, qui hébergera notre serveur MITM.&lt;br /&gt;
&lt;br /&gt;
Le serveur est conçu pour générer et présenter un certificat TLS falsifié afin de se faire passer pour le serveur cloud légitime auprès de la balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import socket&lt;br /&gt;
import ssl&lt;br /&gt;
&lt;br /&gt;
# Chemins vers les certificats falsifiés&lt;br /&gt;
CERT_FILE = &amp;quot;fake_cert.pem&amp;quot;&lt;br /&gt;
KEY_FILE = &amp;quot;fake_key.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création du socket serveur&lt;br /&gt;
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
server_socket.bind(('0.0.0.0', 8443))  # Écoute sur le port 8443&lt;br /&gt;
server_socket.listen(5)&lt;br /&gt;
&lt;br /&gt;
# Ajout de la couche TLS/SSL&lt;br /&gt;
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)&lt;br /&gt;
ssl_context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Serveur en attente de connexions...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    client_socket, addr = server_socket.accept()&lt;br /&gt;
    print(f&amp;quot;Connexion acceptée de : {addr}&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        secure_socket = ssl_context.wrap_socket(client_socket, server_side=True)&lt;br /&gt;
        print(&amp;quot;TLS établi avec le client.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Communication avec le client&lt;br /&gt;
        data = secure_socket.recv(1024)&lt;br /&gt;
        print(f&amp;quot;Données reçues : {data.decode()}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Réponse du serveur&lt;br /&gt;
        secure_socket.sendall(b&amp;quot;HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nFake Cloud Response&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur TLS : {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        if 'secure_socket' in locals():&lt;br /&gt;
            secure_socket.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Génération des certificats falisifiés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openssl req -new -x509 -key fake_key.pem -out fake_cert.pem -days 365 -subj &amp;quot;/C=FR/ST=Lille/L=Lille/O=Fake Cloud/OU=Dev/CN=localhost&amp;quot;&lt;br /&gt;
openssl genrsa -out fake_key.pem 2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection de l'adresse de destination vers le serveur TCP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo iptables -t nat -A PREROUTING -p tcp -d 3.121.210.75 --dport 443 -j DNAT --to-destination 127.0.0.1:8443&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusion et étapes suivantes : ===&lt;br /&gt;
Problème actuel : &lt;br /&gt;
&lt;br /&gt;
Bien que la configuration MITM soit en place, nous devons encore analyser en détail les paquets chiffrés interceptés pour identifier la cause exacte de l’échec de communication.&lt;br /&gt;
&lt;br /&gt;
Étape suivante ou éventuelle:&lt;br /&gt;
&lt;br /&gt;
* Déployer des outils pour décrypter le trafic TLS intercepté et approfondir l’analyse des données échangées. (obsolète)&lt;br /&gt;
* Repérer l'extension apk de l'application Nedis pour faire du reverse.&lt;br /&gt;
* transformer la zabeth17 en un routeur pour pouvoir rediriger les paquets vers son adresse ip&lt;br /&gt;
* déssouder la puce mémoire de la carte pour la tester à part.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7905</id>
		<title>SE5 IdO sécurité des objets 2024/2025 b4</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7905"/>
		<updated>2025-01-26T21:15:35Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Mémoire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Wi-Fi ==&lt;br /&gt;
&lt;br /&gt;
=== Création du serveur virtuel ===&lt;br /&gt;
- Création d'un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents''' avec :&lt;br /&gt;
   * Adresse IPv4 : '''172.26.145.104'''&lt;br /&gt;
   * Passerelle : '''172.26.145.251'''&lt;br /&gt;
- Interface réseau dans le VLAN 404 :&lt;br /&gt;
   * Adresse IPv4 : '''172.16.4.1'''&lt;br /&gt;
   * Masque : '''/24''' (255.255.255.0)&lt;br /&gt;
   * VLAN : '''404'''&lt;br /&gt;
&lt;br /&gt;
=== Configuration du point d'accès WiFi Cisco ===&lt;br /&gt;
&lt;br /&gt;
- Définition du SSID '''VM_binome_4''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   dot11 ssid VM_binome_4&lt;br /&gt;
     vlan 404&lt;br /&gt;
     authentication open eap eap_binome_4&lt;br /&gt;
     authentication network-eap eap_binome_4&lt;br /&gt;
     authentication key-management wpa&lt;br /&gt;
     mbssid guest-mode&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du VLAN 404 sur l'interface radio et l'interface Ethernet :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface Dot11Radio0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface GigabitEthernet0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration de l'accès au serveur FreeRADIUS :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   aaa new-model&lt;br /&gt;
   aaa authentication login eap_binome_4 group radius_binome_4&lt;br /&gt;
   radius-server host 172.16.4.1 auth-port 1812 acct-port 1813 key glopglop&lt;br /&gt;
   aaa group server radius radius_binome_4&lt;br /&gt;
     server 172.16.4.1 auth-port 1812 acct-port 1813&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur FreeRADIUS ===&lt;br /&gt;
- Installation de FreeRADIUS sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt install freeradius freeradius-utils&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout de l'adresse IP du point d'accès Cisco dans le fichier de clients FreeRADIUS :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/clients.conf''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   client wifi_ap {&lt;br /&gt;
       ipaddr = 172.26.145.4&lt;br /&gt;
       secret = glopglop&lt;br /&gt;
       shortname = wifi_ap_binome_4&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration d'un utilisateur pour l'authentification WPA2-EAP :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/users''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   mouss Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Activation de PEAP-MSCHAPv2 :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/mods-enabled/eap''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   peap {&lt;br /&gt;
       default_eap_type = mschapv2&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DHCP ===&lt;br /&gt;
- On a installé un serveur DHCP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt install isc-dhcp-server&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du serveur DHCP :&lt;br /&gt;
   * Dans le fichier '''/etc/dhcp/dhcpd.conf''' :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   subnet 172.16.4.0 netmask 255.255.255.0 {&lt;br /&gt;
       range 172.16.4.100 172.16.4.200;&lt;br /&gt;
       option routers 172.16.4.104;&lt;br /&gt;
       option domain-name-servers 255.255.255.0;&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Dans le fichier '''/etc/default/isc-dhcp-server''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   INTERFACESv4=&amp;quot;eth1&amp;quot; &lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DNS minimal ===&lt;br /&gt;
* Dans '''/etc/bind/named.conf.options'''&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   forwarders { &lt;br /&gt;
   		172.26.188.12;&lt;br /&gt;
   };&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mascarade entre VLAN privé et routeur ===&lt;br /&gt;
- Activation du transfert IP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl -w net.ipv4.ip_forward=1&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout d'une règle de masquerade avec '''iptables''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passage de WPA-EAP à WPA-PSK ===&lt;br /&gt;
Afin d'utiliser notre balance connectée, nous devons mettre en place un point d'accès avec WPA-PSK et non WPA-EAP.&lt;br /&gt;
&lt;br /&gt;
* Dans le point d'accès Cisco :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
no autentication open eap eap_binome_4&lt;br /&gt;
no authentication network-eap eap_binome_4&lt;br /&gt;
wpa-psk ascii [mdp]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Temptale USB == &lt;br /&gt;
&lt;br /&gt;
=== Identification des différentes puces ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Img cpsnts.jpg|vignette|Temptale ouvert]]&lt;br /&gt;
&lt;br /&gt;
µC : Atmel AT91SAM7S256&lt;br /&gt;
&lt;br /&gt;
Puce mémoire : Winbond 25X40CLNIG&lt;br /&gt;
&lt;br /&gt;
SN74CBTLV3126 : commutateur de bus FET quadripolaire, probablement utilisé comme convertisseur de niveau&lt;br /&gt;
&lt;br /&gt;
=== Modification du fichier pdf ===&lt;br /&gt;
Nous avons d'abord pensé à passer par le système de fichiers et plus précisément le fichier pdf pour hacker le Temptale.&lt;br /&gt;
&lt;br /&gt;
=== Mémoire ===&lt;br /&gt;
&lt;br /&gt;
Afin d'extraire les données de la mémoire, nous avons soudé des fils sur chaque broche de la puce mémoire. Elle fonctionne en SPI, nous l'avons alors connectée à la Raspberry Pi sur les broches correspondantes (SCK,MISO,MOSI,SS).&lt;br /&gt;
Grâce à l'utilitaire &amp;lt;code&amp;gt;flashrom&amp;lt;/code&amp;gt;, nous pouvons depuis la Raspberry Pi extraire la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture broches.png|vignette|Schéma de la puce mémoire]]&lt;br /&gt;
&lt;br /&gt;
Nous l'avons connecté de cette façon :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!RPi&lt;br /&gt;
!Winbond 25X40CLNIG&lt;br /&gt;
|-&lt;br /&gt;
|CE0&lt;br /&gt;
|CS&lt;br /&gt;
|-&lt;br /&gt;
|MOSI&lt;br /&gt;
|DI&lt;br /&gt;
|-&lt;br /&gt;
|MISO&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
|SCK&lt;br /&gt;
|CLK&lt;br /&gt;
|-&lt;br /&gt;
|3,3V&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|GND&lt;br /&gt;
|}[[Fichier:Memoire soudee.jpg|vignette|Fils soudés sur les broches de la puce mémoire]]&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais nous avons cette erreur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
No EEPROM/flash device found.&lt;br /&gt;
Note: flashrom can never write if the flash chip isn't found automatically. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons tenté de lancer le programme en lui spécifiant le modèle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 --chip W25X40&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais sans succès, nous suspectons un problème dans la soudure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors par la suite dessoudé la flash et soudé un fil à chaque broche de celle-ci :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:7e4d8b63-7e49-4d2c-abbb-20ecb95b6820.jpg|vignette|Broches de la mémoire soudées aux fils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons finalement réussi à extraire la mémoire. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Lecturemem.jpg|vignette|Lecture de la mémoire]]&lt;br /&gt;
&lt;br /&gt;
L'utilitaire binwalk nous indique la présence d'un fichier pdf :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de remplacer le fichier pdf de base par un autre afin d'observer le comportement du temptale : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 -w memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, nous avons fait en sorte de trouver un espace mémoire vide grâce à la commande &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
strings -tx memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMg.jpg|vignette|Visualisation de la mémoire, constat d'un espace mémoire disponible entre 0x136a2 et 0x16f8d]]&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi de commencer à l'adresse 0x13700, donc en décimal 79616. Le fichier fait 10,7 Ko. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
dd if=example.pdf of=memory.bin bs=1 seek=79616 count=10771&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nous devons compléter la mémoire pour que l'écriture se fasse :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
truncate -s 524288 memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
&lt;br /&gt;
=== Objectif du TP: ===&lt;br /&gt;
Nous devons analyser et compromettre la sécurité d'une balance connectée fournie par Nedis. Pour cela, nous avons installé l'application mobile associée, Nedis SmartLife, qui permet d'interagir avec la balance. [https://nedis.fr/fr-fr/smartlife Nedis SmartLife]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:WIFIHS10WT P50.jpg|vignette|Balance WiFi Nedis|néant]]&lt;br /&gt;
&lt;br /&gt;
=== Problème réseau initial: ===&lt;br /&gt;
Lors des premières configurations, nous avons découvert que notre réseau Wi-Fi configuré en WPA EAP n’était pas compatible avec les exigences de la balance. Cette dernière nécessite une configuration en WPA PSK pour fonctionner correctement.&lt;br /&gt;
&lt;br /&gt;
Malgré cette adaptation, nous avons rencontré des difficultés pour connecter nos téléphones à la balance. À la fin de l’appairage, la balance se déconnectait systématiquement avec le message d’erreur &amp;quot;Err2&amp;quot;. D’après nos recherches, cette erreur est liée à un problème de réseau. Bien que la balance apparaisse dans l’application, elle n’envoie aucune donnée dans des conditions d’utilisation normale.&lt;br /&gt;
[[Fichier:Interface appli.jpg|néant|vignette|312x312px|interface de l'application]]&lt;br /&gt;
[[Fichier:Prob réseau appli.png|néant|vignette|333x333px|Erreur de connexion réseau]]&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic initial: ===&lt;br /&gt;
Pour identifier la source du problème, nous avons vérifié la communication entre les trois entités principales du système : le téléphone, la balance, et le point d’accès Wi-Fi. Nous avons utilisé le Wi-Fi préalablement configuré lors des séances précédentes et effectué des tests de connectivité :[[Fichier:Ping phone.jpg|vignette|Ping vers le téléphone : Réussi|néant]][[Fichier:Ping balance.jpg|vignette|Ping vers la balance : Réussi|néant]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces résultats montrent que les appareils sont correctement connectés au réseau, ce qui écarte l’hypothèse d’un problème de connexion simple. Cependant, cela laisse supposer une potentielle perte des données pendant les échanges.&lt;br /&gt;
&lt;br /&gt;
=== Analyse avancée avec Wireshark: ===&lt;br /&gt;
Pour approfondir le diagnostic, notre professeur nous a suggéré de mettre en place une analyse de trafic réseau en utilisant :&lt;br /&gt;
&lt;br /&gt;
* Un injecteur PoE &lt;br /&gt;
* Le point d'accès PLIL &lt;br /&gt;
* Un commutateur réseau configuré pour effectuer un port mirroring.&lt;br /&gt;
* Wireshark en mode promiscuous pour capturer les paquets circulant dans le réseau.&lt;br /&gt;
&lt;br /&gt;
Commande pour la configuration du port mirroring :&lt;br /&gt;
 Switch(config)#monitor source interface fa 0/1 both&lt;br /&gt;
[[Fichier:Setup réseau.jpg|néant|vignette|Schéma du réseau]]&lt;br /&gt;
&lt;br /&gt;
Grâce à cette configuration, nous avons pu observer que la balance établit bien une connexion avec un serveur cloud spécifique. Cependant, les données échangées restent inintelligibles, ce qui rend le problème difficile à cerner.&lt;br /&gt;
&lt;br /&gt;
=== Observation architecture cloud: ===&lt;br /&gt;
[[Fichier:Arp.jpg|néant|vignette|379x379px|La balance qui prend l'adresse ip 172.26.145.206]]&lt;br /&gt;
&lt;br /&gt;
La balance est identifiable dans les trames capturées par son adresse MAC : '''Express:16:2d:4c'''. Cette adresse MAC apparaît principalement dans des paquets ARP, confirmant que la balance effectue des requêtes pour résoudre des adresses IP ou répondre aux requêtes des autres équipements du réseau.&lt;br /&gt;
Nous remarquons que les paquets montrent une tentative de négociation TLS entre la balance et un serveur cloud.&lt;br /&gt;
[[Fichier:Host-cloud2.png|néant|vignette|584x584px|le serveur cloud]]&lt;br /&gt;
[[Fichier:Host-cloud.png|néant|vignette|580x580px|Le serveur cloud]]Ce qui signifie que la communication entre la balance et l’application ne se fait pas directement via le routeur local. Au lieu de cela, les données transitent par un serveur cloud distant. Cette architecture ajoute une couche d’abstraction qui complique le diagnostic.&lt;br /&gt;
[[Fichier:Wireshark 2.jpg|néant|vignette|393x393px|le handshake entre le téléphone ayant l'ip 172.26.145.211 et le serveur]]&lt;br /&gt;
[[Fichier:Interruption de la com.jpg|néant|vignette|389x389px|transfert des paquets par chiffrement TLS]]Bien que la balance semble bien résoudre les adresses et tenter d'établir une connexion avec le cloud, le message '''TCP RST''' indique probablement que l'une des deux parties rejette la connexion.&lt;br /&gt;
[[Fichier:TCP RST.jpg|néant|vignette|l'interruption de le communication TCP]]&lt;br /&gt;
&lt;br /&gt;
=== Approche MITM (Man-in-the-Middle): ===&lt;br /&gt;
Un rejet du certificat présenté par le serveur peut être la cause de l'échec de la communication, donc pour mieux comprendre et intercepter les données, une approche MITM (Man-in-the-Middle) a été proposée. L’objectif est de configurer un serveur local qui imiterait le serveur cloud en utilisant un certificat TLS falsifié, permettant ainsi de capturer et d’analyser les communications chiffrées entre la balance et le serveur.&lt;br /&gt;
&lt;br /&gt;
Avec l’équipe 5, nous avons configuré le réseau suivant:&lt;br /&gt;
&lt;br /&gt;
VLAN 200: Réseau dédié à la balance, configuré pour se connecter à l’adresse 17.188.185.132 sur le port 5223.&lt;br /&gt;
&lt;br /&gt;
VLAN 50: Réseau pour la machine locale à l’adresse 172.26.145.231, qui hébergera notre serveur MITM.&lt;br /&gt;
&lt;br /&gt;
Le serveur est conçu pour générer et présenter un certificat TLS falsifié afin de se faire passer pour le serveur cloud légitime auprès de la balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import socket&lt;br /&gt;
import ssl&lt;br /&gt;
&lt;br /&gt;
# Chemins vers les certificats falsifiés&lt;br /&gt;
CERT_FILE = &amp;quot;fake_cert.pem&amp;quot;&lt;br /&gt;
KEY_FILE = &amp;quot;fake_key.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création du socket serveur&lt;br /&gt;
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
server_socket.bind(('0.0.0.0', 8443))  # Écoute sur le port 8443&lt;br /&gt;
server_socket.listen(5)&lt;br /&gt;
&lt;br /&gt;
# Ajout de la couche TLS/SSL&lt;br /&gt;
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)&lt;br /&gt;
ssl_context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Serveur en attente de connexions...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    client_socket, addr = server_socket.accept()&lt;br /&gt;
    print(f&amp;quot;Connexion acceptée de : {addr}&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        secure_socket = ssl_context.wrap_socket(client_socket, server_side=True)&lt;br /&gt;
        print(&amp;quot;TLS établi avec le client.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Communication avec le client&lt;br /&gt;
        data = secure_socket.recv(1024)&lt;br /&gt;
        print(f&amp;quot;Données reçues : {data.decode()}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Réponse du serveur&lt;br /&gt;
        secure_socket.sendall(b&amp;quot;HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nFake Cloud Response&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur TLS : {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        if 'secure_socket' in locals():&lt;br /&gt;
            secure_socket.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Génération des certificats falisifiés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openssl req -new -x509 -key fake_key.pem -out fake_cert.pem -days 365 -subj &amp;quot;/C=FR/ST=Lille/L=Lille/O=Fake Cloud/OU=Dev/CN=localhost&amp;quot;&lt;br /&gt;
openssl genrsa -out fake_key.pem 2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection de l'adresse de destination vers le serveur TCP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo iptables -t nat -A PREROUTING -p tcp -d 3.121.210.75 --dport 443 -j DNAT --to-destination 127.0.0.1:8443&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusion et étapes suivantes : ===&lt;br /&gt;
Problème actuel : &lt;br /&gt;
&lt;br /&gt;
Bien que la configuration MITM soit en place, nous devons encore analyser en détail les paquets chiffrés interceptés pour identifier la cause exacte de l’échec de communication.&lt;br /&gt;
&lt;br /&gt;
Étape suivante ou éventuelle:&lt;br /&gt;
&lt;br /&gt;
* Déployer des outils pour décrypter le trafic TLS intercepté et approfondir l’analyse des données échangées. (obsolète)&lt;br /&gt;
* Repérer l'extension apk de l'application Nedis pour faire du reverse.&lt;br /&gt;
* transformer la zabeth17 en un routeur pour pouvoir rediriger les paquets vers son adresse ip&lt;br /&gt;
* déssouder la puce mémoire de la carte pour la tester à part.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
	<entry>
		<id>https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7904</id>
		<title>SE5 IdO sécurité des objets 2024/2025 b4</title>
		<link rel="alternate" type="text/html" href="https://wiki-se.plil.fr/mediawiki/index.php?title=SE5_IdO_s%C3%A9curit%C3%A9_des_objets_2024/2025_b4&amp;diff=7904"/>
		<updated>2025-01-26T21:12:06Z</updated>

		<summary type="html">&lt;p&gt;Ybenmbar : /* Mémoire */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Wi-Fi ==&lt;br /&gt;
&lt;br /&gt;
=== Création du serveur virtuel ===&lt;br /&gt;
- Création d'un serveur virtuel sur capbreton : '''SE5-yelqasta-ybenmbar'''&lt;br /&gt;
- Interface réseau dans le commutateur virtuel '''bridgeStudents''' avec :&lt;br /&gt;
   * Adresse IPv4 : '''172.26.145.104'''&lt;br /&gt;
   * Passerelle : '''172.26.145.251'''&lt;br /&gt;
- Interface réseau dans le VLAN 404 :&lt;br /&gt;
   * Adresse IPv4 : '''172.16.4.1'''&lt;br /&gt;
   * Masque : '''/24''' (255.255.255.0)&lt;br /&gt;
   * VLAN : '''404'''&lt;br /&gt;
&lt;br /&gt;
=== Configuration du point d'accès WiFi Cisco ===&lt;br /&gt;
&lt;br /&gt;
- Définition du SSID '''VM_binome_4''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   dot11 ssid VM_binome_4&lt;br /&gt;
     vlan 404&lt;br /&gt;
     authentication open eap eap_binome_4&lt;br /&gt;
     authentication network-eap eap_binome_4&lt;br /&gt;
     authentication key-management wpa&lt;br /&gt;
     mbssid guest-mode&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du VLAN 404 sur l'interface radio et l'interface Ethernet :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface Dot11Radio0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   interface GigabitEthernet0.404&lt;br /&gt;
     encapsulation dot1Q 404&lt;br /&gt;
     bridge-group 4&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration de l'accès au serveur FreeRADIUS :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   aaa new-model&lt;br /&gt;
   aaa authentication login eap_binome_4 group radius_binome_4&lt;br /&gt;
   radius-server host 172.16.4.1 auth-port 1812 acct-port 1813 key glopglop&lt;br /&gt;
   aaa group server radius radius_binome_4&lt;br /&gt;
     server 172.16.4.1 auth-port 1812 acct-port 1813&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuration du serveur FreeRADIUS ===&lt;br /&gt;
- Installation de FreeRADIUS sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt update&lt;br /&gt;
   sudo apt install freeradius freeradius-utils&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout de l'adresse IP du point d'accès Cisco dans le fichier de clients FreeRADIUS :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/clients.conf''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   client wifi_ap {&lt;br /&gt;
       ipaddr = 172.26.145.4&lt;br /&gt;
       secret = glopglop&lt;br /&gt;
       shortname = wifi_ap_binome_4&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration d'un utilisateur pour l'authentification WPA2-EAP :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/users''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   mouss Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Activation de PEAP-MSCHAPv2 :&lt;br /&gt;
* Dans le fichier '''/etc/freeradius/3.0/mods-enabled/eap''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   peap {&lt;br /&gt;
       default_eap_type = mschapv2&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DHCP ===&lt;br /&gt;
- On a installé un serveur DHCP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   sudo apt install isc-dhcp-server&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Configuration du serveur DHCP :&lt;br /&gt;
   * Dans le fichier '''/etc/dhcp/dhcpd.conf''' :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   subnet 172.16.4.0 netmask 255.255.255.0 {&lt;br /&gt;
       range 172.16.4.100 172.16.4.200;&lt;br /&gt;
       option routers 172.16.4.104;&lt;br /&gt;
       option domain-name-servers 255.255.255.0;&lt;br /&gt;
   }&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Dans le fichier '''/etc/default/isc-dhcp-server''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   INTERFACESv4=&amp;quot;eth1&amp;quot; &lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Serveur DNS minimal ===&lt;br /&gt;
* Dans '''/etc/bind/named.conf.options'''&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
   ...&lt;br /&gt;
   forwarders { &lt;br /&gt;
   		172.26.188.12;&lt;br /&gt;
   };&lt;br /&gt;
   ...&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mascarade entre VLAN privé et routeur ===&lt;br /&gt;
- Activation du transfert IP sur le serveur virtuel :&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   systemctl -w net.ipv4.ip_forward=1&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
- Ajout d'une règle de masquerade avec '''iptables''' :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
   iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE&lt;br /&gt;
   &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Passage de WPA-EAP à WPA-PSK ===&lt;br /&gt;
Afin d'utiliser notre balance connectée, nous devons mettre en place un point d'accès avec WPA-PSK et non WPA-EAP.&lt;br /&gt;
&lt;br /&gt;
* Dans le point d'accès Cisco :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
no autentication open eap eap_binome_4&lt;br /&gt;
no authentication network-eap eap_binome_4&lt;br /&gt;
wpa-psk ascii [mdp]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Temptale USB == &lt;br /&gt;
&lt;br /&gt;
=== Identification des différentes puces ===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Img cpsnts.jpg|vignette|Temptale ouvert]]&lt;br /&gt;
&lt;br /&gt;
µC : Atmel AT91SAM7S256&lt;br /&gt;
&lt;br /&gt;
Puce mémoire : Winbond 25X40CLNIG&lt;br /&gt;
&lt;br /&gt;
SN74CBTLV3126 : commutateur de bus FET quadripolaire, probablement utilisé comme convertisseur de niveau&lt;br /&gt;
&lt;br /&gt;
=== Modification du fichier pdf ===&lt;br /&gt;
Nous avons d'abord pensé à passer par le système de fichiers et plus précisément le fichier pdf pour hacker le Temptale.&lt;br /&gt;
&lt;br /&gt;
=== Mémoire ===&lt;br /&gt;
&lt;br /&gt;
Afin d'extraire les données de la mémoire, nous avons soudé des fils sur chaque broche de la puce mémoire. Elle fonctionne en SPI, nous l'avons alors connectée à la Raspberry Pi sur les broches correspondantes (SCK,MISO,MOSI,SS).&lt;br /&gt;
Grâce à l'utilitaire &amp;lt;code&amp;gt;flashrom&amp;lt;/code&amp;gt;, nous pouvons depuis la Raspberry Pi extraire la mémoire flash.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Capture broches.png|vignette|Schéma de la puce mémoire]]&lt;br /&gt;
&lt;br /&gt;
Nous l'avons connecté de cette façon :&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
!RPi&lt;br /&gt;
!Winbond 25X40CLNIG&lt;br /&gt;
|-&lt;br /&gt;
|CE0&lt;br /&gt;
|CS&lt;br /&gt;
|-&lt;br /&gt;
|MOSI&lt;br /&gt;
|DI&lt;br /&gt;
|-&lt;br /&gt;
|MISO&lt;br /&gt;
|DO&lt;br /&gt;
|-&lt;br /&gt;
|SCK&lt;br /&gt;
|CLK&lt;br /&gt;
|-&lt;br /&gt;
|3,3V&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|GND&lt;br /&gt;
|GND&lt;br /&gt;
|}[[Fichier:Memoire soudee.jpg|vignette|Fils soudés sur les broches de la puce mémoire]]&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais nous avons cette erreur :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
No EEPROM/flash device found.&lt;br /&gt;
Note: flashrom can never write if the flash chip isn't found automatically. &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons tenté de lancer le programme en lui spécifiant le modèle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 --chip W25X40&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais sans succès, nous suspectons un problème dans la soudure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons alors par la suite dessoudé la flash et soudé un fil à chaque broche de celle-ci :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:7e4d8b63-7e49-4d2c-abbb-20ecb95b6820.jpg|vignette|Broches de la mémoire soudées aux fils]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Après cela, nous avons finalement réussi à extraire la mémoire. &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Lecturemem.jpg|vignette|Lecture de la mémoire]]&lt;br /&gt;
&lt;br /&gt;
L'utilitaire binwalk nous indique la présence d'un fichier pdf :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé de remplacer le fichier pdf de base par un autre afin d'observer le comportement du temptale : &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
flashrom -p linux_spi:dev=/dev/spidev0.0 -w memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mais avant ça, nous avons fait en sorte de trouver un espace mémoire vide grâce à la commande &amp;lt;code&amp;gt;strings&amp;lt;/code&amp;gt; :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
strings -tx memory.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:IMg.jpg|vignette|Visualisation de la mémoire, constat d'un espace mémoire disponible entre 0x136a2 et 0x16f8d]]&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi de commencer à l'adresse 0x13700, donc en décimal 79616. Le fichier fait 10,7 Ko. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
dd if=example.pdf of=memory4.bin bs=1 seek=79616 count=10771&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;Nous devons compléter la mémoire pour que l'écriture se fasse :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;plaintext&amp;quot;&amp;gt;&lt;br /&gt;
truncate -s 524288 memory4.bin&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Balance ==&lt;br /&gt;
&lt;br /&gt;
=== Objectif du TP: ===&lt;br /&gt;
Nous devons analyser et compromettre la sécurité d'une balance connectée fournie par Nedis. Pour cela, nous avons installé l'application mobile associée, Nedis SmartLife, qui permet d'interagir avec la balance. [https://nedis.fr/fr-fr/smartlife Nedis SmartLife]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:WIFIHS10WT P50.jpg|vignette|Balance WiFi Nedis|néant]]&lt;br /&gt;
&lt;br /&gt;
=== Problème réseau initial: ===&lt;br /&gt;
Lors des premières configurations, nous avons découvert que notre réseau Wi-Fi configuré en WPA EAP n’était pas compatible avec les exigences de la balance. Cette dernière nécessite une configuration en WPA PSK pour fonctionner correctement.&lt;br /&gt;
&lt;br /&gt;
Malgré cette adaptation, nous avons rencontré des difficultés pour connecter nos téléphones à la balance. À la fin de l’appairage, la balance se déconnectait systématiquement avec le message d’erreur &amp;quot;Err2&amp;quot;. D’après nos recherches, cette erreur est liée à un problème de réseau. Bien que la balance apparaisse dans l’application, elle n’envoie aucune donnée dans des conditions d’utilisation normale.&lt;br /&gt;
[[Fichier:Interface appli.jpg|néant|vignette|312x312px|interface de l'application]]&lt;br /&gt;
[[Fichier:Prob réseau appli.png|néant|vignette|333x333px|Erreur de connexion réseau]]&lt;br /&gt;
&lt;br /&gt;
=== Diagnostic initial: ===&lt;br /&gt;
Pour identifier la source du problème, nous avons vérifié la communication entre les trois entités principales du système : le téléphone, la balance, et le point d’accès Wi-Fi. Nous avons utilisé le Wi-Fi préalablement configuré lors des séances précédentes et effectué des tests de connectivité :[[Fichier:Ping phone.jpg|vignette|Ping vers le téléphone : Réussi|néant]][[Fichier:Ping balance.jpg|vignette|Ping vers la balance : Réussi|néant]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ces résultats montrent que les appareils sont correctement connectés au réseau, ce qui écarte l’hypothèse d’un problème de connexion simple. Cependant, cela laisse supposer une potentielle perte des données pendant les échanges.&lt;br /&gt;
&lt;br /&gt;
=== Analyse avancée avec Wireshark: ===&lt;br /&gt;
Pour approfondir le diagnostic, notre professeur nous a suggéré de mettre en place une analyse de trafic réseau en utilisant :&lt;br /&gt;
&lt;br /&gt;
* Un injecteur PoE &lt;br /&gt;
* Le point d'accès PLIL &lt;br /&gt;
* Un commutateur réseau configuré pour effectuer un port mirroring.&lt;br /&gt;
* Wireshark en mode promiscuous pour capturer les paquets circulant dans le réseau.&lt;br /&gt;
&lt;br /&gt;
Commande pour la configuration du port mirroring :&lt;br /&gt;
 Switch(config)#monitor source interface fa 0/1 both&lt;br /&gt;
[[Fichier:Setup réseau.jpg|néant|vignette|Schéma du réseau]]&lt;br /&gt;
&lt;br /&gt;
Grâce à cette configuration, nous avons pu observer que la balance établit bien une connexion avec un serveur cloud spécifique. Cependant, les données échangées restent inintelligibles, ce qui rend le problème difficile à cerner.&lt;br /&gt;
&lt;br /&gt;
=== Observation architecture cloud: ===&lt;br /&gt;
[[Fichier:Arp.jpg|néant|vignette|379x379px|La balance qui prend l'adresse ip 172.26.145.206]]&lt;br /&gt;
&lt;br /&gt;
La balance est identifiable dans les trames capturées par son adresse MAC : '''Express:16:2d:4c'''. Cette adresse MAC apparaît principalement dans des paquets ARP, confirmant que la balance effectue des requêtes pour résoudre des adresses IP ou répondre aux requêtes des autres équipements du réseau.&lt;br /&gt;
Nous remarquons que les paquets montrent une tentative de négociation TLS entre la balance et un serveur cloud.&lt;br /&gt;
[[Fichier:Host-cloud2.png|néant|vignette|584x584px|le serveur cloud]]&lt;br /&gt;
[[Fichier:Host-cloud.png|néant|vignette|580x580px|Le serveur cloud]]Ce qui signifie que la communication entre la balance et l’application ne se fait pas directement via le routeur local. Au lieu de cela, les données transitent par un serveur cloud distant. Cette architecture ajoute une couche d’abstraction qui complique le diagnostic.&lt;br /&gt;
[[Fichier:Wireshark 2.jpg|néant|vignette|393x393px|le handshake entre le téléphone ayant l'ip 172.26.145.211 et le serveur]]&lt;br /&gt;
[[Fichier:Interruption de la com.jpg|néant|vignette|389x389px|transfert des paquets par chiffrement TLS]]Bien que la balance semble bien résoudre les adresses et tenter d'établir une connexion avec le cloud, le message '''TCP RST''' indique probablement que l'une des deux parties rejette la connexion.&lt;br /&gt;
[[Fichier:TCP RST.jpg|néant|vignette|l'interruption de le communication TCP]]&lt;br /&gt;
&lt;br /&gt;
=== Approche MITM (Man-in-the-Middle): ===&lt;br /&gt;
Un rejet du certificat présenté par le serveur peut être la cause de l'échec de la communication, donc pour mieux comprendre et intercepter les données, une approche MITM (Man-in-the-Middle) a été proposée. L’objectif est de configurer un serveur local qui imiterait le serveur cloud en utilisant un certificat TLS falsifié, permettant ainsi de capturer et d’analyser les communications chiffrées entre la balance et le serveur.&lt;br /&gt;
&lt;br /&gt;
Avec l’équipe 5, nous avons configuré le réseau suivant:&lt;br /&gt;
&lt;br /&gt;
VLAN 200: Réseau dédié à la balance, configuré pour se connecter à l’adresse 17.188.185.132 sur le port 5223.&lt;br /&gt;
&lt;br /&gt;
VLAN 50: Réseau pour la machine locale à l’adresse 172.26.145.231, qui hébergera notre serveur MITM.&lt;br /&gt;
&lt;br /&gt;
Le serveur est conçu pour générer et présenter un certificat TLS falsifié afin de se faire passer pour le serveur cloud légitime auprès de la balance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
import socket&lt;br /&gt;
import ssl&lt;br /&gt;
&lt;br /&gt;
# Chemins vers les certificats falsifiés&lt;br /&gt;
CERT_FILE = &amp;quot;fake_cert.pem&amp;quot;&lt;br /&gt;
KEY_FILE = &amp;quot;fake_key.pem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Création du socket serveur&lt;br /&gt;
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
server_socket.bind(('0.0.0.0', 8443))  # Écoute sur le port 8443&lt;br /&gt;
server_socket.listen(5)&lt;br /&gt;
&lt;br /&gt;
# Ajout de la couche TLS/SSL&lt;br /&gt;
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)&lt;br /&gt;
ssl_context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)&lt;br /&gt;
&lt;br /&gt;
print(&amp;quot;Serveur en attente de connexions...&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
while True:&lt;br /&gt;
    client_socket, addr = server_socket.accept()&lt;br /&gt;
    print(f&amp;quot;Connexion acceptée de : {addr}&amp;quot;)&lt;br /&gt;
    try:&lt;br /&gt;
        secure_socket = ssl_context.wrap_socket(client_socket, server_side=True)&lt;br /&gt;
        print(&amp;quot;TLS établi avec le client.&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Communication avec le client&lt;br /&gt;
        data = secure_socket.recv(1024)&lt;br /&gt;
        print(f&amp;quot;Données reçues : {data.decode()}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        # Réponse du serveur&lt;br /&gt;
        secure_socket.sendall(b&amp;quot;HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r\nFake Cloud Response&amp;quot;)&lt;br /&gt;
    except Exception as e:&lt;br /&gt;
        print(f&amp;quot;Erreur TLS : {e}&amp;quot;)&lt;br /&gt;
    finally:&lt;br /&gt;
        if 'secure_socket' in locals():&lt;br /&gt;
            secure_socket.close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Génération des certificats falisifiés :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
openssl req -new -x509 -key fake_key.pem -out fake_cert.pem -days 365 -subj &amp;quot;/C=FR/ST=Lille/L=Lille/O=Fake Cloud/OU=Dev/CN=localhost&amp;quot;&lt;br /&gt;
openssl genrsa -out fake_key.pem 2048&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Redirection de l'adresse de destination vers le serveur TCP :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo iptables -t nat -A PREROUTING -p tcp -d 3.121.210.75 --dport 443 -j DNAT --to-destination 127.0.0.1:8443&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conclusion et étapes suivantes : ===&lt;br /&gt;
Problème actuel : &lt;br /&gt;
&lt;br /&gt;
Bien que la configuration MITM soit en place, nous devons encore analyser en détail les paquets chiffrés interceptés pour identifier la cause exacte de l’échec de communication.&lt;br /&gt;
&lt;br /&gt;
Étape suivante ou éventuelle:&lt;br /&gt;
&lt;br /&gt;
* Déployer des outils pour décrypter le trafic TLS intercepté et approfondir l’analyse des données échangées. (obsolète)&lt;br /&gt;
* Repérer l'extension apk de l'application Nedis pour faire du reverse.&lt;br /&gt;
* transformer la zabeth17 en un routeur pour pouvoir rediriger les paquets vers son adresse ip&lt;br /&gt;
* déssouder la puce mémoire de la carte pour la tester à part.&lt;/div&gt;</summary>
		<author><name>Ybenmbar</name></author>
	</entry>
</feed>