Me gustaría escribir un script bash para decodificar una cadena base64. Por ejemplo, escribo decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==
e imprime Aladdin:open sesame
y vuelve al indicador.
Hasta ahora he intentado un archivo bash simple que contiene python -m base64 -d $1
pero este comando espera un nombre de archivo, no una cadena. ¿Hay otro comando no interactivo (no necesariamente en un módulo de Python) que pueda ejecutar desde la línea de comandos para lograr esto, sin tener que instalar ningún paquete adicional? (O si lo hago, algo súper mínimo).
command-line
bash
david.libremone
fuente
fuente
base64 -d <<< QWxhZGRpbjpvcGVuIHNlc2FtZQ==
echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | "C:\Program Files\Git\usr\bin\base64" --decode 2> nul > example.txt
En Windows con git's base64.Just use
, porque muchas personas conocen elbase64
programa, pero como uno no puede simplemente insertar una cadena como opción de línea de comando, es difícil obtener la sintaxis correcta para los usuarios que tocan la CLI solo de vez en cuando.pbpaste | base64 --decode
.openssl también puede codificar y decodificar base64
EDITAR: Un ejemplo donde la cadena codificada en base64 termina en varias líneas:
fuente
coreutils
un paquete "adicional" que contiene programas comols
,mkdir
,cp
,mv
, ychmod
. Dudo que pueda hacer algo útil con su máquina sin ella.openssl
tiene la ventaja sobre el estándarbase64
de trabajar en Git Bash en Windows, al menos la versión anterior 1.8.1 Git Bash que he instalado.¡Aqui tienes!
Agregue lo siguiente al final de su
~/.bashrc
archivo:Ahora, abra una nueva Terminal y ejecute el comando.
Esto hará exactamente lo que pidió en su pregunta.
fuente
Con sus dependencias originales, es posible hacer esto con una modificación menor a su script original:
Si no pasa un nombre de archivo, ese módulo de Python lee de la entrada estándar. Para canalizar el primer parámetro puede usarlo
echo $1 |
.fuente
Comenté la línea de comando base64 en http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities . Entonces, emito una Advertencia cuando uso la decodificación openssl base64:
la longitud de la línea base64 de advertencia está limitada a 64 caracteres por defecto en openssl :
=> NADA!
para poder decodificar una línea base64 sin salto de línea que exceda los 64 caracteres, use la opción -A:
De todos modos, esto es mejor para dividir realmente el resultado de base64 en líneas de 64 caracteres ya que -Una opción es BUGGY (límite con archivos largos).
fuente
Utilizando
perl
O lo mismo con
python
fuente
Solo para agregar otra forma de hacerlo:
fuente