Здравствуйте!
Есть один архив на который я поставил пароль и как на зло забыл. Но я знаю примерно из чего состоит пароль, то есть, какие там слова и цифры, но не знаю в каком порядке они идут. Смотрел программы которые перебирают пароли, но не нашёл такой которая бы перебирала пароли не по символьно а из готовых слов и цифр (дат). Решил сам написать программу которая бы это делала, долго думал не знал как составить алгоритм, но всё же получилось.
Я бы хотел узнать может у кого есть идеи как сделать перебор быстре, или другой более лучший алгоритм.
И ещё при переборе файл из архива каждый раз распаковывается и если парольне подходит удаляется, на это тоже уходит время, может кто нибудь знает можно ли сделать так чтобы программа пробовала расшифровать единожды распакованный файл.
Содержание файла mask.txt :
Есть один архив на который я поставил пароль и как на зло забыл. Но я знаю примерно из чего состоит пароль, то есть, какие там слова и цифры, но не знаю в каком порядке они идут. Смотрел программы которые перебирают пароли, но не нашёл такой которая бы перебирала пароли не по символьно а из готовых слов и цифр (дат). Решил сам написать программу которая бы это делала, долго думал не знал как составить алгоритм, но всё же получилось.
Я бы хотел узнать может у кого есть идеи как сделать перебор быстре, или другой более лучший алгоритм.
И ещё при переборе файл из архива каждый раз распаковывается и если парольне подходит удаляется, на это тоже уходит время, может кто нибудь знает можно ли сделать так чтобы программа пробовала расшифровать единожды распакованный файл.
Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <array.au3>
#Include <rar.au3>
$form1 = guicreate('program', 500, 200, -1, -1)
$lbl = guictrlcreatelabel('', 20, 20, 400, 50)
$in = guictrlcreateinput('', 20, 80, 150, 20)
$but = guictrlcreatebutton('Вперёд', 180, 80, 80, 20)
guisetstate(@SW_SHOW)
guictrlsetdata($in, @scriptdir & '\')
global $num[1], $l = 1, $aPasswords[2]
$file = fileopen('mask.txt')
while 1
$line = filereadline($file, $l)
if @error = -1 then exitloop
$aPasswords[$l] = $line
redim $aPasswords[ubound($aPasswords)+1]
$l += 1
wend
fileclose($file)
for $i = 0 to ubound($aPasswords)-1
$num[$i] = 0
redim $num[ubound($num)+1]
if $i = ubound($aPasswords)-1 Then
$num[$i] = 1
EndIf
Next
$ubound = ubound($aPasswords)-1
while 1
$msg = guigetmsg()
switch $msg
case $GUI_EVENT_CLOSE
exit
case $but
$list = rar_getfileslist(guictrlread($in))
$list = stringsplit($list, @cr, 2)
redim $list[ubound($list)-1]
while 1
for $i = 0 to $ubound
$num[$ubound] += 1
if $i = 0 and $num[$i] = $ubound Then
msgbox(0,'', 'Пароль не найден')
exitloop 2
elseif $num[$i] >= $ubound Then
$num[$i] = 0
$num[$i-1] += 1
EndIf
$txt = ''
for $j = 0 to $ubound-1
$d = $num[$j]
$txt &= $aPasswords[$d]
next
next
$test = rar_extract(guictrlread($in), $list[0], @scriptdir & '\recovery', $txt)
if $test = 0 Then
msgbox(0, '', 'Пароль найден' & @crlf & 'пароль: ' & $txt)
exitloop
Else
guictrlsetdata($lbl, 'Пароль не подходит' & @crlf & $txt)
endif
wend
endswitch
wend
Содержание файла mask.txt :
Код:
sasha
02
07
89
19
0
01
&