Blog ENI : Toute la veille numérique !
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici
🎁 Jusqu'au 31/12, recevez notre
offre d'abonnement à la Bibliothèque Numérique. Cliquez ici

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 « = ».

images/32RI01.png

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).

images/32RI02.png

 Allez dans le champ texte Encode to Base64 format.

images/32RI03.png

 Saisissez le texte mentionné plus haut : Automatisez votre quotidien avec PowerShell et gagnez en efficacité.

images/RI32_img1.png

 Cliquez sur le bouton ENCODE.

images/32RI05.png

Le texte va être encodé et disponible dans le champ texte :

images/32RI06.png

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.

images/32RI07.png

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 :

images/RI32_img4.png

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€" ...