Messages : 40
Sujets : 11
Inscription : Aug 2024
Réputation :
0
Bonjour André et Serge19
Super le WPS tester et marche très bien. Mais j'ai remarqué qu'il n'est pas sauvegardé en EEPROM, c'est parce que le mot de passe est en PSK64 ? , ou un problème d'EEPROM . J'ai fais un test sur l'afficheur distant avec sauvegarde en PSK64 et ça marche bien. J'aimerai savoir le problème ou la contrainte.
Merci.
Messages : 1,178
Sujets : 40
Inscription : May 2024
Réputation :
135
Le mot de passe est sauvegardé en EEPROM comme le SSID. Sans cela impossible de redémarrer après une coupure de courant.
Ce qui n'est pas sauvegardé, c'est la borne WIFI (adresse MAC) auquel le routeur s'est connecté. A chaque redémarrage l'ESP32 cherche la borne la plus forte répondant au SSID en mémoire.
C'est quoi le PSK64 ?
André
Messages : 27
Sujets : 6
Inscription : Aug 2024
Réputation :
3
Bonjour,
D'après mes sources, la norme WPA2 interdit les mots de passe de moins de 8 ou plus de 63 caractères (en ASCII).
Messages : 40
Sujets : 11
Inscription : Aug 2024
Réputation :
0
14-09-2025, 09:28 PM
(Modification du message : 15-09-2025, 10:13 AM par Alain H.
Raison de la modification: ajout message
)
(14-09-2025, 12:17 PM)F1ATB a écrit : Le mot de passe est sauvegardé en EEPROM comme le SSID. Sans cela impossible de redémarrer après une coupure de courant.
Ce qui n'est pas sauvegardé, c'est la borne WIFI (adresse MAC) auquel le routeur s'est connecté. A chaque redémarrage l'ESP32 cherche la borne la plus forte répondant au SSID en mémoire.
C'est quoi le PSK64 ?
André
Bonsoir André
Source chat GPT5.
PSK64 = Pre-Shared Key sur 64 hexadécimaux.
En Wi-Fi “WPA/WPA2/WPA3-Personal”, la clé peut être : - soit une phrase de passe lisible (8 à 63 caractères ASCII),
- soit une clé dérivée de 256 bits écrite en 64 caractères hexadécimaux → c’est ce qu’on appelle couramment PSK64 (ex :
).
Points importants : - La PSK64 est mathématiquement dérivée de la phrase de passe + le SSID (via PBKDF2/HMAC-SHA1, 4096 itérations).
- C’est équivalent pour se connecter :
Code : WiFi.begin(SSID, "phrase")
ou
Code : WiFi.begin(SSID, "64-hex")
fonctionnent tous les deux.
- On ne peut pas retrouver la phrase de passe “en clair” à partir de la PSK64 (sauf attaque par force brute).
- La PSK64 est spécifique au SSID : si le nom du réseau change, la PSK64 change aussi.
Pourquoi tu la vois après le WPS ?
Certaines box, via WPS, renvoient la clé dérivée (PSK64) au lieu de la phrase de passe. Du coup, l’ESP32 te remonte une suite hexadécimale et pas une phrase lisible. C’est normal — et c’est pour ça que tu ne peux pas “la convertir” en clair.
Au vu de votre idée j'ai voulu le mettre sur mon afficheur distant, et cela marche bien.Testé puis débranché alim reconnecter alim et c'est OK.
Voici le log moniteur série pour récupérer le ssid et password.
Lecture du FAI et Pass depuis la carte SD...
Erreur : impossible de monter la carte SD.
[WPS] Appuie sur le bouton WPS de la box.
[WPS] SUCCESS event.
[WPS] Recupere SSID:Freebox-B1FDB6 PASS:2a24c0c66f9926719b11b69603243d1e0919b3aaeb04169eb115b359f91d5781
[WPS] Identifiants sauvegardes en EEPROM.
[WiFi] Connexion apres WPS...
................................
[WiFi] Connecte a Freebox-B1FDB6 IP:192.168.1.142
ets Jun 8 2016 00:22:57
et le log après le restart.
Booting
cle : 721234888
C16disp_W5000 #00f800#ff0000
C16disp_W_500 #00fc00#ff8000
C16disp_W___0 #00ad55#aaaaaa
C16disp_w_500 #0007f0#00ff80
C16disp_w5000 #00701f#7000ff
Wake up : 0
IR at wake up : 1
Heure actuelle:0
Ouverture = -1%
DISP-ESP32-1172
Version : 10.01
SSID:Freebox-B1FDB6
Pass:2a24c0c66f9926719b11b69603243d1e0919b3aaeb04169eb115b359f91d5781
Wifi Begin : Freebox-B1FDB6
.6.6.6.6.6.6.6.6.6.0.0.0.0.0.0.0.0.0.0Last Reset : ESP_OK
Cela marche très bien pour moi.
Pour le routeur rms j'ai regardé le code, comme si je le comprend il n'a pas lu la mémoire EEPROM au moment ou il fait et trouve le WPS, je ne peux sauvegarder en EEPROM le ssid et le password car ils sont indenter par la longueur de la variable et si je fais une sauvegarde en EEPROM cela écraserai les autres valeurs en EEPROM.
Merci pour tout votre travail.
Messages : 27
Sujets : 6
Inscription : Aug 2024
Réputation :
3
Bonsoir,
Je tenais à vous remercier pour votre retour d'expérience.
Le WPA2, actuellement utilisé par le WPS, est en place depuis 2004. Le WPA3, plus récent, est désormais intégré aux box récentes tout en assurant une rétrocompatibilité avec le WPA2.
Votre proposition, qui suggère de faire évoluer la fonction WPS est pour ma part intéressante. Cependant, un point de votre expérience m’interpelle : l’utilisation d’une carte SD pour stocker les identifiants (SSID, mot de passe). Cette approche me semble discutable, car la carte SD deviendra inutile en cas de changement de box. En effet, le mot de passe généré est souvent lié au SSID, ce qui le rend à usage unique.
Or, l'intérêt du WPS réside justement dans le fait qu’il fonctionne sans avoir à stocker les identifiants. C’est ce qui garantit à la fois la sécurité et la simplicité de la connexion, car tout se fait automatiquement.
Messages : 40
Sujets : 11
Inscription : Aug 2024
Réputation :
0
15-09-2025, 06:45 AM
(Modification du message : 15-09-2025, 10:18 AM par Alain H.)
(14-09-2025, 10:43 PM)Serge19 a écrit : Bonsoir,
Je tenais à vous remercier pour votre retour d'expérience.
Le WPA2, actuellement utilisé par le WPS, est en place depuis 2004. Le WPA3, plus récent, est désormais intégré aux box récentes tout en assurant une rétrocompatibilité avec le WPA2.
Votre proposition, qui suggère de faire évoluer la fonction WPS est pour ma part intéressante. Cependant, un point de votre expérience m’interpelle : l’utilisation d’une carte SD pour stocker les identifiants (SSID, mot de passe). Cette approche me semble discutable, car la carte SD deviendra inutile en cas de changement de box. En effet, le mot de passe généré est souvent lié au SSID, ce qui le rend à usage unique.
Or, l'intérêt du WPS réside justement dans le fait qu’il fonctionne sans avoir à stocker les identifiants. C’est ce qui garantit à la fois la sécurité et la simplicité de la connexion, car tout se fait automatiquement.
Bonjour Serge19,
Non la carte Sd ne sert que pour une mise à jour du SSID et password , elle est lu qu'a la demande utilisateur, on la met sr l'afficheur que quand il y a un changement du wifi sinon non utilisé.
C'est pour mon afficheur déporté. Je l'ai fais à partir d'un ILI9488 car sur l'afficheur (Maisonnette) mon épouse ou moi même ne voyaient rien. J'ai donc fais cet afficheur qui m'affiche toute les fonctionnalités de base sauf pour l'affichage des données Température, watt produit, heure, watt restant et le bar graphe.J'y ai incorporé une fonction veille et mise à jour du wifi soit par carte SD soit par wps. Si il y a une SD avec un fichier "Config.ini dedans il récupère le SSID etle pass et l'enregistre en EEPROM sinon il va chercher le WPS. Si il le prend par carte SD il demande à la fin de sortir la SD. la sd ne sert qu'a récupérer les identifiants et mot de passe. Cela se fait en à peine 3 secondes.
Le fichier Config.ini est créer à partir d'un executable dans la carte SD, j'ai fais cela dans le cas d'un changement de box ou changement de propriétaire et pour une utilisation facile d'un non initié. Tout le monde ne sait ce qu'es un hotspot.
J'ai regardé le code du RMS, comme si je comprend il n'a pas lu la mémoire EEPROM au moment ou il fait et trouve le WPS, je ne peux sauvegarder en EEPROM le ssid et le password car ils sont indenter par la longueur de la variable et si je fais une sauvegarde en EEPROM cela écraserai les autres valeurs en EEPROM.
Messages : 40
Sujets : 11
Inscription : Aug 2024
Réputation :
0
(14-09-2025, 12:17 PM)F1ATB a écrit : Le mot de passe est sauvegardé en EEPROM comme le SSID. Sans cela impossible de redémarrer après une coupure de courant.
Ce qui n'est pas sauvegardé, c'est la borne WIFI (adresse MAC) auquel le routeur s'est connecté. A chaque redémarrage l'ESP32 cherche la borne la plus forte répondant au SSID en mémoire.
C'est quoi le PSK64 ?
André
Bonjour André,
j'ai programmé un esp32 en routeur pour tester, la sauvegarde.
le log
Booting
Dernier Reset : ESP_OK
cle : 912567899
Version stockée (partie entière) :15
Version du logiciel( partie entière) :15
Mémoire EEPROM utilisée : 45%
Chip Model: ESP32-D0WDQ6
InitGPIO
InirTemp:13
ESP32_Type:1
Adresse IP en mémoire : 192.168.1.3
RMS-ESP32-12059428
Lancement du Wifi
Scan start
Scan done
3 réseaux trouvés
Nr | SSID | RSSI | MAC | Channel
1 | Freebox-A0DBF8 | -70 | 3A:07:16:1F B:00 | 6
2 | SUN2000-HV2320009826 | -79 | E8 7:5:A3:EE:72 | 6
3 | Freebox-A0DBF8 | -83 | 3A:07:16:E6:8E:30 | 6
Version : 15.08
ssid:
password:
Tentative de connexion via WPS...
Déconnecté. Redémarrage WiFi...
E (20087) wifi ta is connecting, return error
WiFi Reconnecté en Mode Station
WPS réussi! Stop WPS et connexion vers: Freebox-A0DBF8
Déconnecté. Redémarrage WiFi...
WiFi Reconnecté en Mode Station
WiFi : Freebox-A0DBF8 connecté via WPS!
Récupération IP de RMS-ESP32-12059428 -> 192.168.1.3
Récupération password -> 2a24c0c66f9926719b11b69603243d1e0919b3aaeb04169eb115b359f91d5781
Sauvegarde des identifiants WPS dans l'EEPROM…
Mémoire EEPROM utilisée : 46%
: Connecté par WiFi via WPS, IP : 192.168.1.3 nom d'hôte : <a href='http://RMS-ESP32-12059428.local'>RMS-ESP32-12059428.local</a> Copiez/collez le nom d'hôte dans votre navigateur. ESP32 en mode AP et STA.
Serveur Telnet actif sur le port 23
OK: SSID/PASS sauvegardés.
restart
Booting
Dernier Reset : ESP_OK
cle : 912567899
Version stockée (partie entière) :15
Version du logiciel( partie entière) :15
Mémoire EEPROM utilisée : 46%
Chip Model: ESP32-D0WDQ6
InitGPIO
InirTemp:13
ESP32_Type:1
Adresse IP en mémoire : 192.168.1.3
RMS-ESP32-12059428
Lancement du Wifi
Scan start
Scan done
3 réseaux trouvés
Nr | SSID | RSSI | MAC | Channel
1 | Freebox-A0DBF8 | -74 | 3A:07:16:1F B:00 | 6
2 | SUN2000-HV2320009826 | -79 | E8 7:65:A3:EE:72 | 6
3 | Freebox-A0DBF8 | -80 | 3A:07:16:E6:8E:30 | 6
Version : 15.08
ssid:Freebox-A0DBF8
password:2a24c0c66f9926719b11b69603243d1e0919b3aaeb04169eb115b359f91d5781
: Wifi Begin : Freebox-A0DBF8
.6.6.6.6.6.6.6.6.6.0.0.0.0.0.0.0.0.0.0
: Connecté par WiFi, addresse IP : 192.168.1.3 or <a href='http://RMS-ESP32-12059428.local' >RMS-ESP32-12059428.local</a>
Serveur Telnet actif sur le port 23
Source : ShellyEm
Date : 15/09/2025 12:55:11
Signal WiFi: -75dBm
IP :192.168.1.3
Puissance reçue : Oui
Charge Lecture RMS (coeur 0) en ms - Min : 1 Moy : 2 Max : 2203
Charge Boucle générale (coeur 1) en ms - Min : 2 Moy : 2 Max : 2
Mémoire RAM libre actuellement: 103292 byte
Mémoire RAM libre minimum: 98256 byte
ESP32 ON depuis : 0.00 heures
La je peux relancer mon routeur et il est bien connecté.
la partie du code modifié
/*** WPS Configurations ***/ //SR19
#define ESP_WPS_MODE WPS_TYPE_PBC //SR19
esp_wps_config_t wps_config = WPS_CONFIG_INIT_DEFAULT(ESP_WPS_MODE); //SR19
bool isGOT_IP = false; //true si IP reçue
volatile bool wpsJustProvisioned = false; // <<< ajouté: indique qu'un WPS a provisionné SSID/PASS
void wpsStop() { //SR19
esp_err_t err = esp_wifi_wps_disable(); //SR19
if (err != ESP_OK) { //SR19
TelnetPrintln("WPS Disable Failed: " + String(err, HEX) + "h -> " + esp_err_to_name(err)); //SR19
} //SR19
} //SR19
//Evènements WPS/WiFi //SR19
void WiFiEvent(WiFiEvent_t event) { //SR19
switch (event) { //SR19
case ARDUINO_EVENT_WIFI_STA_START: //SR19
TelnetPrintln("WiFi Démarré en Mode Station. Attente WPS Client..."); //SR19
break; //SR19
case ARDUINO_EVENT_WIFI_STA_GOT_IP: //SR19
TelnetPrintln("WiFi : " + String(WiFi.SSID()) + " connecté via WPS!"); //SR19
ssid = (WiFi.SSID()); //Récup ssid
TelnetPrintln("Récupération IP de " + hostname + " -> " + (WiFi.localIP().toString())); //SR19
TelnetPrintln("Récupération password -> " + String(WiFi.psk())); //SR19
password = (WiFi.psk()); //Récup password
isGOT_IP = true; /*IP reçue*/ //SR19
// --- AJOUT: persistance auto si la connexion vient d'un provisionnement WPS
if (wpsJustProvisioned) {
if (ssid.length() > 0 && password.length() > 0) {
TelnetPrintln("Sauvegarde des identifiants WPS dans l'EEPROM...");
EcritureEnROM(); // sauve toute la config, dont SSID + password
TelnetPrintln("OK: SSID/PASS sauvegardés.");
} else {
TelnetPrintln("Attention: SSID/PASS WPS vides, pas de sauvegarde.");
}
wpsJustProvisioned = false; // reset du flag
}
Mais bon c'est pour des test je préfére garder le code que vous avez donné en Version 15.08 sinon je pourrais plus faire de mise à jour.
Merci
Alain
Messages : 27
Sujets : 6
Inscription : Aug 2024
Réputation :
3
Bonsoir Alain,
En découvrant votre modification de code, j’ai compris que vous effectuez une sauvegarde automatique des identifiants juste après leur récupération via le WPS.
De mon côté, je n’ai pas modifié principe de fonctionnement d'origine du routeur dans mon code.
Donc en cas de changement de box ou du 1er chargement du binaire dans le routeur :
- Après l’appairage WPS, depuis une tablette ou un smartphone, je passe en mode Point d’Accès (AP : 192.168.4.1) afin de configurer le routeur (type de carte, source, etc.). J’en profite également pour copier le nom d’hôte.
- Je procède ensuite à un enregistrement manuel, puis je redémarre le routeur via le réseau Wi-Fi de la box, en collant le nom d’hôte précédemment récupéré dans le navigateur.
--> Comme avant la v15.8, tout se fait en une seule étape durant le mode AP : paramétrage, récupération du nom d’hôte, enregistrement, et redémarrage du routeur pour son utilisation finale via le réseau Wi-Fi de la box.
Messages : 40
Sujets : 11
Inscription : Aug 2024
Réputation :
0
(15-09-2025, 09:36 PM)Serge19 a écrit : Bonsoir Alain,
En découvrant votre modification de code, j’ai compris que vous effectuez une sauvegarde automatique des identifiants juste après leur récupération via le WPS.
De mon côté, je n’ai pas modifié principe de fonctionnement d'origine du routeur dans mon code.
Donc en cas de changement de box ou du 1er chargement du binaire dans le routeur :
- Après l’appairage WPS, depuis une tablette ou un smartphone, je passe en mode Point d’Accès (AP : 192.168.4.1) afin de configurer le routeur (type de carte, source, etc.). J’en profite également pour copier le nom d’hôte.
- Je procède ensuite à un enregistrement manuel, puis je redémarre le routeur via le réseau Wi-Fi de la box, en collant le nom d’hôte précédemment récupéré dans le navigateur.
--> Comme avant la v15.8, tout se fait en une seule étape durant le mode AP : paramétrage, récupération du nom d’hôte, enregistrement, et redémarrage du routeur pour son utilisation finale via le réseau Wi-Fi de la box.
Oui j'ai bien compris le hotspot,mais hier quand j'ai fais le test wps il me dis de me connecter au 192.168.1.3 et je suis pas en hotspot et j'avoue je ne comprend pas vous faite un appairage via un WPS la ok sur le moniteur il me dis d'aller me connecté à l'adresse ip 192.168.1.3 donc pas hotspot, je m'y connecte bien, mais quand je redemarre le routeur il n'est plus présent et le ssid + le password ne sont pas enregistrer comprend pas pourquoi? j'aifais petite modif sur le routeur téléversé puis appairage WPS et sauvegarde du SSID + PASS et c'est ok . ?
Merci pour vos explications
Messages : 27
Sujets : 6
Inscription : Aug 2024
Réputation :
3
Si les identifiants ne sont plus présents au redémarrage, c’est clairement parce que vous ne réalisez pas l’enregistrement manuel indispensable. De votre côté, cela fonctionne uniquement parce que vous avez contourné le problème en mettant en place un enregistrement automatique via une modification du code. Il n’y a rien de magique là-dedans. Je ne promets rien, mais je vais tout de même tester cette approche pour voir à l’usage si cela peut améliorer la routine en général.
|