今天在拉钩上找工作时,有一家公司职位详情写了“投递简历前,请base64decode以下内容”。于是就试了试。发现无法赋值便在cmd里纯手打deocde。。。
'5aaC5p6c5L2g5ZKM5oiR5Lus5LiA5qC354Ot54ix57yW56CB77yM55e06L+35LqO5bel56iL5oqA5pyv77yM6K+35YaZ5LiA5bCB6YKu5Lu277yM566A5Y2V5LuL57uN5L2g6Ieq5bex77yM6Z2e5bi45pyf5b6F5pS25Yiw5L2g55qE5p2l5L+hOiBsaWFvaHVxaXVAZ21haWwuY29tCkhhcHB5IGNvZGluZyE='
不得不吐槽一下,拉钩I的大写字母和L的小写字母是一摸一样的,找了好长时间问题
首先import一下python自带的库base64
import base64
调用其b64decode方法,进行base64的编解码
base64.b64decode('5aaC5p6c5L2g5ZKM5oiR5Lus5LiA5qC354Ot54ix57yW56CB77yM55e06L+35LqO5bel56iL5oqA5pyv77yM6K+35YaZ5LiA5bCB6YKu5Lu277yM566A5Y2V5LuL57uN5L2g6Ieq5bex77yM6Z2e5bi45pyf5b6F5pS25Yiw5L2g55qE5p2l5L+hOiBsaWFvaHVxaXVAZ21haWwuY29tCkhhcHB5IGNvZGluZyE=')
解析后得到
b'\xe5\xa6\x82\xe6\x9e\x9c\xe4\xbd\xa0\xe5\x92\x8c\xe6\x88\x91\xe4\xbb\xac\xe4\xb8\x80\xe6\xa0\xb7\xe7\x83\xad\xe7\x88\xb1\xe7\xbc\x96\xe7\xa0\x81\xef\xbc\x8c\xe7\x97\xb4\xe8\xbf\xb7\xe4\xba\x8e\xe5\xb7\xa5\xe7\xa8\x8b\xe6\x8a\x80\xe6\x9c\xaf\xef\xbc\x8c\xe8\xaf\xb7\xe5\x86\x99\xe4\xb8\x80\xe5\xb0\x81\xe9\x82\xae\xe4\xbb\xb6\xef\xbc\x8c\xe7\xae\x80\xe5\x8d\x95\xe4\xbb\x8b\xe7\xbb\x8d\xe4\xbd\xa0\xe8\x87\xaa\xe5\xb7\xb1\xef\xbc\x8c\xe9\x9d\x9e\xe5\xb8\xb8\xe6\x9c\x9f\xe5\xbe\x85\xe6\x94\xb6\xe5\x88\xb0\xe4\xbd\xa0\xe7\x9a\x84\xe6\x9d\xa5\xe4\xbf\xa1: liaohuqiu@gmail.com\nHappy coding!'
最后再转为utf-8,decode方法默认utf-8,所以可以不用指定,这里我指定了。
base64.b64decode('5aaC5p6c5L2g5ZKM5oiR5Lus5LiA5qC354Ot54ix57yW56CB77yM55e06L+35LqO5bel56iL5oqA5pyv77yM6K+35YaZ5LiA5bCB6YKu5Lu277yM566A5Y2V5LuL57uN5L2g6Ieq5bex77yM6Z2e5bi45pyf5b6F5pS25Yiw5L2g55qE5p2l5L+hOiBsaWFvaHVxaXVAZ21haWwuY29tCkhhcHB5IGNvZGluZyE=').decode('utf-8')
转换后得到,\n是换行
'如果你和我们一样热爱编码,痴迷于工程技术,请写一封邮件,简单介绍你自己,非常期待收到你的来信: liaohuqiu@gmail.com\nHappy coding!'
下面我写一些由于敲错了字母找问题的经历吧。。
下面是我一开始打的字符串,有三处错误:原“6K+3”我打成了小写k,原“6Ieq”和“lGNv”打成了小写l。
s="5aaC5p6c5L2g5ZKM5oiR5Lus5LiA5qC354Ot54ix57yW56CB77yM55e06L+35LqO5bel56iL5oqA5pyv77yM6k+35YaZ5LiA5bCB6YKu5Lu277yM566A5Y2V5LuL57uN5L2g6leq5bex77yM6Z2e5bi45pyf5b6F5pS25Yiw5L2g55qE5p2l5L+hOiBsaWFvaHVxaXVAZ21haWwuY29tCkhhcHB5lGNvZGluZyE="
进行base64编解码的时候是不会报错误的
b'\xe5\xa6\x82\xe6\x9e\x9c\xe4\xbd\xa0\xe5\x92\x8c\xe6\x88\x91\xe4\xbb\xac\xe4\xb8\x80\xe6\xa0\xb7\xe7\x83\xad\xe7\x88\xb1\xe7\xbc\x96\xe7\xa0\x81\xef\xbc\x8c\xe7\x97\xb4\xe8\xbf\xb7\xe4\xba\x8e\xe5\xb7\xa5\xe7\xa8\x8b\xe6\x8a\x80\xe6\x9c\xaf\xef\xbc\x8c\xeaO\xb7\xe5\x86\x99\xe4\xb8\x80\xe5\xb0\x81\xe9\x82\xae\xe4\xbb\xb6\xef\xbc\x8c\xe7\xae\x80\xe5\x8d\x95\xe4\xbb\x8b\xe7\xbb\x8d\xe4\xbd\xa0\xeaW\xaa\xe5\xb7\xb1\xef\xbc\x8c\xe9\x9d\x9e\xe5\xb8\xb8\xe6\x9c\x9f\xe5\xbe\x85\xe6\x94\xb6\xe5\x88\xb0\xe4\xbd\xa0\xe7\x9a\x84\xe6\x9d\xa5\xe4\xbf\xa1: liaohuqiu@gmail.com\nHappy\x94coding!'
在转utf-8时会报错误,分别报了三个错误。通过排查发现是因为"6k+3"转为了\xeaO,“6Ieq”转为了\xeaW,“lGNv”转为了\x94。
'utf-8' codec can't decode byte 0xea in position 63: invalid continuation byte
'utf-8' codec can't decode byte 0xea in position 99: invalid continuation byte
'utf-8' codec can't decode byte 0x94 in position 165: invalid start byte
忽略掉错误后,大致是可以看懂说了什么的。
'如果你和我们一样热爱编码,痴迷于工程技术,�O�写一封邮件,简单介绍你�W�己,非常期待收到你的来 信: liaohuqiu@gmail.com\nHappy�coding!'
猜测一下这三个空应该是“请”,“自”,空格。然后找到错误改了就成了
>>> base64.b64encode('请'.encode())
b'6K+3'
>>> base64.b64encode('自'.encode())
b'6Ieq'
>>> base64.b64encode(' '.encode())
b'IG=='