Pertanyaan Bagaimana saya bisa memecahkan kode string base64 dari baris perintah?
Saya ingin menulis skrip bash untuk memecahkan kode string base64. Misalnya saya mengetik decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==
dan itu dicetak Aladdin:open sesame
dan kembali ke prompt.
Sejauh ini saya telah mencoba file bash sederhana yang berisi python -m base64 -d $1
tetapi perintah ini mengharapkan nama file bukan string. Apakah ada perintah non-interaktif lainnya (tidak harus dalam modul Python) yang dapat saya jalankan dari baris perintah untuk mencapai ini, tanpa harus menginstal paket tambahan? (Atau jika saya lakukan, sesuatu yang super-minimal.)
319
2017-08-21 12:17
asal
Jawaban:
Cukup gunakan base64
program dari coreutils
paket:
echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | base64 --decode
Atau, untuk menyertakan karakter baris baru
echo `echo QWxhZGRpbjpvcGVuIHNlc2FtZQ== | base64 --decode`
output (termasuk baris baru):
Aladdin:open sesame
483
2017-08-21 13:34
openssl juga dapat mengkodekan dan memecahkan kode base64
$ openssl enc -base64 <<< 'Hello, World!'
SGVsbG8sIFdvcmxkIQo=
$ openssl enc -base64 -d <<< SGVsbG8sIFdvcmxkIQo=
Hello, World!
EDIT: Contoh di mana string berenkode base64 berakhir pada beberapa baris:
$ openssl enc -base64 <<< 'And if the data is a bit longer, the base64 encoded data will span multiple lines.'
QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
$ openssl enc -base64 -d << EOF
> QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv
> ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=
> EOF
And if the data is a bit longer, the base64 encoded data will span multiple lines.
75
2017-08-21 22:23
Di sini kamu pergi!
Tambahkan yang berikut ini ke bagian bawah Anda ~/.bashrc
mengajukan:
decode () {
echo "$1" | base64 -d ; echo
}
Sekarang, buka Terminal baru dan jalankan perintah.
decode QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Ini akan melakukan persis apa yang Anda minta dalam pertanyaan Anda.
32
2017-08-21 13:39
Dengan dependensi asli Anda dimungkinkan untuk melakukan ini dengan sedikit modifikasi pada skrip asli Anda:
echo $1 | python -m base64 -d
Jika Anda tidak melewatkan nama file, modul python itu membaca dari input standar. Untuk menyalurkan parameter pertama ke dalamnya, Anda dapat menggunakannya echo $1 |
.
18
2017-10-05 12:15
Saya melakukan komentar baris perintah base64 di http://wiki.opensslfoundation.com/index.php?title=Command_Line_Utilities.
Jadi saya mengeluarkan Peringatan saat menggunakan decoding opensl base64:
openssl base64 -e <<< 'Welcome to openssl wiki'
V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK
openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK'
Welcome to openssl wiki
PERINGATAN Panjang baris base64 dibatasi hingga 64 karakter secara default di openssl :
openssl base64 -e <<< 'Welcome to openssl wiki with a very long line
that splits...'
V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRo
YXQgc3BsaXRzLi4uCg==
openssl base64 -d <<< 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='
=> TIDAK ADA!
untuk dapat memecahkan kode baris base64 tanpa feed baris yang melebihi 64 karakter menggunakan opsi -A:
openssl base64 -d -A <<<
'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='
Welcome to openssl wiki with a very long line that splits...
Ini lebih baik untuk benar-benar membagi hasil base64 dalam 64 baris karakter karena opsi-A adalah BUGGY (batas dengan file panjang).
12
2018-03-23 18:23
Menggunakan perl
perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)' <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
Atau sama dengan python
python -m base64 -d <<< "QWxhZGRpbjpvcGVuIHNlc2FtZQ=="
4
2017-07-02 20:22
Hanya untuk menambahkan cara lain untuk melakukannya:
emacs -Q --batch -eval '(princ (base64-encode-string (read-string ": ")))'
2
2018-06-15 06:27