PowerShell et Base64
Qu’est-ce que Base64 ?
1. C’est quoi ?
Base64 est une méthode d’encodage d’informations, telles que des binaires, du texte, des images… Il s’agit d’un encodage de caractères ne contenant que des lettres, chiffres et symboles comme « / », « = » ou « + ».
Coder en Base64 revient à encoder quelque chose dans une suite de caractères qui pourront ensuite être décodés afin de le retranscrire dans son format d’origine.
Pourquoi le chiffre 64 ?
Le chiffre 64 provient du fait que l’encodage en Base64 utilise 64 caractères (disponibles sur la majorité des systèmes) avec un 65e qui est toujours le même et est « = ».
Source : https://fr.wikipedia.org/wiki/Base64
2. Avantages
L’utilisation de l’encodage en Base64 permet de facilement convertir du contenu en une suite de caractères, c’est-à-dire du simple texte.
Cette suite de caractères peut donc ensuite être copiée dans un script pour l’utiliser par la suite.
Cela peut être utile par exemple pour :
-
convertir une image,
-
convertir un exécutable,
-
convertir une DLL,
-
convertir un script.
Convertir une image en Base64 permet par exemple de pouvoir utiliser une image dans une interface graphique sans avoir à intégrer l’image...
Encoder/décoder en Base64
Encoder en Base64 ou décoder du Base64 vers le contenu d’origine peut être réalisé facilement et même sans coder, ce qui est tout de même moins drôle pour nous. Pour cela, de nombreux sites internet existent pour faire ces actions.
Dans l’exemple suivant, nous allons utiliser le site suivant : https://www.base64encode.org/
Celui-ci permet d’encoder et de décoder en Base64 très facilement.
1. Encodage depuis le site
a. Encoder du texte
Prenons le texte « Automatisez votre quotidien avec PowerShell et gagnez en efficacité. »
Nous allons maintenant l’encoder en Base64, comme ci-dessous :
Allez sur le site https://www.base64encode.org/
Cliquez sur le bouton Encode (tout en haut).
Allez dans le champ texte Encode to Base64 format.
Saisissez le texte mentionné plus haut : Automatisez votre quotidien avec PowerShell et gagnez en efficacité.
Cliquez sur le bouton ENCODE.
Le texte va être encodé et disponible dans le champ texte :
L’encodage Base64 correspondant à notre texte est donc :
QXV0b21hdGlzZXIgdm90cmUgcXVvdGlkaWVuIGF2ZWMgUG93ZXJTaGVsbCBldCBnYWduZXIgZW4gZWZmaWNhY2l0w6ku
b. Encoder un fichier PNG
Dans l’exemple suivant, nous allons encoder l’image suivante en Base64.
Nous procéderons de la manière suivante :
Cliquez sur le bouton Encode.
Allez vers le bas de la page...
Encoder et décoder avec PowerShell
1. Encodage en Base64 avec PowerShell
Nous avons vu comment procéder via un site internet, voyons maintenant comment faire de même uniquement avec PowerShell.
a. Encodage de texte
Comme précédemment, nous allons encoder le texte "Automatisez votre quotidien avec PowerShell et gagnez en efficacité."
Nous allons procéder comme ci-dessous :
Intégrez votre texte dans une variable $Texte.
$Texte = "Automatisez votre quotidien avec PowerShell et gagnez en
efficacité."
Utilisez la classe [System.Text.Encoding].
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Texte)
L’encodage se fera de la manière suivante :
$Encodage =[Convert]::ToBase64String($Bytes)
Ci-dessous le code complet :
$Texte = "Automatisez votre quotidien avec PowerShell et gagnez en
efficacité."
$Bytes = [System.Text.Encoding]::UTF8.GetBytes($Texte)
$Encodage =[Convert]::ToBase64String($Bytes)
$Encodage
Ci-dessous le résultat :
On peut également imaginer encoder un mot de passe en Base64 afin de pouvoir l’intégrer dans un script.
Attention, cela n’en reste pas moins une mauvaise pratique car du code Base64 peut être facilement décodé.
Prenons le mot de passe P@$$w0rd12€. Ci-dessous le code pour encoder ce mot de passe :
$Password = "P@$$w0rd12€" ...