572 votes

Comment puis-je décoder une chaîne base64 à partir de la ligne de commande?

Je voudrais écrire un script bash pour décoder une chaîne base64. Par exemple, je tape décoder QWxhZGRpbjpvcGVuIHNlc2FtZQ== et cela affiche Aladdin:open sesame et revient à l'invite de commande.

Jusqu'à présent, j'ai essayé un simple fichier bash contenant python -m base64 -d $1 mais cette commande s'attend à un nom de fichier et non une chaîne. Y a-t-il une autre commande non interactive (pas nécessairement dans un module Python) que je peux exécuter depuis la ligne de commande pour y parvenir, sans avoir besoin d'installer des paquets supplémentaires? (Ou si nécessaire, quelque chose de super-minimal.)

1 votes

Belle question. Et merci pour votre suggestion, je sais maintenant que le python -m base64 -h peut être utile.

5voto

A.B. Points 84870

Utilisation de perl

perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)' <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

Ou la même chose avec python

python -m base64 -d <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="

3voto

keno Points 1682

Juste pour ajouter une autre manière de le faire :

emacs -Q --batch  -eval '(princ (base64-encode-string (read-string ": ")))'

0voto

eigenfield Points 320

J'ai eu quelques moments de frustration avec celui-ci parce que l'outil Linux base64 et également openssl peuvent décoder, en effet. Mais j'ai ce fichier encodé en base64 particulier qui se décode pour une valeur légèrement erronée. Les quelques octets correspondent, mais ensuite il y a la présence de EF BF BD EF BF BD lorsque je regarde dans l'outil de visualisation hexedit. Ensuite, la séquence suivante d'octets correspond à nouveau lorsqu'elle est comparée à la sortie attendue correctement décodée. Ces séquences étranges d'octets ont été insérées entre les deux, parfois seulement sous forme de EF BF BD.

Pour résoudre le problème, j'ai dû regarder comment l'expéditeur Java l'encodait et j'ai créé un petit décodeur base64 en Java. Et maintenant je peux décoder jusqu'à la valeur attendue.

Voici le petit extrait qui le fait : https://gist.github.com/typelogic/0567cdab6c15487c31496cb90006ff52

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X