Здравствуйте. Подскажите пожалуйста rainbow table приминим к распороливанию rar архивов? В RAR хэш используеться? И еще вопрос-кто нибудь уже использовал GPU для взлома запороленных архивов? Crar нормально у меня не заработал, а самому использовать rar библиотеку для распаролевания не получилось( Заранее благодарен. С уважением hawk.
newbie в этом документе только про MD5..... А из принципа проверки rar так и остаёться не ясным как это использовать в CUDA
Код (Text): #include "stdafx.h" #include <Windows.h> #include <stdio.h> struct RARHeaderDataEx { char ArcName[1024]; wchar_t ArcNameW[1024]; char FileName[1024]; wchar_t FileNameW[1024]; unsigned int Flags; unsigned int PackSize; unsigned int PackSizeHigh; unsigned int UnpSize; unsigned int UnpSizeHigh; unsigned int HostOS; unsigned int FileCRC; unsigned int FileTime; unsigned int UnpVer; unsigned int Method; unsigned int FileAttr; char *CmtBuf; unsigned int CmtBufSize; unsigned int CmtSize; unsigned int CmtState; unsigned int Reserved[1024]; }; struct RAROpenArchiveDataEx { char *ArcName; wchar_t *ArcNameW; unsigned int OpenMode; unsigned int OpenResult; char *CmtBuf; unsigned int CmtBufSize; unsigned int CmtSize; unsigned int CmtState; unsigned int Flags; unsigned int Reserved[32]; }; struct RARHeaderData { char ArcName[260]; char FileName[260]; unsigned int Flags; unsigned int PackSize; unsigned int UnpSize; unsigned int HostOS; unsigned int FileCRC; unsigned int FileTime; unsigned int UnpVer; unsigned int Method; unsigned int FileAttr; char *CmtBuf; unsigned int CmtBufSize; unsigned int CmtSize; unsigned int CmtState; }; #define RAR_OM_EXTRACT 1 typedef HANDLE( _RAROpenArchiveEx)(RAROpenArchiveDataEx *AS); _RAROpenArchiveEx *RAROpenArchiveEx ; //RARSetPassword(RAR_ARCHIVE_HANDLE,@pwd[1]); int CALLBACK CallBackProc(UINT msg, LONG UserData, LONG P1, LONG P2) { // switch(msg) // { // case UCM_NEEDPASSWORD: // в UserData переданные параметром в CallBack данные // в нашем случае - пароль // lstrcpyn((char *)P1, (char *)UserData, P2); // return 0; // } return 0; } int _tmain(int argc, _TCHAR* argv[]) { RAROpenArchiveDataEx OpenArchiveData; ZeroMemory(&OpenArchiveData, sizeof(OpenArchiveData)); char *sCmtBuf=new char[16*1024]; memset(sCmtBuf,0,16*1024); char *str=new char [100]; memset(str,0,100); char NAME[]="C:\\1.rar"; memcpy(str,NAME,strlen(NAME)); HMODULE UN=LoadLibraryA("C:\\unrar.dll"); RAROpenArchiveEx=(_RAROpenArchiveEx*)GetProcAddress(UN,"RAROpenArchive"); FARPROC A1=GetProcAddress(UN,"RAROpenArchive"); FARPROC A2=GetProcAddress(UN,"RARSetPassword"); FARPROC A3=GetProcAddress(UN,"RARReadHeader"); FARPROC A4=GetProcAddress(UN,"RARProcessFile"); FARPROC A5=GetProcAddress(UN,"RARSetCallback"); unsigned char PASSWORD[100]; memset(PASSWORD,0,100); PASSWORD[0]='1'; RARHeaderData HeaderData; HeaderData.CmtBuf = NULL; OpenArchiveData.OpenResult=99; OpenArchiveData.ArcName = str; OpenArchiveData.CmtBuf = sCmtBuf; OpenArchiveData.CmtBufSize = 16384; OpenArchiveData.OpenMode = RAR_OM_EXTRACT; HANDLE hArcData; int RHCode, PFCode; char OUT_DIR[]="C:\\"; __asm { lea ecx,OpenArchiveData push ecx mov eax,A1 call eax mov hArcData,eax mov eax,str push eax lea eax,CallBackProc push eax mov eax,hArcData push eax mov eax,A5 call eax lea ecx,PASSWORD push ecx push eax mov eax,A2 call eax cmp eax,0h je END lea eax,HeaderData push eax mov ecx,hArcData push ecx mov edx,A3 call edx mov RHCode,eax push 0h lea eax,OUT_DIR push eax push 1h mov eax,hArcData push eax mov eax,A4 call eax mov PFCode,eax END: } return 0; } вот набросал. Использую стандартную unrar.dll чегото не выходит-в последнем call возвращает NULL.