WinRAR密碼破解
WinRAR是大家常用的壓縮工具,它的加密功能更是受到大家的青睞;現在我就來簡單的教 教大家破解加密的壓縮文檔(rar,zip) 恩,先把代碼給大家把(這是經我研究幾天的成果,希望能對大家有所幫助) ”””””””””””””””代碼如下 ‘本段程序由方窗原創,僅供學習參考,如果轉帖請註明作者… ‘方窗主頁: [url]http://blog.csdn.net/fangchuang[/url] ‘方窗QQ : 353237850 ‘大家不妨也嘗試着自己做做,或修改本代碼。 ‘大家注意路徑這個代碼中輸入的路徑不能含有空格(包括名字)否者會找不到路徑。 ‘爲了解決速度問題,採用了分段破譯,具體請大家自己體會啦(精華哦!~~~) ‘—title是我做的標題,在輸出輸入框中你會發現它。 title=”WinRaR破譯(目前只做了破譯數字)” ‘—下面是我調用的申明 set WshShell = CreateObject(”WScript.Shell” ) set fso = CreateObject(”scripting.filesystemobject”) ‘—下面是我用於輸入信息的模式,同時在輸入完後會執行後面的函數動作 Function input() rar_path=InputBox(” 請輸要解密的rar或zip入路 徑”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”例 如:C:\jiemi.rar或C:\jiemi.zip”,title) If rar_path=”" Then Exit Function End If If fso.fileExists(rar_path) Then num1=InputBox(”密碼長度最小值”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”例如:0″,title) If rar_path=”" Then Exit Function End If num2=InputBox(”密碼長度最大值”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”注意:比密碼最小值要大”,title) If rar_path=”" Then Exit Function End If If num2 > num1 Then speed=InputBox(”請選擇解密的速度(建議選3)”&Chr(13)&Chr(10)&”密碼範圍短則建議選選小 於3(默認爲3)”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”1: 一倍速度”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”2:二倍速 度”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”3:三倍速 度”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”4:四倍速 度”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”5:五倍速 度”,title) code num1,num2,rar_path,speed ‘重要函數調用 Else msg2=MsgBox (”請注意最大值要大於最小值”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”是否重新輸入”,1,title) If msg2=1 Then input() End If End If Else msg1=MsgBox (”您輸入的路徑不正確”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”是否重新輸入”,1,title) If msg1=1 Then input() End If End If End Function ‘—這是個用於銜接的函數,講主題與輸入框掛鉤,在input()函數中你能發現它,這個選擇句函數肩負的丟用最重要的函數結構import(形參…) Function code(num1,num2,rar_path,speed) Select Case speed Case “1″ import 1,num1,num2,rar_path Case “2″ import 2,num1,num2,rar_path Case “3″ import 3,num1,num2,rar_path Case “4″ import 4,num1,num2,rar_path Case “5″ import 5,num1,num2,rar_path End Select End Function ‘—所有的關鍵都是爲了調用下部函數做的鋪墊,你能發現我利用For循環來定義我的數組,同時對每個數組也執行相應的動作(很方便,建議大家學會) Function import(number,num1,num2,rar_path) On Error Resume Next Dim cipher(100),count(100),Result(100) pathname=fso.getbasename(rar_path) winrar=”C:\PROGRA~1\WinRAR\WinRAR.exe” For i=1 To number If i = 1 Then count(i) = num1 Else count(i) = (Int(num2*(i-1)/number)+1) End If Next For counter = num1 To Int(num2/number) For j=1 To number cipher(j)=Array(count(j)) Result(j)=WshShell.Run (winrar&” e -inul -p”&cipher(j)(0)&” “&rar_path&” “&pathname&”\”,1,true) if Result(j) = 0 Then MsgBox “★密碼破解成功★”&Chr(13)&Chr(10)&”"&Chr(13)&Chr(10)&”密碼:”&cipher(j)(0),,title wscript.quit end If count(j)=count(j)+1 Next Next End Function ‘—這裏的細節也不多說了,主要還是時間問題,大家應該都是高手,一目瞭然,下面的就是實現整體掛鉤後的丟用函數了… input() ”””””””””””””””代碼結束 下面我們討論下關於破譯WinRAR的特點: 我先聲明下,WinRAR可以說現在還沒有人能夠秒破,至於聽說如美國情報機構,完成了對RAR文件 的秒破,還有在臺灣一論壇上看到,有人提到RAR文件被人秒破過,我不太相信,我覺得美國情報局這樣的機構,有可能可以秒破,但應該是建立在已經通過非常 規手段,跑出一份對應表,只做查詢密碼纔有可能做到。 無法秒破也就意味着要花費大量的時間去破譯一個加密的壓縮文檔(破譯一個10多位的密碼數字和字母組合的大概要幾年) 現在大家普遍的技術都是窮舉破解(暴力破解) 至於我的這段小代碼也屬於窮舉法,我這裏因爲時間關係就沒做字母窮舉破解了(目前這段代碼只實現了數字窮舉),不過我這裏也給大家提供下思路。 一.至於字母的窮舉大多的破譯器用的都是字典爆破法: 就是事先將一些可能性較大的一些字符寫入一些文檔裏,破譯時再到這些特定的文檔裏去掃描字符(字符爲一行一行的),將這些字符一一的去嘗試(所謂暴力)。 這裏我可以介紹大家一款軟件“RAR Password Recovery”,這個軟件很好的用到了字典爆破的方法破譯字母,特別是在這個軟件的文件夾下還有個已經做好的字典“english”,大家不妨試試。 二.這裏我也說說我的思路: 大家完全可以利用ASCII字符集,這可是一個非常豐富的字符資源,不僅能解決字母,甚至是符號。下面我就和大家說說把。 以上的代碼用到了幾個重要的循環來解決複雜的動作,同樣字符也可以用到這樣的循環;chr(),asc(); 大家應該不陌生把,這些可以實現字符與數字的轉換,下面你只要做的就是,將這些數字段處理好就行了。 例如: Dim MyChar MyChar = Chr(65) ‘返回 A。 MyChar = Chr(97) ‘返回 a。 MyChar = Chr(62) ‘返回 >。 MyChar = Chr(37) ‘返回 %。 大家只需要將這些鍵控代碼用循環來控制就行了,如果第一位循環完了沒有完成密碼破譯,就在整個循環體的前面直接連接一個字符(大家最好是把這個字符也做個內循環),再次進行大的循環,就這樣依次下去,終會把密碼破譯出來,只是時間的問題了。 *這裏提醒大家,我不會幫大家做這段破譯字符的代碼,思路已經給大家了,主要是靠大家自己完成,目的 也只有一個,提高大家的編程能力,這對你我都有好處。如果實在要問,我告訴大家,其實整體的思路已經融入到了以上提供給大家的源碼裏,只要大家稍微修改是 能夠做出完美的破譯工具的,如果大家有什麼更好的方法或建議,歡迎與我討論,這裏也謝謝大家的支持。 介紹給大家個網站,也許對大家研究破譯WinRAR會有幫助… |