Saya ingin menulis skrip bash untuk memecahkan kode string base64. Misalnya saya ketik decode QWxhZGRpbjpvcGVuIHNlc2FtZQ== dan mencetak 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 lain (tidak harus dalam modul Python) yang dapat saya jalankan dari baris perintah untuk mencapai ini, tanpa harus menginstal paket tambahan? (Atau jika saya melakukannya, sesuatu yang super-minimal.)
EDIT: contoh di mana string yang dikodekan base64 berakhir di beberapa baris:
$ openssl enc -base64 <<< 'And if the data is a bit longer, the base64 encoded data will span multiple lines.'QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNvZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=$ openssl enc -base64 -d << EOF> QW5kIGlmIHRoZSBkYXRhIGlzIGEgYml0IGxvbmdlciwgdGhlIGJhc2U2NCBlbmNv> ZGVkIGRhdGEgd2lsbCBzcGFuIG11bHRpcGxlIGxpbmVzLgo=> EOFAnd if the data is a bit longer, the base64 encoded data will span multiple lines.
Dengan dependensi asli Anda, Anda dapat 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 menggunakan echo $1 |.
openssl base64 -e <<< 'Welcome to openssl wiki' V2VsY29tZSB0byBvcGVuc3NsIHdpa2kKopenssl 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 umpan baris yang melebihi 64 karakter Gunakan-opsi :
openssl base64 -d -A <<<'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='Welcome to openssl wiki with a very long line that splits...
Ini lebih baik untuk sebenarnya membagi base64 menghasilkan 64 karakter baris karena-opsi bermasalah ( batas dengan file panjang ).
Aku punya beberapa saat rambut-menarik yang satu ini karena base64 Alat Linux dan juga openssl dapat memecahkan kode, memang. Tetapi saya memiliki file yang dikodekan base64 khusus ini yang menerjemahkan ke nilai yang sedikit salah. Beberapa byte cocok, tetapi kemudian ada kehadiran ini EF BF BD EF BF BD ketika saya melihat di hexedit penampil. Dan kemudian urutan byte berikutnya Cocok lagi jika dibandingkan dengan output yang diharapkan diterjemahkan dengan benar. Ini urutan aneh byte mendapat dimasukkan dalam di-betweens, kadang-kadang sebagai EF BF BD hanya.
Untuk mengatasi masalah ini, saya harus melihat bagaimana pengirim Java mengkodekannya dan kemudian saya membuat decoder java base64 kecil. Dan sekarang saya bisa diterjemahkan ke nilai yang diharapkan.