b64
b64 est un petit outil en ligne de commande pour encoder et décoder du texte en base64, en respectant l'encodage UTF-8. Il est écrit en Python, n'utilise que la bibliothèque standard (aucune installation de paquet supplémentaire), et tient dans un seul fichier.
Il sert à transformer un texte (avec accents, emoji, tirets cadratins, symboles mathématiques…) en une chaîne base64 « propre » — c'est-à-dire une chaîne sur une seule ligne, composée uniquement de lettres, de chiffres et de quelques signes (+, /, =) — puis à faire l'opération inverse.
Pourquoi cet outil existe
Le base64 est un encodage qui représente n'importe quelle suite d'octets avec un alphabet restreint et « sans surprise ». Comme il ne contient ni espace, ni retour à la ligne, ni caractère accentué, il se transporte et se colle sans se déformer : c'est précieux quand on doit faire passer du texte d'un endroit à un autre (un terminal, un chat, un fichier de configuration) sans risquer de perdre des retours à la ligne ou de voir un caractère spécial mal interprété.
Le piège classique, c'est l'encodage des caractères. Un é, un 🅰️ ou un — ne tient pas sur un seul octet : en UTF-8, ils occupent plusieurs octets. Un encodeur base64 qui ne sait pas qu'il travaille en UTF-8 peut produire un résultat illisible au décodage (le fameux « mojibake »). b64 lit et écrit toujours en UTF-8, ce qui évite ce piège.
Enfin, b64 applique une règle de prudence : le résultat (le base64, ou le texte décodé) est écrit sur la sortie standard (stdout), pur, sans rien autour, pour qu'on puisse le copier ou le rediriger tel quel. Les informations de contrôle (nombre de lignes, nombre d'octets) sont écrites séparément, sur la sortie d'erreur (stderr). C'est un filet de sécurité : on voit tout de suite si le compte de lignes correspond à ce qu'on attend, sans polluer la valeur qu'on copie.
Ce qu'il fait
- Encoder du texte en base64 (depuis la ligne de commande, un fichier, ou un tube/pipe).
- Décoder du base64 en texte UTF-8 (même si le base64 a été remis en forme sur plusieurs lignes).
- Fonctionner en mode interactif (un menu) quand on le lance sans argument.
- Afficher un filet de vérification (compte de lignes et d'octets) sur stderr.
Ce qu'il ne fait pas (volontairement)
- Il ne touche pas au réseau : tout se passe en local, sur ta machine.
- Il ne devine pas l'encodage : c'est UTF-8, point. (C'est un choix, pas un oubli.)
- Il ne remplace pas un éditeur de texte : c'est un convertisseur, pas un outil d'édition.
Installation
Prérequis : Python 3 (présent sur Termux après pkg install python, et sur la plupart des systèmes). Aucune dépendance externe : la bibliothèque standard suffit.
- Placer le fichier b64 quelque part, par exemple dans ~/bin/.
- Le rendre exécutable : chmod +x ~/bin/b64.
- S'assurer que le dossier est dans le PATH (sinon, l'ajouter dans ~/.bashrc) :
~~~bash grep -q 'HOME/bin' ~/.bashrc || echo 'export PATH="$HOME/bin:$PATH"' ~/.bashrc export PATH="$HOME/bin:$PATH" which b64 ~~~
La commande which b64 doit afficher le chemin du fichier (par exemple /data/.../home/bin/b64).