CRC32爆破小結

2021-08-15 18:24:29 字數 2340 閱讀 5911

最近在bugku遇到了一道隱寫題,binwalk之後發現裡面有很多個壓縮包。。。。。。然後就無從下手,於是檢視別人大佬的wp才發現是crc32爆破,由於本人第一次遇到這種題目,就記錄一下吧。。

crc想必大家都知道,它的全稱是迴圈冗餘校驗(cyclic redundancy check, crc),用來校驗檔案是否出錯但並不能用於自動糾錯。。emmmm,計組上課好像講過,老師讓我們回去自己學,記得當時只是初略了解了一下,就是在後面加上一小段冗餘位去檢測,詳細規則谷歌一下吧。。。。

這裡我以破解四位crc的壓縮包為例。。。。寫乙個理解之後的指令碼

#coding:utf-8

import binascii

import string

dic=string.printable #各種列印字元

crc = '''你的輸入 '''

# 記得要以0x開頭

defcrackcrc

(crc):

for i in dic :

for j in dic:

for p in dic:

for q in dic:

s=i+j+p+q

if crc == (binascii.crc32(s) & 0xffffffff):

print s

特別注意

if (binascii.crc32(str(i)) & 0xffffffff) == crc:
在 python 2.x 的版本中,binascii.crc32 所計算出來的 crc 值域為[-2^31, 2^31-1] 之間的有符號整數,為了要與一般crc 結果作比對,需要將其轉為無符號整數,所以加上& 0xffffffff來進行轉換。如果是 python 3.x 的版本,其計算結果為 [0, 2^32-1] 間的無符號整數,因此不需額外加上& 0xffffffff 。

下面就bugku那道多個壓縮包為例,上指令碼

#coding:utf-8

import binascii

import string

import zipfile

# def tansnum(s):

# return int(s, 16) 轉十六進製制

dic=string.printable

defcrackcrc

(crc):

for i in dic :

for j in dic:

for p in dic:

for q in dic:

s=i+j+p+q

if crc == (binascii.crc32(s) & 0xffffffff):

print s

#return

defgetcrc32

(): l=

for b in range(68):

file = 'out' + str(b) + '.zip'

f = zipfile.zipfile(file,'r')

getcrc = f.getinfo('data.txt')

crc = getcrc.crc

return l

if __name__ == "__main__":

#c = open('out.txt', 'w')

l = getcrc32()

for i in l:

crackcrc(i)

#c.close()

如果上面的python操作zip檔案還不太懂的話看看這個:簡單的來說就是用zipfile讀取檔案,用getinfo函式獲取資訊。。。

特別注意,上面的指令碼跑這一題十分慢,我跑了差不多40分鐘都沒跑完。。。效率極低,所以啊有空我還是學習一下多執行緒該怎麼跑。。。

另外還有一款很好用的6位的crc32爆破

附上神器:

具體使用方法:

python crc32.py reverse 你的crc32密文
這裡的密文記得加上0x變成16進製制。。。即可非常迅速的爆破出對應的資料,舉個例子

這裡就有點哈西衝突的體現了^_^

這個crc32爆破一旦超過六位,我覺得毫無疑義,畢竟密碼超過7位你爆破需要花很長的時間,對於這個也一樣。。。。

這就從另外乙個角度詮釋了什麼叫無法破解的密碼(#^.^#),雖然這乙個東西也會出現類似雜湊衝突的現象。。。。。。

參考文章

CRC32學習總結

這幾天一直在研究crc相關的知識,本來通訊網學習過相關的知識,但是比較淺。通過這幾天的尤其是今天的學習,我對於crc有了全新的認識。課本上主要著重介紹直接計算法,就是資料補零再和生成多項式做除法。這種方法利用迴圈來實現是比較容易的,但是在fpga中,想要利用硬體的併發性來實現crc的計算。最近一直在...

CRC32演算法實現

crc32 檢錯能力極強,開銷小,易於用編碼器及檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的機率僅為0.0047 以下。從效能上和開銷上考慮,均遠遠優於奇偶校驗及算術和校驗等方式。因而,在資料儲存和資料通訊領域,crc無處不在 著名的通訊協議x.25的fcs 幀檢錯序列 採用的是crc cc...

CRC32繞過RAR密碼

遇到一道題,加密了50位。所以,爆破果斷捨棄 事實上,rar的壓縮文件中是提供乙個crc32的值,這個值是文件在壓縮之前的crc32值,相信很多人都知道 每個不同的檔案都有唯一的乙個crc32值,就算是可能有重複的,那麼在內容為1 49的這個小範圍內的txt文字也不會有重複。題目提示6位純數字,上指...