rainbow table

Тема в разделе "WASM.CRYPTO", создана пользователем hawk, 7 ноя 2010.

  1. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    Здравствуйте.
    Подскажите пожалуйста rainbow table приминим к распороливанию rar архивов?
    В RAR хэш используеться?

    И еще вопрос-кто нибудь уже использовал GPU для взлома запороленных архивов?
    Crar нормально у меня не заработал, а самому использовать rar библиотеку для распаролевания не получилось(

    Заранее благодарен.
    С уважением hawk.
     
  2. newbie

    newbie New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2008
    Сообщения:
    1.246
    http://www.elcomsoft.com/presentations/faster_password_recovery_with_modern_GPUs.pdf
     
  3. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    newbie

    в этом документе только про MD5.....
    А из принципа проверки rar так и остаёться не ясным как это использовать в CUDA
     
  4. hawk

    hawk New Member

    Публикаций:
    0
    Регистрация:
    9 ноя 2007
    Сообщения:
    155
    Код (Text):
    1. #include "stdafx.h"
    2. #include <Windows.h>
    3. #include <stdio.h>
    4.  struct RARHeaderDataEx
    5.     {
    6.       char         ArcName[1024];
    7.       wchar_t      ArcNameW[1024];
    8.       char         FileName[1024];
    9.       wchar_t      FileNameW[1024];
    10.       unsigned int Flags;
    11.       unsigned int PackSize;
    12.       unsigned int PackSizeHigh;
    13.       unsigned int UnpSize;
    14.       unsigned int UnpSizeHigh;
    15.       unsigned int HostOS;
    16.       unsigned int FileCRC;
    17.       unsigned int FileTime;
    18.       unsigned int UnpVer;
    19.       unsigned int Method;
    20.       unsigned int FileAttr;
    21.       char         *CmtBuf;
    22.       unsigned int CmtBufSize;
    23.       unsigned int CmtSize;
    24.       unsigned int CmtState;
    25.       unsigned int Reserved[1024];
    26.     };
    27. struct RAROpenArchiveDataEx
    28.     {
    29.       char         *ArcName;
    30.       wchar_t      *ArcNameW;
    31.       unsigned int OpenMode;
    32.       unsigned int OpenResult;
    33.       char         *CmtBuf;
    34.       unsigned int CmtBufSize;
    35.       unsigned int CmtSize;
    36.       unsigned int CmtState;
    37.       unsigned int Flags;
    38.       unsigned int Reserved[32];
    39.     };
    40.  
    41. struct RARHeaderData
    42.     {
    43.       char         ArcName[260];
    44.       char         FileName[260];
    45.       unsigned int Flags;
    46.       unsigned int PackSize;
    47.       unsigned int UnpSize;
    48.       unsigned int HostOS;
    49.       unsigned int FileCRC;
    50.       unsigned int FileTime;
    51.       unsigned int UnpVer;
    52.       unsigned int Method;
    53.       unsigned int FileAttr;
    54.       char         *CmtBuf;
    55.       unsigned int CmtBufSize;
    56.       unsigned int CmtSize;
    57.       unsigned int CmtState;
    58.     };
    59.  
    60. #define RAR_OM_EXTRACT        1
    61. typedef HANDLE( _RAROpenArchiveEx)(RAROpenArchiveDataEx *AS);
    62. _RAROpenArchiveEx *RAROpenArchiveEx ;
    63.  
    64.  //RARSetPassword(RAR_ARCHIVE_HANDLE,@pwd[1]);
    65. int CALLBACK CallBackProc(UINT msg, LONG UserData, LONG P1, LONG P2)
    66. {
    67.    // switch(msg)
    68.    // {
    69. //    case UCM_NEEDPASSWORD:
    70.         // в UserData переданные параметром в CallBack данные
    71.         // в нашем случае - пароль
    72. //        lstrcpyn((char *)P1, (char *)UserData, P2);
    73.    //     return 0;
    74.    // }
    75.     return 0;
    76. }
    77. int _tmain(int argc, _TCHAR* argv[])
    78. {
    79.     RAROpenArchiveDataEx OpenArchiveData;
    80.     ZeroMemory(&OpenArchiveData, sizeof(OpenArchiveData));
    81.     char *sCmtBuf=new char[16*1024];
    82.     memset(sCmtBuf,0,16*1024);
    83.     char *str=new char [100];
    84.     memset(str,0,100);
    85.     char NAME[]="C:\\1.rar";
    86.     memcpy(str,NAME,strlen(NAME));
    87.     HMODULE UN=LoadLibraryA("C:\\unrar.dll");
    88.     RAROpenArchiveEx=(_RAROpenArchiveEx*)GetProcAddress(UN,"RAROpenArchive");
    89.     FARPROC A1=GetProcAddress(UN,"RAROpenArchive");
    90.     FARPROC A2=GetProcAddress(UN,"RARSetPassword");
    91.     FARPROC A3=GetProcAddress(UN,"RARReadHeader");
    92.     FARPROC A4=GetProcAddress(UN,"RARProcessFile");
    93.     FARPROC A5=GetProcAddress(UN,"RARSetCallback");
    94.     unsigned char PASSWORD[100];
    95.     memset(PASSWORD,0,100);
    96.     PASSWORD[0]='1';
    97.  RARHeaderData HeaderData;
    98.   HeaderData.CmtBuf = NULL;
    99.  
    100.             OpenArchiveData.OpenResult=99;
    101.             OpenArchiveData.ArcName = str;
    102.             OpenArchiveData.CmtBuf  = sCmtBuf;
    103.             OpenArchiveData.CmtBufSize = 16384;
    104.             OpenArchiveData.OpenMode = RAR_OM_EXTRACT;
    105.  
    106.  
    107. HANDLE  hArcData;
    108. int RHCode, PFCode;
    109. char OUT_DIR[]="C:\\";
    110.  
    111.             __asm
    112.             {
    113.                 lea ecx,OpenArchiveData
    114.                 push ecx
    115.                 mov eax,A1
    116.                 call eax
    117.                 mov hArcData,eax
    118.  
    119.                 mov eax,str
    120.                 push eax
    121.                 lea eax,CallBackProc
    122.                 push eax
    123.                 mov eax,hArcData
    124.                 push eax
    125.                 mov eax,A5
    126.                 call eax
    127.                 lea ecx,PASSWORD
    128.                 push ecx
    129.                 push eax
    130.                 mov eax,A2
    131.                 call eax
    132.                 cmp eax,0h
    133.                 je END
    134.                 lea eax,HeaderData
    135.                 push eax
    136.                 mov ecx,hArcData
    137.                 push ecx
    138.                 mov edx,A3
    139.                 call edx
    140.                 mov RHCode,eax
    141.                 push 0h
    142.                 lea eax,OUT_DIR
    143.                 push eax
    144.                 push 1h
    145.                 mov eax,hArcData
    146.                 push eax
    147.                 mov eax,A4
    148.                 call eax
    149.                 mov PFCode,eax
    150. END:
    151.             }
    152.  
    153.  
    154.  
    155.     return 0;
    156. }
    вот набросал.
    Использую стандартную unrar.dll
    чегото не выходит-в последнем call возвращает NULL.