linux解码base64工具,如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)...

如何解码Linux中的base64编码行?(How do I decode base64 encoded lines in linux?)

我正在尝试读取文件并仅提取base64编码部分。 我通过使用sed来查找模式的'base64'和' - '之间的界限。

我能够这样做使用

sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^\s*$/d'

但是当我尝试使用base64解码它时,如下所示,

sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^\s*$/d' | base64 -d

我收到一条错误消息: -

BEGIN:VCALENDAR

METHOD:REQUEST

PRODID:Microsoft Exchangbase64: invalid input

请让我知道我做错了什么,是否有更好的方法来实现最终结果。 任何帮助表示赞赏。

I am trying to read a file & extract only the base64 encoded part. I am doing so by using sed to find the lines between the pattern's 'base64' & '--'.

I am able to do so using

sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^\s*$/d'

But when i try to decode it using base64 as shown below,

sed -e '1,/base64/d' -e '/--/,$d' file.txt | sed '/^\s*$/d' | base64 -d

I get an error message as :-

BEGIN:VCALENDAR

METHOD:REQUEST

PRODID:Microsoft Exchangbase64: invalid input

Please let me know what am i doing wrong and is there an alternate, better way to achieve the end result. Any help is appreciated.

原文:https://stackoverflow.com/questions/41983454

更新时间:2019-12-25 19:04

最满意答案

我得到了这个问题。 文件中的行如下所示

QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ

XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG

最后有一个结束字符,所以我所要做的就是删除它。 因此,现在我的代码看起来如下&它的工作原理: -

sed -e '1,/base64/d' -e '/--/,$d' _12829640_21.12.-.5p.meeting.room_1485234639532_1.mail | sed '/^\s$/d' | tr -d "\n\r" | base64 -d

I got the issue. the lines in the files were as follows

QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ

XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG

There was an end line character at the end, so all i had to do was remove it. Hence, now my code looks as below & it works :-

sed -e '1,/base64/d' -e '/--/,$d' _12829640_21.12.-.5p.meeting.room_1485234639532_1.mail | sed '/^\s$/d' | tr -d "\n\r" | base64 -d

2017-02-02

相关问答

实际上Windows确实有一个实用程序来编码和解码base64 - CERTUTIL 我不知道什么版本的Windows引入了这个命令。 要对文件进行编码: certutil -encode inputFileName encodedOutputFileName

要解码文件: certutil -decode encodedInputFileName decodedOutputFileName

CERTUTIL有许多可用的动词和选项。 要得到几乎所有可用动词的列表: certutil -?

...

您可以使用以下正则表达式来检查字符串是否是base64编码的: ^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$

在base64编码中,字符集是[AZ, az, 0-9, and + /] 。 如果剩余长度小于4,则字符串用'='填充。 ^([A-Za-z0-9+/]{4})*表示字符串以0个或更多个base64组开头。 ([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|

...

从v6起,Java SE随附JAXB。 javax.xml.bind.DatatypeConverter具有使方便的静态方法。 请参阅parseBase64Binary()和printBase64Binary() 。 As of v6, Java SE ships with JAXB. javax.xml.bind.DatatypeConverter has static methods that make this easy. See parseBase64Binary() and printB

...

所以你发送请求: http://host:port/myServlet?content=base64_encoded_value

这是由servlet中的方法使用的: protected void doGet(HttpServletRequest request, HttpServletResponse response) {

让我们来看看你在做什么: String content = request.getParameter("content");

似乎字符串内容现在将包含“bas

...

不要将(可能的)二进制文件转换为UTF-8 String ; 而是用FileUtils.writeByteArrayToFile(File, byte[])写byte[] byte[] decodedBytes = Base64.getDecoder().decode(contents.trim());

// String decodedString = new String(decodedBytes);

// FileUtils.write(file,decodedString,"UTF-8")

...

我得到了这个问题。 文件中的行如下所示 QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVRVUVTVA0KUFJPRElEOk1pY3Jvc29mdCBFeGNoYW5nZSBTZ

XJ2ZXIgMjAxMA0KVkVSU0lPTjoyLjANCkJFR0lOOlZUSU1FWk9ORQ0KVFpJRDpBVVMgRWFzdGVybiBTdG

最后有一个结束字符,所以我所要做的就是删除它。 因此,现在我的代码看起来如下&它的工作原理: - sed -e '1,/base6

...

您可以将其写入文件,就像您可以编写任何其他数据一样。 但是,您需要将文件句柄设置为二进制 。 my $decoded= MIME::Base64::decode_base64($photo);

open my $fh, '>', 'photo.jpg' or die $!;

binmode $fh;

print $fh $decoded;

close $fh

You can write it to a file just like you can write any other data. Yo

...

不幸的是,Base64不是base64。 实现中可能存在差异。 一些实现例如插入行在编码时每76个字符中断,有些则不然。 Base64 is not base64 unfortunately. There may be differences in the implementations. Some implementation for example insert line breaks every 76 characters when encoding, some don't.

似乎最终的A是多余的: In [4]: base64.b64decode('aHR0cDovLzR1ZnJlZS50ay9tZWRpYTcyMzY0Ni9mdWVuZi8wMzYubXAz')

Out[4]: 'http://4ufree.tk/media723646/fuenf/036.mp3'

It would appear that the final A is superfluous: In [4]: base64.b64decode('aHR0cDovLzR1ZnJlZS50ay9tZ

...

这是一些Python代码,它接受命令行上的搜索词后面的文件名。 像往常一样,如果arg包含空格,则必须引用它。 import sys

from base64 import b64decode

fname, pattern = sys.argv[1:]

with open(fname) as f:

for row in f:

row = b64decode(row).decode()

if pattern in row:

print(

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值