2015年5月17日 星期日

有關彩虹表的 rtgen 指令進一步說明

筆者在撰寫「網站滲透測試實務入門」和「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 說明白。
先來看看下面的指令及其輸出畫面:
  1. rtgen md5 numeric 6 6 0 400 1000 0
  2.  
  3. rainbow table md5_numeric#6-6_0_400x1000_0.rt parameters
  4. hash algorithm:         md5
  5. hash length:            16
  6. charset:                0123456789
  7. charset in hex:         30 31 32 33 34 35 36 37 38 39
  8. charset length:         10
  9. plaintext length range: 6 - 6
  10. reduce offset:          0x00000000
  11. plaintext total:        1000000
  12. sequential starting point begin from 0 (0x0000000000000000)
  13. generating...
  14. 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 條的文字。

沒有留言:

張貼留言