Что нового

Подбор пароля к RAR архиву

Статус
Закрыто для дальнейших ответов.

sasha-ld

Новичок
Сообщения
48
Репутация
0
Здравствуйте!
Есть один архив на который я поставил пароль и как на зло забыл. Но я знаю примерно из чего состоит пароль, то есть, какие там слова и цифры, но не знаю в каком порядке они идут. Смотрел программы которые перебирают пароли, но не нашёл такой которая бы перебирала пароли не по символьно а из готовых слов и цифр (дат). Решил сам написать программу которая бы это делала, долго думал не знал как составить алгоритм, но всё же получилось.
Я бы хотел узнать может у кого есть идеи как сделать перебор быстре, или другой более лучший алгоритм.
И ещё при переборе файл из архива каждый раз распаковывается и если парольне подходит удаляется, на это тоже уходит время, может кто нибудь знает можно ли сделать так чтобы программа пробовала расшифровать единожды распакованный файл.

Код:
#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
&
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Это лишь говорит о том, что не нужно ставить пароли на архивы, тем более, что взломать их довольно просто. Второй момент, AutoIt по скорости уступает любому компилируемому ЯП, поэтому возлагать подобные задачи на AutoIt себе дороже выйдет. В сети есть целый вагон аналогичных программ, которые, уверен, помогут вам с распаковкой архива. Обсуждать же эту тему на нашем форуме считаю нецелесообразно.

Тема закрыта.
 
Статус
Закрыто для дальнейших ответов.
Верх