Comment tirer une lettre aléatoire pour créer un mot de passe incrackable – La fonction CAR() d’Excel
Aujourd’hui, je vais vous présenter la fonction CAR() d’Exel, qui permet de retourner un caractère spécifique (une lettre, un chiffre, un signe de ponctuation,…) en fonction d’un argument que nous lui spécifions. Nous verrons que grâce à cette fonction nous allons pouvoir simplement tirer une lettre au hasard, ou encore générer un mot de passe tellement complexe qu’il sera impossible de le deviner.
Téléchargement
Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :
Tutoriel Vidéo
1. Présentation
La fonction CAR(), qui nous intéresse dans le cadre de ce tutoriel permet de générer un caractère particulier, représenté par le jeu de caractère du poste de travail sur lequel celle-ci est utilisée (ANSI ou Macintosh pour les plus répandus).
Dans un précédent tutoriel, nous avons déjà eu l’occasion de découvrir une fonction très proche de la fonction CAR(), il s’agissait de la fonction UNICAR().
Nous avions alors vu que cette fonction UNICAR(), introduite depuis la version 2013 d’Excel permet de récupérer le caractère Unicode qui correspond au nombre spécifié en paramètre.
La principale différence entre ces deux fonctions vient du fait que la fonction CAR() est limitée aux 255 caractères disponibles avec la norme ANSI de Microsoft, là où UNICAR() est tout à fait capable d’en gérer un très grand nombre. De nouveaux caractères étant par ailleurs ajoutés au fil des mises-à-jour de la norme Unicode.
Pour faire simple, la fonction UNICAR() est la version plus moderne de la fonction CAR(),
En dehors de cela, les deux fonctions fonctionnent de la même manière, celles-ci n’attendant qu’un seul argument :
=CAR(A7)
Et :
=UNICAR(A7)
Pour cet exemple, nous cherchons à afficher les 255 caractères retournés par les deux fonctions.
Après avoir saisis la première ligne, il suffit de sélectionner les deux cellules correspondantes et de double cliquer sur la poignée de recopie pour étendre instantanément la formule sur toutes les lignes :
Nous pouvons alors constater que les résultats retournés sont strictement identiques dans les deux colonnes !
Et nous pouvons par ailleurs en tirer deux conclusions.
Tout d’abord, si nous ajoutons une ligne en dessous du tableau avec le nombre 256 saisi dans la première colonne, puis que nous étendons les formules sur cette nouvelle ligne :
Nous allons alors constater que la fonction UNICAR() va nous retourner le caractère « Ā », tandis que la fonction CAR() va retourner une erreur #VALEUR !
La raison est très simple, et comme nous l’avons vu précédemment cette erreur vient du fait que la fonction CAR() ne peut avoir comme argument qu’un nombre compris entre 1 et 255, ce qui correspond à la norme ANSI.
En revanche, la fonction UNICAR() utilisant la norme Unicode, elle est apte à retourner un très nombre de caractères.
Le second point remarquable se trouve sur les premiers caractères :
Nous pouvons ici constater que les premiers caractères ne sont pas directement exploitables, et nous devons nous rendre sur la ligne contenant l’ID 33 pour apercevoir le premier caractère lisible :
2. Tirer un caractère aléatoire
À partir de la table que nous venons de mettre en place, nous pouvons maintenant utiliser la fonction CAR() pour extraire des caractères aléatoirement, en utilisant comme paramètre une valeur tirée elle-même au hasard !
Et pour cela, nous allons utiliser la fonction ALEA.ENTRE.BORNES() que nous avons déjà découverte dans un précédent tutoriel.
Celle-ci permet de récupérer simplement une valeur comprise entre un nombre minimum et un maximum.
Nous avons vu que la fonction CAR() permet de retourner un caractère lisible tant que l’argument est compris entre 33 et 255 :
=CAR(ALEA.ENTRE.BORNES(33;255))
Ensuite, il suffit d’appuyer sur la touche [F9] du clavier pour relancer un nouveau calcul d’Excel et donc modifier la valeur de la cellule :
Si nous souhaitons que le résultat retourné soit uniquement l’une des lettres de l’alphabet, nous allons alors de voir limiter le résultat de la fonction ALEA.ENTRE.BORNES() à un nombre compris entre 65 et 90 :
=CAR(ALEA.ENTRE.BORNES(65;90))
Pour que la lettre tirée soit indifféremment majuscule ou minuscule nous allons devoir ruser légèrement.
En effet, nous venons de voir que les lettres majuscules sont situées aux valeurs 65 et 90 et les lettres minuscules sont quant à elles aux valeurs 97 à 122 :
Soit 32 caractères plus loin dans la liste.
Nous allons donc ajouter à la fonction ALEA.ENTRE.BORNE() un nouveau tirage donc le résultat pourra être égal à 0 ou 1, et ce résultat nous allons simplement le multiplier par 32 (sachant que 0x32 = 0 et 1x32 = 32) :
=CAR(ALEA.ENTRE.BORNES(65;90)+ALEA.ENTRE.BORNES(0;1)*32)
3. Un mot de passe impossible à deviner
Maintenant, en allant un cran plus loin, découvrons comment créer un mot de passe impossible à deviner.
Pour cela, il va simplement suffit d’utiliser les notions que nous venons de découvrir pour récupérer une succession de caractères aléatoires que nous concaténons les uns aux autres avec l’esperluette (ou la fonction CONCATENER()) :
=CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))&CAR(ALEA.ENTRE.BORNES(33;255))
Bien entendu, un mot de passe comme celui-ci est indéchiffrable, mais il est également très difficile à saisir étant constitué de nombreux caractères spéciaux.
Pour en simplifier la saisie, tout en le rendant presque impossible à retrouver, nous allons simplement borner le l’obtention du nombre aléatoire à 126, pour en obtenir le dernier caractère simple à saisir de la liste :
Pour cela, nous sélectionnons deux cellules parmi laquelle se trouve la cellule sur laquelle nous souhaitons effectuer la modification :
Puis, nous appelons la fonctionnalité de remplacement proposée par Excel que nous avons déjà eu l’occasion de découvrir dans un précédant tutoriel, afin de demander à Excel de remplacer tous les nombres « 255 » par des « 126 » :
Et voilà, notre nouveau mot de passe est maintenant près !