Découvrez comment stocker en toute sécurité les informations d’identification Wi-Fi et autres informations sensibles dans un fichier séparé pour vos projets ESP32 (fonctionne également pour d’autres projets basés sur Arduino). Cette approche élimine le besoin de saisir vos informations d’identification dans chaque croquis, tout en empêchant la divulgation accidentelle des détails de votre compte personnel lors du partage de votre code. Cela s’applique également à d’autres données sensibles, telles que les clés API, les jetons, etc.

Ce tutoriel a été rédigé par l’un de nos lecteurs, Ron Brinkman, et édité par Sara Santos.
Pourquoi enregistrer vos informations d’identification dans un fichier séparé ?
De nombreux projets que vous créez nécessitent des noms de compte, des mots de passe, des jetons ou d’autres informations sensibles pour fonctionner.
Ceux-ci peuvent être sécurisés s’ils ne quittent jamais votre bureau, mais il peut être trop facile d’oublier et de publier ou de distribuer un fichier de script contenant vos informations d’identification personnelles plutôt que l’espace réservé prévu « REPLACE_WITH_YOUR_PASSWORD ».
Vous pouvez résoudre ce problème en plaçant vos informations d’identification dans un fichier distinct de votre dossier de bibliothèques et en incluant une référence à ce fichier dans votre lancement d’esquisse. De cette façon, vos informations d’identification privées ne s’échapperont pas accidentellement de votre bureau et seront automatiquement incluses lorsque vous compilerez votre croquis.
De plus, cette méthode supprime le besoin de coder en dur les informations d’identification ou les jetons API chaque fois que vous compilez une nouvelle esquisse qui les nécessite.
Vous aimerez peut-être aussi lire : Fonctions utiles de la bibliothèque Wi-Fi ESP32 (Arduino IDE)
Aperçu du projet
Voici un bref aperçu du fonctionnement de notre approche :
- Vos informations d’identification privées, y compris les noms de compte, les mots de passe et les jetons, sont enregistrées dans un fichier de bibliothèque .h, et non dans votre esquisse.
- Le fichier de bibliothèque est #inclus au début de votre esquisse.
- L’esquisse est modifiée pour faire référence au nom #défini des informations privées contenues dans le fichier de bibliothèque, en gardant les informations privées hors de votre esquisse.
- Si vous envoyez ou distribuez ensuite votre croquis à quelqu’un d’autre, vous n’avez aucune mesure à prendre pour « nettoyer » le fichier et vous n’aurez jamais à vous soucier de divulguer par inadvertance vos informations personnelles parce que vous avez oublié de modifier le fichier avant de l’envoyer.
Création/Installation de la bibliothèque MyLogin
Nous allons créer une bibliothèque appelée MyLogin qui contiendra les informations d’identification. Vous pouvez lui donner n’importe quel autre nom. Suivez les étapes suivantes pour installer un fichier squelette MyLogin dans votre bibliothèque :
1. Accédez au dossier des bibliothèques Arduino. Vous pouvez trouver le chemin de votre dossier de bibliothèques Arduino en allant dans Fichier > Préférences. Le chemin indiqué dans le champ Emplacement du carnet de croquis correspond à l’emplacement de votre dossier de bibliothèques.

2. Créez un dossier nommé MyLogin dans votre dossier des bibliothèques Arduino IDE.
3. Enfin, copiez le code squelette suivant dans un fichier nommé MyLogin.h dans le dossier MyLogin et enregistrez-le.

/*********
Created by Ron Brinkman
Complete instructions at https://Raspberryme.com/esp32-save-credentials-separate-file/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/
// Keep account names, passwords, tokens, etc. current in this file
// When visiting another location put their credentials in the "currently in effect" section
// Credentials currently in effect
#define STASSID "REPLACE_WITH_YOUR_SSID" // WiFi
#define STAPSK "REPLACE_WITH_YOUR_PASSWORD"
#define emailSenderAccount "[email protected]" // Email
#define emailSenderPassword "YOUR_EMAIL_APP_PASSWORD"
#define emailRecipient "[email protected]"
#define DuckDNStoken "YOUR_DUCKDNS_TOKEN" // DuckDNS
/*********Saved credentials for substitution above when "on the road"
//Credentials used at home
#define STASSID "my_wifi_ssid"
#define STAPSK "my_wifi_password"
#define emailSenderAccount "[email protected]"
#define emailSenderPassword "my_email_app_password"
#define emailRecipient "[email protected]"
#define DuckDNStoken "my_duckdns_token"
// Credentials used at Mom and Dad's house
#define STASSID "parents_wifi_ssid"
#define STAPSK "parents_wifi_password"
// Credentials used at wife's Mom and Dad's house
#define STASSID "wifes_parents_wifi_ssid"
#define STAPSK "wifes_parents_wifi_password"
// Credentials used at our daughter's house
#define STASSID "daughter_wifi_ssid"
#define STAPSK "daughter_wifi_password"
// Credentials used at our son's house
#define STASSID "son_wifi_ssid"
#define STAPSK "son_wifi_password"
// Credentials used at our friends Joe and Sally's house
#define STASSID "friend_wifi_ssid"
#define STAPSK "friend_wifi_password"
*********/
Afficher le code brut
Personnalisez le fichier MyLogin.h avec vos informations d’identification
Ouvrez le fichier squelette MyLogin.h dans le dossier des bibliothèques d’installation de votre Arduino IDE. Suivez les étapes suivantes pour isoler les informations de compte personnel, de mot de passe et de jeton dans ce fichier privé :
1) Modifiez la section Informations d’identification actuellement en vigueur. Écrivez vos informations d’identification réseau dans les instructions de définition suivantes, afin que les applications puissent se connecter à votre réseau local.
// Credentials currently in effect
#define STASSID "REPLACE_WITH_YOUR_SSID" // WiFi
#define STAPSK "REPLACE_WITH_YOUR_PASSWORD"
2) Continuez à modifier ou à ajouter toute autre information d’identification utilisée par vos applications. Cela peut inclure le courrier électronique SMTP, la messagerie SMS, la messagerie Telegram, la messagerie instantanée WhatsApp, Duck DNS, NoIP, DynDNS ou toute autre prise en charge DNS dynamique, etc.
Pour ce didacticiel, nous testerons uniquement les informations d’identification du réseau, mais cela vous donne une idée si vous souhaitez ajouter des informations plus sensibles.
#define emailSenderAccount "[email protected]" // Email
#define emailSenderPassword "YOUR_EMAIL_APP_PASSWORD"
#define emailRecipient "[email protected]"
#define DuckDNStoken "YOUR_DUCKDNS_TOKEN" // DuckDNS
3) Placez éventuellement les informations d’identification dans la section commentée du fichier afin que vous n’ayez pas besoin de les rechercher chaque fois que vous voyagez vers un autre endroit et que vous souhaitez travailler sur votre candidature.
Commencez par une copie de vos identifiants personnels dans le cas où les identifiants actuels sont temporairement écrasés lorsque vous êtes « en déplacement ».
// Saved credentials for substitution above when "on the road"
// Credentials used at home
#define STASSID "my_wifi_ssid"
#define STAPSK "my_wifi_password"
#define emailSenderAccount "[email protected]"
#define emailSenderPassword "my_email_app_password"
#define emailRecipient "[email protected]"
#define DuckDNStoken "my_duckdns_token
4) Continuez à personnaliser avec les informations d’identification de tout autre membre de la famille, d’un ami ou d’un établissement professionnel, selon vos besoins.
// Credentials used at Mom and Dad's house
#define STASSID "wifes_parents_wifi_ssid"
#define STAPSK "wifes_parents_wifi_password"
.
.
.
Enregistrez le fichier contenant désormais vos informations privées. Il est prêt à être utilisé par vos scripts pour garder les informations privées hors des scripts.
Personnalisation de vos fichiers de script
Chaque fichier de script que vous souhaitez protéger contre la divulgation accidentelle de vos informations d’identification nécessitera deux modifications simples. Suivez les étapes suivantes :
1) Placez l’instruction suivante dans votre liste de fichiers #include pour inclure la « bibliothèque » que nous avons créée précédemment :
#include
2) Recherchez l’endroit dans votre fichier de script où votre nom de compte, votre mot de passe, votre jeton ou d’autres informations d’identification seraient normalement saisis. Pour votre compte WiFi, cela ressemblera à ceci :
// Replace with your network credentials
const char* ssid = "REPLACE_WITH_YOUR_SSID";
const char* password = "REPLACE_WITH_YOUR_PASSWORD";
3) Remplacez le texte par ce qui suit :
const char* ssid = STASSID;
const char* password = STAPSK;
Ne remplissez pas vos informations d’identification ici. Ils seront incorporés automatiquement via le fichier MyLogin.h et l’instruction #include. Cela utilisera les valeurs des variables STASSID et STAPSK définies dans le fichier MyLogin.h.
4) Continuez à rechercher d’autres endroits dans votre script où les noms de compte, les mots de passe ou les jetons sont nécessaires pour des applications telles que la messagerie SMTP, la messagerie SMS, la messagerie Telegram, la messagerie instantanée WhatsApp, Duck DNS, NoIP, DynDNS ou toute autre prise en charge DNS dynamique, etc.
Mettez à jour ces sections de code, similaires aux informations d’identification WiFi, pour conserver les informations personnelles hors du script.
Test avec un code de connexion Wi-Fi
Testons ce que nous avons appris jusqu’à présent avec un exemple simple de Wi-Fi.
Le code suivant se connectera à votre réseau local et imprimera le RRSI (force du signal) une fois la connexion établie.
/*********
Created by Ron Brinkman
Complete instructions at https://Raspberryme.com/esp32-save-credentials-separate-file/
*********/
#include
#include
// Replace with your network credentials (STATION)
const char* ssid = STASSID;
const char* password = STAPSK;
void initWiFi() {
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi ..");
while (WiFi.status() != WL_CONNECTED) {
Serial.print('.');
delay(1000);
}
Serial.println(WiFi.localIP());
}
void setup() {
Serial.begin(115200);
initWiFi();
Serial.print("RSSI: ");
Serial.println(WiFi.RSSI());
}
void loop() {
// put your main code here, to run repeatedly:
}
Afficher le code brut
Si vous avez créé avec succès le fichier MyLogin.h comme nous l’avons expliqué précédemment, vous n’avez pas besoin d’ajouter d’informations d’identification à ce code. Il les obtiendra via le fichier MyLogin.h.
Comment fonctionne le code ?
Le fichier MyLogin.h, que vous avez personnalisé selon les instructions ci-dessus, contient désormais toutes vos informations d’identification personnelles. Il n’est plus nécessaire de saisir ces informations d’identification ailleurs, car elles seront incluses automatiquement lors de la compilation du script.
Le fichier de bibliothèque MyLogin.h est désormais intégré de manière sécurisée à votre script lorsqu’il est inclus au début de votre script et contient toutes vos informations d’identification personnelles.
#include
Étant donné que vos informations d’identification sont déjà incorporées dans votre script à partir du fichier MyLogin.h inclus, les informations d’identification sont désormais réellement incorporées dans le script pour être utilisées dans votre programme.
const char* ssid = STASSID;
const char* password = STAPSK;
Si d’autres comptes, mots de passe ou jetons sont utilisés dans les sections suivantes de votre script, ils seront également intégrés en toute sécurité si vous les avez personnalisés et adaptés comme décrit dans les sections précédentes.
Démonstration
Téléchargez votre projet sur votre carte ESP32. Il se connectera à votre réseau local et imprimera la force du signal.

Comme vous pouvez le constater, il n’est pas nécessaire de coder en dur vos informations d’identification réseau dans le code, car elles seront incluses lorsque vous incluez le fichier MyLogin.h. Vous pouvez le faire avec n’importe quel autre code utilisant des informations d’identification Wi-Fi, ou si vous devez enregistrer d’autres informations sensibles telles que des jetons, des API, des mots de passe, etc.
Vos informations privées seront protégées contre toute divulgation accidentelle.
Conclusion
Nous espérons que vous avez trouvé ce projet utile et facile à mettre en œuvre sur tous vos projets. Profitez de la tranquillité d’esprit en sachant que vous pouvez publier ou distribuer le code de vos projets sans craindre de « OUPS, j’ai oublié de supprimer mes informations personnelles ».
De plus, cela évite d’avoir à rechercher les informations d’identification ou les clés API à chaque fois que vous en avez besoin, vous n’avez donc pas besoin de les coder en dur.
Nous avons d’autres tutoriels sur le Wi-Fi qui pourraient être utiles :
Nous espérons que vous avez trouvé ce tutoriel utile.
Un merci spécial à notre lecteur Ron Brinkman qui a créé et rédigé la mise en page de ce didacticiel.
Ron Brinkman est un ingénieur et chef de projet à la retraite qui souhaite se tenir au courant des technologies de sa carrière. Il a utilisé le matériel RNT et W3Schools à bon escient pour redonner aux autres en mettant en œuvre une exposition de Noël animée dans sa cour et pour plaider en faveur de meilleurs résultats dans son pays.
Apprenez-en plus sur l’ESP32 avec nos ressources :
Cette vidéo vous emmène dans l’histoire de Raspberry Pi :

-
ELEGOO 3PCS Carte de Développement ESP32 Type-C, 2,4 GHz WiFi + Bluetooth Dual Core Carte de Contrôle pour Arduino, Support MicroPython, NodeMCU, AP/STA/AP+STA, Puce CP2102
-
ELEGOO 2PCS ESP32 Carte de développement Type-C, 2,4 GHz WiFi + Bluetooth Dual Core Microcontrôleur pour Arduino, Support MicroPython, NodeMCU, AP/STA/AP+STA, Puce CP2102
