我正在做一個任務,我有一個passwd文件,我將在其中找到所有密碼。他們中的大多數人很容易與傑克鬆土和一些調整,但額外的信貸要求我找到一個由rand生成的perl 5.10.0的8字節字母數字密碼,並用crypt加密。 我想出了三種方式來處理這個:在perl 5.10.0中反向rand,任何人都知道在哪裏可以找到rand/srand的源代碼?
- 蠻力:62^8 =計算中300周我的機器上。我可以 在一週內租用一臺服務器,使用我的機器功率300倍。 不知何故,這感覺就像一個 額外的信貸浪費資源/電力。
歇地穴:不知道就這一個,我卻產生了 的字符集,從我發現對方的密碼,降低了增量 蠻力〜5天,但我認爲,只有當這方面的工作 密碼只包含前面的字符(17 純文本),所以也許如果我運氣好的話! (可能性很小)
歇蘭特:如果我能找到用於生成 密碼相同的種子。然後,我可以生成字典給傑克。爲了讓 得到給我的文件的種子,但我必須 瞭解Perl是如何創建種子(如果它甚至可能在5.10.0 )。
從我在早期的Perl版本中研究過的只有系統時間被用作種子。我製作了一個腳本,該腳本在給予我的密碼文件(+ -10以確保雖然我確信該文件已在一秒內生成)上使用m_time
(Time From Epoch)作爲種子來生成字典,並以此格式,因爲我不知道在我rand()
密碼什麼叫真正開始:
ABCDEFGH
bcdefghi
cdefhijk
我餵了字典傑克。當然這不起作用,因爲在Perl 5.004 Perl之後使用其他東西(我的問題的要點)來生成種子。
所以,我的問題是,如果有人知道在哪裏可以找到Perl用來生成種子的源代碼,和/或rand/srand的源代碼。我一直在尋找的東西,看起來像這樣,但對於5.10.0版本:
What are the weaknesses of Perl's srand() default seed, post version 5.004?
我試圖在/lib/perl
目錄用grep但我得到的所有#define
結構的文件丟失。
如果您認爲我完全偏離了任務和/或有關此事的任何建議,請隨時告訴我。
但是如果密碼是在windows上生成的,那麼(在更新的perls之前)你只有15位的隨機值(並且沒有額外的種子,afaik),這是另一個故事 – ysth
感謝您的快速響應。在我標記爲已回答之前,我將使用未來幾天的信息。我還沒有嘗試基於GPU的,所以我會研究它。由於之前做過這些的人的提示,我專注於srand/rand方面,但在我看來,除非他使用「使用5.004」那麼沒有足夠的(簡單)打破蘭德的方法。 – Reni
花了一個星期後,我終於明白perl rand的工作原理了。
1)在perl的第一個rand將調用srand(),它使用整數值作爲種子(2^32)的可能性,但是REAL種子有2個未使用的尾部字節。 2)每一個rand實際上都會使用UNIX drand48()並在文檔後改變種子。 – Reni