利用base64庫暴力破解base加密


做個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即可解決

 

結果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM