Base64 est un mécanisme de codage conçu à l’origine pour coder des données binaires au format texte. D’abord utilisé dans le système de messagerie qui nécessitait l’envoi de pièces jointes binaires telles que des images et des documents RTF (Rich Text Format) au format ASCII.
Base64 est également couramment utilisé dans les applications Web, non pas pour coder des données binaires, mais pour masquer des éléments tels que les valeurs de paramètres de requête, les sessions, etc. Vous savez peut-être que la sécurité par déguisement n’est d’aucune utilité. Dans ce cas, les développeurs ne sont généralement pas conscients du fait que même un homme légèrement qualifié peut décoder la valeur cachée, déguisée en chaîne de caractères Base64.
Le codage Base64 est utilisé pour coder des supports tels que des images, des polices, etc. via des URI de données.
Les fonctions JavaScript Se connecter pour voir le code et Se connecter pour voir le code permettent respectivement de coder et décoder des chaînes codées en Base64. Si vous êtes plutôt PHP, vous trouverez les fonctions Se connecter pour voir le code et Se connecter pour voir le code.
Dans ce post, on va essayer d’expliquer ce que les fonctions de codage / décodage font en réalité.
Le jeu de caractères du codage Base64
Le codage Base64 utilise 64 caractères ASCII imprimables. Le jeu de caractères suivant est utilisé pour coder du binaire en texte:
- les lettres de A à Z
- les lettres de a à z
- + (le symbole “plus”)
- / (le symbole slash)
- = (le symbole égal)
Le tableau suivant est utilisé pour l’indexation des valeurs en leurs alternatives de codage Base64 respectives:
[Se connecter pour voir le lien]
Le processus de codage
Le processus de codage est le suivant:
- Les données binaires ou non binaires sont lues de gauche à droite
- Trois données distinctes de 8 bits de l’entrée sont jointes pour former un groupe de 24 bits
- Le groupe de 24 bits est divisé en groupes individuels de 6 bits, soit 4 groupes
- Chaque groupe de 6 bits est converti au format codé en Base64 à l’aide de la table de recherche précédente
Exemple
Prenons le mot Se connecter pour voir le code. Nous allons créer un tableau pour illustrer plus facilement le processus:
Par conséquent, l’équivalent Base64 pour Se connecter pour voir le code devient Se connecter pour voir le code.
Cependant, un problème survient lorsque les groupes de caractères ne remplissent pas exactement le modèle 24 bits. Un exemple: considérons le mot Se connecter pour voir le code. Nous ne pouvons pas diviser ce mot en groupes de 24 bits de manière égale. Hypothétiquement, le premier groupe de 24 bits est le groupe Se connecter pour voir le code et le second groupe Se connecter pour voir le code, où Se connecter pour voir le code (le point d’interrogation) signifie un caractère manquant de 8 bits.
C’est à cet endroit que le mécanisme de rembourrage de Base64 entre en jeu.
Le rembourrage en Base64
Partout où il y a un caractère manquant (8 bits) dans la formation des groupes de 24 bits, le symbole Se connecter pour voir le code est ajouté. Donc, pour un caractère manquant, Se connecter pour voir le code est utilisé; pour chaque deux caractères manquants Se connecter pour voir le code est utilisé:
Voilà, c’est ce que j’ai trouvé d’intéressant à partager aujourd’hui.
Post Scriptum: ceci est une traduction de Base64 encoding extrait de Modern Web Penetration Testing 2016 de Prakhar Prasad, page 14 à 16