做個base加密題python語法出了一堆錯誤。。。。。
附上py中關於base加密/解碼的知識:http://www.open-open.com/lib/view/open1433990719973.html
題目:
enc1.txt中是: R1lZVElOWlVHWTNFQ05SUkdNWlRLTVJXSU0zREdNWlRHVVlUR01CVUlRMkRJTkpSR05DQT09PT0=
首先學了下python下base的知識 一般用base64庫下的 base64.b64/32/16decode()/encode()就夠用了
看到這個題,第一感覺是base中解密有沒有明顯特征,查了一圈又實驗了幾個發現base64和32加密后結果應該不能分辨,但長度都是4的整數倍,結尾有時會用補=,16可能可辨,數字偏多而且結尾不出現=。
所以直接識別是不行了,那就只能暴力破解了:
用py過程中出了些問題 例如縮進問題,空格和Tab不能混用,一直以為只要相等就沒事,其實不行;文件名不能用python預留的關鍵詞,例如base64這個詞就不行。
代碼如下
import base64 text='R1lZVElOWlVHWTNFQ05SUkdNWlRLTVJXSU0zREdNWlRHVVlUR01CVUlRMkRJTkpSR05DQT09PT0=' for i in range(3): try: if i==0: text=base64.b16decode(text) if i==1: text=base64.b32decode(text) if i==2: text=base64.b64decode(text) except: continue for j in range(3): try: if j==0: text=base64.b16decode(text) if j==1: text=base64.b32decode(text) if j==2: text=base64.b64decode(text) except: continue for k in range(3): try: if k==0: text=base64.b16decode(text) if k==1: text=base64.b32decode(text) if k==2: text=base64.b64decode(text) except:
continue print text
復制過來的代碼縮進可能有些問題
思路就是三層for循環3種base全都試一遍
開始沒有用try/except 結果提示如果不是base16加密,使用base16解密就會出錯,於是用try+continue即可解決
結果如下: