Eu gostaria de escrever um script bash para decodificar uma string base64. Por exemplo, digito decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==
e ele imprime Aladdin:open sesame
e retorna ao prompt.
Até agora, tentei um arquivo bash simples que continha, python -m base64 -d $1
mas esse comando espera um nome de arquivo e não uma string. Existe outro comando não interativo (não necessariamente em um módulo Python) que eu possa executar na linha de comando para conseguir isso, sem precisar instalar nenhum pacote extra? (Ou se eu fizer, algo super-mínimo.)
command-line
bash
david.libremone
fonte
fonte
base64 -d <<< QWxhZGRpbjpvcGVuIHNlc2FtZQ==
echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | "C:\Program Files\Git\usr\bin\base64" --decode 2> nul > example.txt
No Windows com base64 do git.Just use
, porque muitas pessoas conhecem obase64
programa - mas como não se pode simplesmente inserir uma string como opção de linha de comando, é difícil obter a sintaxe correta para os usuários que tocam na CLI apenas de vez em quando.pbpaste | base64 --decode
.O openssl também pode codificar e decodificar base64
EDIT: Um exemplo em que a cadeia codificada base64 termina em várias linhas:
fonte
coreutils
um pacote de "adicional" que contém programas comols
,mkdir
,cp
,mv
, echmod
. Duvido que você possa fazer algo útil com sua máquina sem ela.openssl
tem a vantagem sobre o padrãobase64
de trabalho no Git Bash no Windows, pelo menos a versão 1.8.1 do Git Bash mais antiga que eu instalei.Aqui está!
Adicione o seguinte ao final do seu
~/.bashrc
arquivo:Agora, abra um novo terminal e execute o comando
Isso fará exatamente o que você pediu na sua pergunta.
fonte
Com suas dependências originais, é possível fazer isso com uma pequena modificação no seu script original:
Se você não passar um nome de arquivo, esse módulo python lê a partir da entrada padrão. Para canalizar o primeiro parâmetro nele, você pode usar
echo $1 |
.fonte
Eu comentei a linha de comando base64 em http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities . Então, emito um aviso ao usar a decodificação openssl base64:
aviso: o comprimento da linha base64 é limitado a 64 caracteres por padrão no openssl :
=> NADA!
para poder decodificar uma linha base64 sem avanço de linha que exceda 64 caracteres, use a opção -A:
De qualquer maneira, é melhor dividir o resultado base64 em linhas de 64 caracteres, já que a opção -A é BUGGY (limite com arquivos longos).
fonte
Usando
perl
Ou o mesmo com
python
fonte
Apenas para adicionar outra maneira de fazer isso:
fonte