2011-10-14 29 views
0

我有一個base64字符串,其中包含不可打印的字符。Base64編碼修改只是可打印的字符

我想修改只是可打印的一個。但我不能使用base64 -d,因爲我會丟失不可打印的。

這是一個命令,讓我這麼做嗎?

例如,如果我這樣做

echo "base64 string" | base64 -d | od -c 

我獲得

0000000 004 002 254 334 0 202 003 362 \f \0 0 202 003 354 0 202 
0000020 003 350 002 002 006 021 0 - 0 ) 0 036 002 004 A 343 
0000040 271 | 002 003 \0 352 233 002 002 021 340 002 002 \0 232 002 
0000060 001 . 004 006 \0 \f ) 346 353 323 \f \a J 0 0 6 
0000100 0 6 

等等

比方說,我想修改剛剛殲0 0爲J 0 1 .. 。我可以做這個?

UPDATE:

就目前的解決辦法是在轉換和輸出以base64解碼成一個文件,然後用十六進制編輯器進行編輯。

所以,如果你知道一些命令行包含在Linux的十六進制編輯器原生請告訴我

+0

你*解碼*''base64 string'',你是否感到驚訝,你會得到「二進制」數據嗎? – aioobe

+0

@aioobe我知道我正在尋找解決它的問題....我的意思是我不應該使用base64解碼... – Kerby82

+0

和每個字符,即使是不可打印可以寫入根據代碼.... 004不是可打印但代碼是 – Kerby82

回答

1

當我試試我的系統上,我得到

的base64:無效的輸入

由於你只想打印字符,我懷疑你想要的是一個base64編碼的字符串。

如果是這樣,你應該skipe的-d選項:

echo "base64 string" | base64 | od -c 

如果你真的想改變某些字符轉換成其他人,你可以使用tr(翻譯)命令:

man tr

tr - translate o r刪除字符

+0

但在使用base64解碼時,我可能會丟失一些不可打印的字符......這就是發生了什麼...... – Kerby82

+0

'base64' *將任意數據編碼爲可打印字符。 'base64 -d'反轉這個過程。顯然,您可能會因*解碼*而得到不可打印的字符。可以肯定的是,無論你給'base64 |的任何數據base64 -d',你會得到相同的數據。 – aioobe