Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

Как разархивировать RAR архив с паралем?   Найти похожие ветки 

 
NikNet ©   (2005-05-20 00:42) [0]

Могу без пароля но с паролем не могу Помогите кому не лень
что бы не было легче выкладывую все исходники ПЛИЗ ПОМОГИТЕ?

unit Lenin_Unrar;

{$A-,H-}
{$ALIGN OFF}
{$MINENUMSIZE 4}

interface

uses
Windows;

const
ERAR_END_ARCHIVE    = 10;
ERAR_NO_MEMORY      = 11;
ERAR_BAD_DATA       = 12;
ERAR_BAD_ARCHIVE    = 13;
ERAR_UNKNOWN_FORMAT = 14;
ERAR_EOPEN          = 15;
ERAR_ECREATE        = 16;
ERAR_ECLOSE         = 17;
ERAR_EREAD          = 18;
ERAR_EWRITE         = 19;
ERAR_SMALL_BUF      = 20;

RAR_OM_LIST         =  0;
RAR_OM_EXTRACT      =  1;

RAR_SKIP            =  0;
RAR_TEST            =  1;
RAR_EXTRACT         =  2;

RAR_VOL_ASK         =  0;
RAR_VOL_NOTIFY      =  1;

type
RARHeaderData = record
 ArcName  :array [0..259] of char;
 FileName :array [0..259] of char;
 Flags, PackSize, UnpSize, HostOS, FileCRC,
 FileTime, UnpVer, Method, FileAttr: UINT;
 CmtBuf: PChar;
 CmtBufSize, CmtSize, CmtState: UINT;
end;

RAROpenArchiveData = record
 ArcName   :PChar;
 OpenMode  :UINT;
 OpenResult:UINT ;
 CmtBuf    :PChar;
 CmtBufSize:UINT;
 CmtSize   :UINT;
 CmtState  :UINT;
end;

TChangeVolProc = function(ArcName: PChar; Mode: integer): integer cdecl export;
TProcessDataProc = function(Addr: PUCHAR; Size: integer): integer cdecl export;

function RAROpenArchive(var ArchiveDate: RAROpenArchiveData): THandle; stdcall; external "unrar.dll";
function RARCloseArchive(hArcData: THandle): integer; stdcall; external "unrar.dll";
function RARReadHeader(hArcData: THandle; var HeaderData: RARHeaderData): integer; stdcall; external "unrar.dll";
function RARProcessFile(hArcData: THandle; Operation: integer; DestPath, DestName: PChar): integer; stdcall; external "unrar.dll";
procedure RARSetChangeVolProc(hArcData: THandle; ChangeVolProc: TChangeVolProc); stdcall; external "unrar.dll";
procedure RARSetProcessDataProc(hArcData: THandle; ProcessDataProc: TProcessDataProc); stdcall; external "unrar.dll";
procedure RARSetPassword(hArcData: THandle; Password: PChar); stdcall; external "unrar.dll";

implementation

end.

program sample;

uses
Windows, Messages,
Lenin_UnRAR in "Lenin_UnRAR.pas",
Lenin_SysUtils in "..\..\Lenin_SysUtils.pas",
Lenin_Controls in "..\..\Lenin_Controls.pas";

{$R dialog.res} //Подключаем ресурс диалогового окна

procedure UnRAR_EctractFiles(hListBox: HWND; ArcName, Path: Pchar);
var
Err: string;
OperBegin, OperEnd: TTimeStamp;
hArcData: THandle;
RHCode: Integer;
CmtBuf: array [0..16384] of char;
HeaderData: RARHeaderData;
OpenArchiveData: RAROpenArchiveData;
begin
OpenArchiveData.ArcName := ArcName;
OpenArchiveData.CmtBuf := CmtBuf;
OpenArchiveData.CmtBufSize := SizeOf(CmtBuf);
OpenArchiveData.OpenMode := RAR_OM_EXTRACT;

hArcData := RAROpenArchive(OpenArchiveData);
OperBegin := DateTimeToTimeStamp(Now);
RHCode := 0;
 while RHCode = 0 do begin
  RARProcessFile(hArcData, RAR_EXTRACT, Path, nil);
  RHCode := RARReadHeader(hArcData, HeaderData);
   if Pos("\", HeaderData.FileName) > 0 then begin
    ListBox_AddItem(hListBox, "Extract: " + HeaderData.FileName);
    ListBox_SelectedItem(hListBox, ListBox_GetItemCount(hListBox) - 1);
   end;
  OperEnd := DateTimeToTimeStamp(Now);
  ProcessMessages;
 end;
  Str(RHCode, Err);
   if RhCode <> 10 then
    MessageBox(GetActiveWindow, PChar("Ошибка Извлечения!" + #13 + "Код: "
     + Err + #13 + "Файл: " + ArcName), "Ошибка...", MB_OK);
RARCloseArchive(hArcData);
end;

//Функция, обрабатывающая все команды от элементов управления окна
function DlgProc(hWin: HWND; uMsg: UINT; wp: WPARAM; lp: LPARAM): bool; stdcall;
begin
Result := False;
 case uMsg of
  WM_INITDIALOG:
   begin
   end;
  WM_COMMAND:
    case LoWord(wp) of
     //При нажатии на кнопку с идентификатором 4 распаковываем архив
     4:
      begin
       if FileExists(GetCurDir + "sample.rar") then begin
        ListBox_ClearItems(GetDlgItem(hWin, 30));
        UnRAR_EctractFiles(GetDlgItem(hWin, 30), //Хендл ListBox
         PChar(GetCurDir + "sample.rar"), //Имя архива
         PChar(GetCurDir)); //Куда распаковываем архив? GetCurDir - Текущий каталог.
       end;
      end;
     1: EndDialog(hWin, 0); //Заркываем программу
    end;
  //При нажатии на кнопку "Х" в шапке программы закрываем приложение
  WM_DESTROY, WM_CLOSE: PostQuitMessage(0);
end;
end;

begin
//Открываем диалоговое окно MAIN_WINDOW (достаем окно из ресурсов)
DialogBox(hInstance, "MAIN_WINDOW", 0, @DlgProc);

end.


 
VMcL ©   (2005-05-20 11:19) [1]

Искать по фразе "Brute Force"


 
VMcL ©   (2005-05-20 11:20) [2]

P.S. Уже есть готовое решение: cRARk. Но если пароль длинный и никаких подробностей о нём не известно, но можно годы подбирать...


 
NikNet ©   (2005-05-20 17:01) [3]

Да зачем мне подбирать Я ФАЙЛОВЫЙ МЕНЕДЖЕР ДЕЛАЮ :~|

Помогите разорхивировать с  паролем ...


 
alpet ©   (2005-05-20 17:10) [4]

Проблем нет - документация по модулю рулит. Причем здесь WinAPI или  должна быть какая то функция (NtSetUnrarPassword :) ) что позволит этой библиотеке распаковывать с паролем ?


 
Marser ©   (2005-05-20 18:49) [5]

См. ShellExecute и хелп по WinRAR, там работа с командной строкой остаточно подробно описана.


 
NikNet ©   (2005-05-21 12:24) [6]

Тоже мне наговорили всякие левые ф-ций ну все равно спосибо...

Я уже нашол.


 
KilkennyCat ©   (2005-05-21 13:40) [7]


> что бы не было легче выкладывую все исходники



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.027 c
14-1119547570
Olivka
2005-06-23 21:26
2005.07.18
Сколько стоит программа


10-1096276742
Татьяна
2004-09-27 13:19
2005.07.18
Com+ и Win2003 Server - проблема


14-1119529290
X9
2005-06-23 16:21
2005.07.18
Схема советских колонок S90


14-1119980094
easy
2005-06-28 21:34
2005.07.18
wireless сети


8-1111400251
man1
2005-03-21 13:17
2005.07.18
где можно найти исходники граф. редактора