當前位置:首頁 » 操作系統 » 暴力破解演算法

暴力破解演算法

發布時間: 2022-04-21 18:43:29

Ⅰ rar密碼破解!已知部分密碼如何盡快進行暴力破解

很可惜,幾乎不可能,除非你知道密碼,或者你擁有超級計算機進行暴力破解。
有興趣的話,請閱讀以下文章,你可能會選擇放棄,或者重建這個古早文件。

一、Rar文件生成的流程。
Winrar加密文件時,總的分兩個步驟:
1:先把源文件壓縮,壓成一段數據段。
2:再將壓縮完的數據段加密。
對於同一個源文件來說,不進行加密,壓縮完,其rar文件中的數據段是一模一樣的。但是如果對同一個源文件來說,即使使用同一個密碼,加密完rar文件中的數據段是不一樣的,這是由於加密的密鑰是依賴於一個Salt(8個位元組的密鑰,用來加密時使用,存放在rar文件頭中里)
所以要解密rar加密文件關鍵在於數據解密這一步,那我們接下來研究一下如何加密的。
二、加密「壓縮完的數據段」的流程
1、獲取密鑰:
將明文的密碼與Salt一起,通過HASH演算法,生成兩個16位元組的密鑰。(一個是KEY(AES演算法的參數),一個是initVector)
2、以Key和initVector來加密壓縮數據:
這里,是一個循環加密的結構,每16位元組作為一個塊,進行加密(這可能正是為什麼加密完的文件長度總為16倍數的原因)。加密採用AES演算法(RAR採用的是AES的rijndael的標准應用)。這里注意:AES加密前,有一個異或運算,是先將每16位元組塊與上一個16位元組塊加密結果進行異或,然後再進行AES演算法的。我用一個簡單的示意代碼看說明:
;===============================================
packblock[0]=packblock[i]^initVector
encryptBlock[0]=AES(packblock[0]);(KEY為AES的密鑰)
fori=1to塊數量-1
packblock[i]=packblock[i]^encryptBlock[i-1]
encryptBlock[i]=AES(packblock[i]);(KEY為AES的密鑰)
next
;packblock[i]表示壓縮完的每16位元組數據
;encryptBlock[i]表示加密完的每16位元組數據
;===============================================
三、解密的過程
由於AES演算法是對稱的,所以解密的過程,是加密過程的逆運算。但解密時AES演算法過程與加密所用的不一樣(是因為解密過程中由KEY生成的子密鑰表不一樣)。仍然需要我們將密碼輸入,與salt一起生成兩個16位元組密鑰,KEY和initVector。
;===============================================
packblock[0]=AES1(encryptBlock[0]);(KEY為AES的密鑰)
packblock[0]=packblock[i]^initVector
fori=1to塊數量-1
packblock[i]=AES1(encryptBlock[i]);(KEY為AES的密鑰)
packblock[i]=packblock[i]^encryptBlock[i-1]
next
;===============================================
那判斷密碼是否正確的在什麼地方呢?
解密的過程是解密後的數據塊進行解壓縮,然後解成源文件,對該文件進行CRC校驗,存在RAR文件中的源文件CRC校驗碼比較,相同則密碼正確,不相同則密碼錯誤。
四、無法秒破的原因
從上面,我們了解了RAR文件的整體思路。地球人都知道,解密時,肯定有個步驟是來判斷密碼的正確與否。而且,依據以往的經驗,我們也許可以將某些判斷的點移動,那樣可以縮減破解的流程思路。那RAR的這一步在哪裡?它把校驗放在了最後的一步。如果要秒破,我們該怎麼做泥?至少我認為目前是不可能的。

Ⅱ 如何用C語言編寫暴力破解壓縮文件解壓密碼的程序

由於有一個重要的Rar文件,極需解開,首先試用了ARPC,但是解壓的速度極慢,每秒只有30個左右,所以斷了窮舉破解的念頭,卻仍不死心,因為我從不崇尚窮舉破解的方法,除非每秒可以跑幾千萬次的,我或許可以一試,所以決定研究一下Winrar3.x密碼演算法,以期是否可以破解該密碼。查看了網路上的資料,包括看雪FAQ里的回答,都聲稱只能用窮舉法破解,起先並不理解,但通過研究,我理解了看雪前輩們在FAQ里所說的原因,不禁讓我佩服

Winrar加密思路的成熟。雖然研究的結果沒有什麼新意,但我還是決定把我的研究結果與大家一起分享,為那些仍然以為winrar密碼可以象破解注冊碼一樣的,通過修改winrar彈出框之類的更改文件流程指向可以達到跳過密碼檢驗的朋友,做一個簡要的說明。

一、Rar文件生成的流程。
Winrar加密文件時,總的分兩個步驟:
1:先把源文件壓縮,壓成一段數據段。
2:再將壓縮完的數據段加密。
對於同一個源文件來說,不進行加密,壓縮完,其rar文件中的數據段是一模一樣的。但是如果對同一個源文件來說,即使使用同一個密碼,加密完rar文件中的數據段是不一樣的,這是由於加密的密鑰是依賴於一個Salt(8個位元組的密鑰,用來加密時使用,存放在rar文件頭中里)
所以要解密rar加密文件關鍵在於數據解密這一步,那我們接下來研究一下如何加密的。
二、加密「壓縮完的數據段」的流程
1、獲取密鑰:
將明文的密碼與Salt一起,通過HASH演算法,生成兩個16位元組的密鑰。(一個是KEY(AES演算法的參數),一個是initVector)
2、以Key和initVector來加密壓縮數據:
這里,是一個循環加密的結構,每16位元組作為一個塊,進行加密(這可能正是為什麼加密完的文件長度總為16倍數的原因)。加密採用AES演算法(RAR採用的是AES的rijndael的標准應用)。這里注意:AES加密前,有一個異或運算,是先將每16位元組塊與上一個16位元組塊加密結果進行異或,然後再進行AES演算法的。我用一個簡單的示意代碼看說明:
;===============================================
packblock[0]=packblock[i]^initVector
encryptBlock[0]=AES(packblock[0]) ;(KEY為AES的密鑰)
for i=1to 塊數量-1
packblock[i]=packblock[i]^encryptBlock[i-1]
encryptBlock[i]=AES(packblock[i]);(KEY為AES的密鑰)
next
;packblock[i]表示壓縮完的每16位元組數據
;encryptBlock[i]表示加密完的每16位元組數據
;===============================================
三、解密的過程
由於AES演算法是對稱的,所以解密的過程,是加密過程的逆運算。但解密時AES演算法過程與加密所用的不一樣(是因為解密過程中由KEY生成的子密鑰表不一樣)。仍然需要我們將密碼輸入,與salt一起生成兩個16位元組密鑰,KEY和initVector。

;===============================================
packblock[0]=AES1(encryptBlock[0]) ;(KEY為AES的密鑰)
packblock[0]=packblock[i]^initVector
for i=1to 塊數量-1
packblock[i]=AES1(encryptBlock[i]) ;(KEY為AES的密鑰)
packblock[i]=packblock[i]^encryptBlock[i-1]

next
;===============================================
那判斷密碼是否正確的在什麼地方呢?
解密的過程是解密後的數據塊進行解壓縮,然後解成源文件,對該文件進行CRC校驗,存在RAR文件中的源文件CRC校驗碼比較,相同則密碼正確,不相同則密碼錯誤。

四、無法秒破的原因
從上面,我們了解了RAR文件的整體思路。地球人都知道,解密時,肯定有個步驟是來判斷密碼的正確與否。而且,依據以往的經驗,我們也許可以將某些判斷的點移動,那樣可以縮減破解的流程思路。那RAR的這一步在哪裡?它把校驗放在了最後的一步。如果要秒破,我們該怎麼做泥?至少我認為目前是不可能的。
我們從解密過程逆反過來看看:
1、CRC檢驗這一塊修改跳轉?根本毫無意義,因為它已經是最後一步了。你可以修改RAR文件頭的CRC值,你可以將它改得和你用任意密碼解壓出來的文件CRC值一樣,但你的文件根本就不是原來的文件了。可能已經完全面目全非了。所以,對這一過程不可行。CRC校驗本身是不可逆的
2、那麼把判斷提前到壓縮完的數據?
解壓的時候,有沒有什麼來判斷壓縮數據是否正確?壓縮完的數據,有沒有固定的特徵,是否可以做為解壓的判斷,在這一步里,我們也無法找到有效的可用的固定特徵。因為這一步涉及到RAR的壓縮演算法。即使一個源文件,即使你的文件前一部分是完全相同的,只對後面的部分進行改過,那麼壓縮完,數據也是完全一樣的。因為壓縮完的數據首先是一個壓縮表,後面是編碼。文件不一樣,掃描完的壓縮表也不一樣,編碼又是依賴於壓縮表,所以,這里頭找不到壓縮完的數據有任何的固定特徵可以用來判斷的。
不管壓縮數據是什麼樣的,Winrar都一如既往地進行解壓,沒有進行壓縮數據是否有效的判斷。
3、那假如我們破解了AES了泥?
由於AES只依賴於KEY,如果AES演算法被破解了,我們知道了KEY,我們可以解出壓縮完的數據,但是這里有一個問題,還有一個initVector密鑰,用來第一個16位元組塊的異或,你沒有initVector參數,你第一個16位元組塊的數據便無法解得出來。
4、那就只能從第一步Hash的演算法入手
即使你能破解hash,但hash後的結果泥?沒有結果,你怎麼返推密碼。

所以綜上,我發現rar的加密是由hash和AES兩種演算法互相牽制,而兩種演算法當前都無法破解,至少目前還沒有辦法秒破,也理解了看雪高手講的道理。
五、對窮舉提高演算法效率的一些設想。
我用匯編寫完了RAR窮舉解密的演算法模塊,但是如何提高效率,優化窮舉的速度泥?我有如下的想法:
1、從壓縮數據里找尋特徵,省掉解壓縮、CRC檢驗代碼和生成initVector生成代碼。目前,通過多次實驗,我找到的一個特徵(不知道這個是否正確),即解密完的最後一個16位元組塊的最後一個位元組必須為0。因為經過多次的試驗,我發現有加密的數據段長度都會比未加密前的數據長,那麼,最後一個

16個位元組的數據塊解密完,多出的部分就都為0,但多出幾個位元組泥?多次實驗,長度不一,我試想著從加密數據段最後一個16個位元組塊著手,只解這一塊,看是否一個位元組為0,這樣,只解密16個位元組的數據,來大大提高效率?如果能進行到這一步了,再通過解全部數據,進行CRC校驗的判斷。
2、如果第一個特徵不成立的話,針對特定格式的壓縮文件,比如doc、jpg等,部分數據固定,壓縮完的數據是否存在相互牽制的數據?從而把判斷提前,這一步,我不知道如何找到壓縮完的數據是否存在相互牽制的數據。

Ⅲ 密碼的暴力破解使用的是( )演算法。 A.解析法 B.窮舉法 C.分治法D

B
窮舉法,或稱為暴力破解法,是一種針對於密碼的破譯方法,即將密碼進行逐個推算直到找出真正的密碼為止。例如一個已知是四位並且全部由數字組成的密碼,其可能共有10000種組合,因此最多嘗試10000次就能找到正確的密碼。理論上利用這種方法可以破解任何一種密碼,問題只在於如何縮短試誤時間。因此有些人運用計算機來增加效率,有些人輔以字典來縮小密碼組合的范圍。

Ⅳ 什麼是暴力破解,掩碼破解,字典破解

暴力破解、字典破解都是用窮舉法。這個方法很笨,但是破解率高。字典破解在使用不同的元素組合生成字典,然後用字典進行必要的破解。本人曾經忘記了某論壇上的密碼,通過使用木頭字典生成自己的密碼字典,然後找回密碼了。這個窮舉演算法用途挺廣泛的。

Ⅳ 什麼叫暴力演算法

當前對於各種加密演算法.除了有針對性的破解演算法,最基本的思想就是窮舉密鑰進行匹配,通常稱為暴力破解演算法。由於暴力破解演算法包含密鑰個數較多,遍歷的時間超過實際可接受的范圍。如果計算速度提高到足夠快。這種遍歷的演算法因結構設計簡便而具有實際應用的前景。

Ⅵ 對稱加密無法被暴力破解嗎

是。
無法破解,美國人計算過一千億台高級計算機同時私鑰破解也需要好幾年,而且公鑰是無法破解的,因為根本沒有入口給你。
密碼演算法暴力破解是密碼學的一個重要分支,對稱密碼演算法暴力破解方法和實現進行了歸類和分析,重點就基於分布式計算的軟體實現進行了深入研究,同時分析了軟體和硬體實現的優缺點,並按照對稱密碼演算法的分類對暴力破解研究現狀和進展進行了詳盡的分析,最後對對稱密碼演算法暴力破解技術前景進行了總結,並指明了下一步的發展方向。

Ⅶ C++題目;小明撿到了一個手機,屏幕點亮後需要輸入解鎖密碼才能開鎖。手機的解鎖密碼由8個數字組成……

#include<bits/stdc++.h>
using namespace std;
const int mxn=2e5+5;
string ans;
int main(){
ios_base::sync_with_stdio(false);
cin>>ans;
int cnt=0;
string tmp;
for(char a='0';a<='9';++a){
for(char b='0';b<='9';++b){
if(b==a)continue;
for(char c='0';c<='9';++c){
if(c==a or c==b)continue;
for(char d='0';d<='9';++d){
if(d==a or d==b or d==c)continue;
for(char e='0';e<='9';++e){
if(e==a or e==b or e==c or e==d)continue;
for(char f='0';f<='9';++f){
if(f==a or f==b or f==c or f==d or f==e)continue;
for(char g='0';g<='9';++g){
if(g==a or g==b or g==c or g==d or g==e or g==f)continue;
for(char h='0';h<='9';++h){
if(h==a or h==b or h==c or h==d or h==e or h==f or h==g)continue;
tmp="";
tmp+=a;tmp+=b;tmp+=c;tmp+=d;tmp+=e;tmp+=f;tmp+=g;tmp+=h;
++cnt;
if(tmp==ans){
cout<<cnt<<endl;
return 0;
}
}
}
}
}
}
}
}
}
}

Ⅷ 扇區暴力破解時間

暴力解除需要好幾年,所以一般只用暴力破解的方式掃描扇區默認密鑰或弱密鑰作為其他攻擊方法的輔助。
暴力破解法:卡屬於被動式智能卡,電源由讀卡器提供,與讀卡器斷開連接後就無法保存數據,也不存在嘗試多次密鑰錯誤後鎖死卡片的可能,所以針對這一特性我們可以使用暴力破解法,更換密鑰循環測試直到扇區驗證通過。但是讀卡器與卡片的通信有延時,枚舉某一扇區的密鑰A或密鑰B共有248即281474976710656種可能性_,假設每次驗證密鑰需要1ms時間,也需要8296年才能暴力破解出一個扇區的一種密鑰,在M1卡的加密演算法被公開之前,窮舉每一位去暴力破解M1卡密鑰是不可能的。當M1卡的演算法被攻破後,很多發卡商的M1卡都受到了攻擊,攻擊者利用獲得密鑰構建了密鑰庫,而由於M1卡的密鑰不能像網路賬戶一樣隨時更換,很多發卡商又使用了統一的密鑰,因此可以通過遍歷已有密鑰庫中密鑰的方式來解開一部分M1卡的密鑰。對於那些未受到密鑰泄露影響的M1卡,即使知道了Crypto-1演算法,再配合高性能計算機輔助運算,仍需要幾十個小時的時間才能解開非典型密鑰,所以一般只用暴力破解的方式掃描扇區默認密鑰或弱密鑰作為其他攻擊方法的輔助。

Ⅸ 求大神幫忙寫一個暴力破解演算法,c或Java都行,密碼由數字和字母組成,最大密碼長度10位最小一位

import org.junit.Test;

public class T {

//最小長度
private int min = 1;
//最大長度
private int max = 10;
//准備數字,大小寫
private char[] psw = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

@Test
public void t(){
for(int i=min; i<=max; i++){
permutation(psw, i);
}
}

/**
* 全排列入口
* @param array 密碼數據
* @param n 密碼長度
*/
private void permutation(char[] array, int n) {
permutation("", array, n);
}

/**
*
* @param s 已生成臨時字串
* @param array 密碼數據
* @param n 剩餘未生成的字元長度
*/
private void permutation(String s, char[] array, int n) {
if(n == 1) {
for(int i=0; i<array.length; i++) {
//這是密碼結果
String result = s+array[i];
System.out.println(result);
}
} else {
for(int i=0; i<array.length; i++) {
permutation(s+array[i], array, n-1);
}
}
}

}

不過建議不要暴力,有針對性會好一點

Ⅹ 對稱加密演算法無法被暴力破解

是的。
不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。
加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文。收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。

熱點內容
如何在伺服器上掛傳奇網站 發布:2024-10-01 18:55:28 瀏覽:60
android通訊錄項目 發布:2024-10-01 18:41:42 瀏覽:96
安卓手機視頻通話錄音在哪裡找 發布:2024-10-01 18:15:13 瀏覽:551
鴻蒙安卓ios哪個好用 發布:2024-10-01 18:06:38 瀏覽:561
linuxphpmemcache 發布:2024-10-01 18:05:15 瀏覽:144
阿里巴巴如何上傳圖片 發布:2024-10-01 18:00:26 瀏覽:820
圓球型編程 發布:2024-10-01 17:55:31 瀏覽:722
手電筒源碼 發布:2024-10-01 17:19:05 瀏覽:291
哪個軟體可以緩存英文字幕 發布:2024-10-01 17:15:13 瀏覽:410
python轉int 發布:2024-10-01 17:03:01 瀏覽:946