Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Routeur RMS 15.08 WPS
#1
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.
Répondre
#2
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é
Répondre
#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).
Répondre
#4
(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 :
    Code :
    2a24c0c6...d5781
    ).
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.
Répondre
#5
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.
Répondre
#6
(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.
Répondre
#7
(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:1FBig GrinB:00 | 6
2 | SUN2000-HV2320009826 | -79 | E8Big Grin7: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) wifiConfusedta 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:1FBig GrinB:00 | 6
2 | SUN2000-HV2320009826 | -79 | E8Big Grin7: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
Répondre
#8
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.
Répondre
#9
(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
Répondre
#10
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.
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)