筆者在撰寫「網站滲透測試實務入門」和「Kali 滲透測試工具」這兩書時,對於 rtgen 指令只輕輕帶過,因為個人覺得多數人應該不需要探究 rtgen 產生檔案的名稱之邏輯,所以對於參數「Part_index」只用「檔案的後綴字,要用怎樣的文字數值都可以」簡略帶過。感謝讀者 Shive Hsu 指正,讓我重新正視這個問題。
Part_index 依照官網的說明「To store a large rainbow table in many smaller files, use different
number in this parameter for each part and keep all other parameters
identical.」,就是將一個很大的彩虹表分成許多個小檔,對於不同的檔案使用不同的數值做為識別。相信很多人跟我一樣,不清楚它說的意思是什麼。當初寫書,限於篇幅(其實也是自己不求甚解),並未仔細說明,此次藉著 Shive Hsu 指正的機會,把 Part_index 說明白。
先來看看下面的指令及其輸出畫面:
- rtgen md5 numeric 6 6 0 400 1000 0
- rainbow table md5_numeric#6-6_0_400x1000_0.rt parameters
- hash algorithm: md5
- hash length: 16
- charset: 0123456789
- charset in hex: 30 31 32 33 34 35 36 37 38 39
- charset length: 10
- plaintext length range: 6 - 6
- reduce offset: 0x00000000
- plaintext total: 1000000
- sequential starting point begin from 0 (0x0000000000000000)
- generating...
- 1000 of 1000 rainbow chains generated (0 m 0.1 s)
- 第一行是我們的指令及參數「rtgen md5 numeric 6 6 0 400 1000 0」,用來產生 md5 的彩虹檔,有關純文字字串是由 numberic 組成,長度從 6 到 6。
- 第3到13行,可以得到雜湊的相關資訊。
- 第11行告訴我們總共會有1000000 條文字組合。
- 第13行告訴我們這個檔案是從1000000 條文字組合中的指標 0 開始計算(因為 part_index=0)
- 第15行告訴我們這個檔案總共計算了 1000 條文字組合。
所以要完全計算這些組合就需要 1000000 / 1000 = 1000 ,就是要有 1000 檔案,也就是 part_index 要從 0 到 999。那如果 part_index 不是 0 到 999 之間的數值,或是使用其他文字呢?rtgen 會直接採用「0」做為 part_index,所以參數 Part_index 指定任何文字給它,程式執行也不會發出錯誤訊息。
不知看到這裡,您是否能感受到當 part_index =1 時,第13行的值是多少? 1000,不錯,就是1000。也就是當 part_index=1時,會從文字組合的指標1000開始計算雜湊。因為 Part_index =0 是算 0~999 條的文字,所以 part_index=1 會算 1000~1999 條的文字。
沒有留言:
張貼留言