ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Реверсинг
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Расшифровка wand.dat(Opera) на дельфи
  #1  
Старый 12.08.2009, 04:51
Seregakz
Познающий
Регистрация: 13.06.2009
Сообщений: 32
С нами: 8901549

Репутация: 2
По умолчанию Расшифровка wand.dat(Opera) на дельфи

Плз ктонить из шаричих попробуйте запустить его
PHP код:
unit Unit1;

interface

uses
  Windows
, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  
Dialogs, StdCtrls, DCPdes, DCPsha1, DCPmd5;



type
  TForm1 
= class(TForm)
    
Button1: TButton;
    
ListBox1: TListBox;
    
Memo1: TMemo;
    
procedure Button1Click(Sender: TObject);
    
procedure Run1;
    function 
DecryptWandPass(const Key, Data: String): String;
    
procedure ProcessWandData(M: TMemoryStream);
  
end;

var
  
Form1: TForm1;
  
FormsList: TList;
    
AccountList: TList;

  
M: TMemoryStream;
 
 
type
  POperaItem 
= ^TOperaItem;
  
TOperaItem = record
     Site
: String;
    
Params: TStringList;
  
end;

implementation

{$R *.dfm}


const
  
opera_magic_wand: array[0..10] of Byte = ($83, $7D, $FC, $0F, $8E, $B3, $E8, $69, $73, $AF, $FF);

procedure OperaDecrypt(key: Pointer; data, dataout: Pointer; len: Integer; magic: Pointer; magic_len: Integer);
var
  
out_1: array[0..63] of Byte;
  
out_2: array[0..63] of Byte;
  
digest_1: array[0..15] of Byte;
  
digest_2: array[0..15] of Byte;
  
des_key: array[0..23] of Byte;

  
md5: TDCP_md5;
  
Cipher: TDCP_3des;
begin
  md5 
:= TDCP_md5.Create(nil);
  
md5.Init;

  
Move(magic^, out_1, magic_len);
  
Move(key^, out_1[magic_len], 8);
  
md5.Update(out_1, magic_len+8);
  
md5.Final(digest_1);
  
Move(digest_1, des_key, 16);

  
md5.Init;
  
Move(digest_1, out_2, 16);
  
Move(magic^, out_2[16], magic_len);
  
Move(key^, out_2[16+magic_len], 8);
  
md5.Update(out_2, 24+magic_len);
  
md5.Final(digest_2);
  
md5.Burn;
  
md5.Free;

  
Move(digest_2, des_key[16], 8);

  
Cipher := TDCP_3des.Create(nil);
  
Cipher.Init(des_key, 192, @digest_2[8]);
  
Cipher.DecryptCBC(data^, dataout^, len);

  
Cipher.Burn;
  
Cipher.Free;
end;


function 
TForm1.DecryptWandPass(const Key, Data: String): String;
begin
  Result 
:= '';
  if 
Length(Key) <> 8 then Exit;
  if (
Length(Data) < 8) or (Length(Data) mod 8 <> 0) then Exit;

  
SetLength(Result, Length(Data));
  
OperaDecrypt(@Key[1], @Data[1], @Result[1], Length(Data), @opera_magic_wand, SizeOf(opera_magic_wand));
  
SetLength(Result, Length(Result)-Ord(Result[Length(Result)])); // Cut unused chars
  
Result := WideCharToString(@(Result+#0#0)[1]); // Wide>ANSI
end;


procedure TForm1.ProcessWandData(M: TMemoryStream);
var
  
P: POperaItem;


  function 
Swap32(Value: LongWord): LongWord; assembler;
  
asm
    bswap eax
  end
;

  function 
ReadDWord: LongWord;
  
begin
    M
.ReadBuffer(Result,4);
    
Result := Swap32(Result);
  
end;

  function 
ReadVariable(CLen: LongWord): String;
  
begin
    SetLength
(Result, CLen);
    
M.ReadBuffer(Result[1], CLen);
  
end;

  function 
ReadSiteHeader: Integer;
  var
    
Key, Data: String;
  
begin
    
if ReadDWord <= 4 then // Len
      
ReadDWord;

    
// Site name
    
Key := ReadVariable(ReadDWord);
    
Data := ReadVariable(ReadDWord);

    New(
P);
    
P.Params := TStringList.Create;
    
P.Site := DecryptWandPass(Key, Data);
    
FormsList.Add(P);

    
// Submit button name
    
if ReadDWord > 0 then begin
      ReadVariable
(ReadDWord); // Key
      
ReadVariable(ReadDWord); // Data
    
end;

    
ReadVariable(24); // Unknown
    
Result := ReadDWord; // Number of children
  
end;

  
procedure ReadSiteItem;
  var
    
Key, Data, Key2, Data2: String;
  
begin
    ReadVariable
(1); // Unknown
    
if ReadDWord <= 4 then // Len
      
ReadDWord;

    
// Input name
    
Key := ReadVariable(ReadDWord);
    
showmessage(key);
    
Data := ReadVariable(ReadDWord);

    if 
ReadDWord <= 4 then // Len
      
ReadDWord;

    
// Input value
    
Key2 := ReadVariable(ReadDWord);
    
showmessage('Key : ' +key2);
    
Data2 := ReadVariable(ReadDWord);

    if 
P <> nil then
      P
.Params.Add(DecryptWandPass(Key, Data) + '=' + DecryptWandPass(Key2, Data2));

  
end;

var
  
i, j: Integer;

begin

  
if M.Size < 16 then begin showmessage('error 1'); Exit;  end;

if 
ReadDWord <> 2 then begin showmessage('err 2');  Exit;  end; // Version
 
if ReadDWord <> 0 then begin showmessage('err 3'); Exit; end; // 1 - crypted, 0 - not crypted
  
ReadVariable(8); // Unknown

  
P := nil;  

  
// Header
  
ReadDWord; // Len
  
ReadVariable(ReadDWord); // Key
  
ReadVariable(ReadDWord); // Data
  
ReadVariable(37); // Unknown

  // Data types?
  
for i := 1 to ReadDWord do begin
    ReadVariable
(1); // Unknown
    
ReadVariable(4); // Len
    
ReadVariable(ReadDWord); // Key
    
ReadVariable(ReadDWord); // Data
    
ReadVariable(8); // Unknown
  
end;

  
// LogProfile
  
ReadVariable(4); // Len
  
ReadVariable(ReadDWord); // Key
  
ReadVariable(ReadDWord); // Data
  
ReadVariable(1); // Boolean

  // Sites
  
for i := 1 to ReadDWord do
    for 
j := 1 to ReadSiteHeader do
      
ReadSiteItem;
end;



procedure TForm1.Run1;
 var
 
result : string;
begin
    M 
:= TMemoryStream.Create;
    
M.LoadFromFile('wand.dat');
    
Memo1.Lines.LoadFromStream(M);
    
M.Position:=0;
    
ProcessWandData(M);
    
M.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Run1
;
end;

end. 
 
Ответить с цитированием

  #2  
Старый 16.08.2009, 03:47
ex3me
Участник форума
Регистрация: 07.01.2009
Сообщений: 186
С нами: 9127098

Репутация: 166
По умолчанию

Мож заодно пасы/инки подкинешь? DCPdes, DCPsha1, DCPmd5.

Зачем извращаться, когда есть на CPP. А это жалкая пародия на переделку в делфи-вариант

Тут на CPP

Последний раз редактировалось ex3me; 16.08.2009 в 03:49..
 
Ответить с цитированием

  #3  
Старый 17.08.2009, 06:59
Seregakz
Познающий
Регистрация: 13.06.2009
Сообщений: 32
С нами: 8901549

Репутация: 2
По умолчанию

Цитата:
Сообщение от ex3me  
Мож заодно пасы/инки подкинешь? DCPdes, DCPsha1, DCPmd5.

Зачем извращаться, когда есть на CPP. А это жалкая пародия на переделку в делфи-вариант

Тут на CPP
DCPdes, DCPsha1, DCPmd5 это VCL библиотека)

Я вкурсах что переделка поэтому она и нужна))
 
Ответить с цитированием

  #4  
Старый 21.08.2009, 18:16
W@r.N0i$e
Участник форума
Регистрация: 02.06.2009
Сообщений: 143
С нами: 8916610

Репутация: 114
По умолчанию

Вот.
http://wramlab.narod.ru/achat.rar
В архиве исходники, VCL библиотека и exe.
Скомпилировал и т.д. С интерфейсом не заморачивался и не тестировал, так как не знаю толком, что за прога. Да и Nod32 что-то не взлюбил ее. В общем качай и проверяй сам.
--------------------------------------------------------------------
P.S. Exe пришлось удалить, так как был заражен вирусом, но исходники компилятся норм.

Последний раз редактировалось W@r.N0i$e; 21.08.2009 в 19:49..
 
Ответить с цитированием

  #5  
Старый 21.08.2009, 19:21
ex3me
Участник форума
Регистрация: 07.01.2009
Сообщений: 186
С нами: 9127098

Репутация: 166
По умолчанию

W@r.N0i$e, спасибо, и я погляжу.
Вылечись от Win32.Include только =)
 
Ответить с цитированием

  #6  
Старый 21.08.2009, 21:38
ErrorNeo
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
С нами: 8960826

Репутация: 2261


По умолчанию

то же самое, на Дельфи, но для Мозилы (сурсы)

http://narod.ru/disk/12269424000/mozilla_pass_by_evalux.rar.html
(автор кода - наш eLWAux)
 
Ответить с цитированием

  #7  
Старый 21.08.2009, 22:00
ex3me
Участник форума
Регистрация: 07.01.2009
Сообщений: 186
С нами: 9127098

Репутация: 166
По умолчанию

По сабжу: код хреново написан в декодере для wand.dat
У меня лично выдает Err=2 =\ Надо доводить до ума и делать новый пинч )
 
Ответить с цитированием

  #8  
Старый 06.09.2009, 21:02
mr. ZetRikS
Познающий
Регистрация: 17.07.2009
Сообщений: 47
С нами: 8852409

Репутация: 4
По умолчанию

если кому нужны недостающие файлы (модули) то они тут
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исходники криптора на дельфи 7ion С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 23 14.09.2008 13:41



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


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




ANTICHAT ™ © 2001- Antichat Kft.