2012-08-04 113 views
1

我正在嘗試多線程和密碼破解程序看起來像最簡單(更容易,然後opengl)密集型任務。多線程密碼破解程序

寫一個多線程密碼破解器會值得嗎?它會提高超線程雙核心(4核心)的效率嗎?

讓1個線程生成散列,而另一個線程比較它或在多個線程之間劃分生成會更快嗎?

我知道很多問題,其中任何一個答案都會很好,謝謝。

+4

你有一些合法的理由需要密碼破解?我正在努力想出一個。 – 2012-08-04 16:17:20

+1

我認爲大部分時間都花在生成哈希而不是比較上,所以你的工作分工可能無法工作。我認爲你可以通過將字典或範圍劃分爲不同的線程來分割工作。 – nhahtdh 2012-08-04 16:17:26

+1

@JonSkeet:讓我來解釋一個(非常有效的)理由:對於教育(人們可以學習如何編寫一個非常高效的程序,並且通過線程編程也可以讓自己變得很骯髒)。 – nhahtdh 2012-08-04 16:21:22

回答

0

經過廣泛的研究,我可以說多線程密碼破解程序不是最好的時間使用。

多線程雖然能夠提高資源效率,但在服務器\客戶端交互中也很有用。

在下面的示例中,多線程用於允許服務器同時接受多個客戶端並與之交互。

while (1) { 

    listen(sd,10); 
    cliLen=sizeof(cliAddr); 
    printf("[LISTINING %u][%u]\n",SERVER_PORT,i); 

    //Accept Connection 

    newSd = accept(sd, (struct sockaddr *) &cliAddr, &cliLen); 
    if(newSd < 0) 
    { 
     perror("cannot accept connection"); 
     exit(3); 
    } 

    pthread_create(&pth, NULL, &connectionManager, (void*)newSd); 

    i++;   
} 

.... .... -

int connectionManager(newSd,data){ 


send(newSd,"[Connection Created on New Thread]\n\r",strlen("[Connection Created on New Thread]\n\r"), 0); 
//pthread_create(&pthsend,NULL, &dataSender, (void*)newSd); 
pthread_create(&pthget, NULL, &dataGetter, (void*)newSd); 
pthread_join(pthsend, NULL); 
pthread_join(pthget, NULL); 
close(newSd); 
pthread_exit; 


} 

進一步的研究可以確定一個效率的「甜蜜點」。對於所有盒子,這可能會有所不同。

1

實際上有很多種方法。爲了簡單起見,你應該劃分大部分工作。在這種情況下,很明顯大部分工作都是在計算散列值時完成的。在不明顯的情況下,你會想要分析你的應用程序,並找出大部分時間花在哪裏。但是請記住,許多線程創建/連接都會產生開銷,所以最好在開始工作之前爲每個線程分配一部分工作(如果有人找到了解決方案,可以查看一些受保護的共享變量)。

但是,請注意,根據您嘗試破解的散列類型(我假設您將是暴力破解者),不能保證您的程序將完成。大多數(因此,我的意思是任何實際/有效的)散列算法在計算不可行性的概念下運行。如果你會產生隨機字符串來破解,注意所有的黑客需要做的就是找到一個碰撞。例如,考慮一種情況,其中'貓'和'狗'映射到相同的散列值並且真實密碼是'狗'。如果你的黑客找到'貓'作爲解決方案,這個解決方案也是可行的。然而,這仍然是一個非常困難的問題,也不能保證完成。

另一種選擇是字典攻擊(因爲這是教育 - 這應該是可行的)。如果你正在做一個簡單的字典攻擊,並且這個詞不在字典中,那麼你將會很幸運。不過,這可以保證在字典的末尾完成。爲了實現這一點,最好分割你的字典。如果你有4個線程和一個1000字的詞典,那麼每個線程應該得到不同的字典子集(每個子集有250個條目)。然而,在實踐中,大多數受保護的密碼也可能具有某種形式的鹽(只是需要思考)。

1

最快的多線程設計通常是每個內核一個線程。爲什麼線程交換?要完成的工作量保持不變。在某些情況下,許多線程可以用於緩解設計問題,但是如果要獲得完整性能,則必須滿足設計問題,以便每個內核可以使用一個線程。

核心我通常是指一個單獨的非超線程邏輯核心。當然,存在設計技巧,問題可能是超線程正常工作或需要。