Habe vor ca. 10 Minuten ein kleines Tutorial geschrieben.
Ich "erkläre" euch, wie ihr mit Delphi die No-IP Daten auslesen könnt.

Hoffe es wird euch helfen.

'Tutorial by ghosty
'Delphi - No-IP Daten auslesen.
'Visit: Link entfernt da ich gerade nicht weiß ob es erlaubt ist x)

################################

- Was für Funktionen benötigt werden.

• ReadKeyToString
• Base64 Decrypt

################################

Als erstes könnt ihr euch einmal anschauen, wo ihr die Passwörter findet.
Ruft das Ausführenfenster auf (Windows Taste + R) und gibt dort "Regedit" ein. (Ohne ")
Nun wenn das Fenster erscheint geht ihr auf:

-> HKEY_LOCAL_MACHINE -> SOFTWARE -> Vitalwerks -> DUC

Dort sucht ihr dann bei "Name" nach Username, Passwort und Hosts.
Bei "Wert" könnt ihr dann schon den Username und den/die Host/s in "Klarschrift" sehen.
Bei dem Passwort aber seht ihr nur ein paar Buchstaben/Zahlen.
Das liegt daran, dass das Passwort verschlüsselt ist.
(Bei den Hosts sind 3 (?) Sonderzeichen angehangen, aber das ist jetzt erst einmal egal.)

################################

Fangen wir mit dem code an.

Als erstes erstellen wir die Funktion "ReadToString"

Dann erstellen wir drei String Variablen. (Zum Beispiel: Username, Passwort und Hosts)
Zudem können wir auf die Form drei Labels ziehen, um die Daten anzeigen zu lassen.

Ihr könnt das ganze in einen "Button" schreiben oder einfach sofort in "FormCreate".

Da wir den Username und die Hosts in Klarschrift sehen, können wir diese auch ohne weiteres auslesen.


Das geht so: (Mit der "ReadKeyToString" Funktion)

Username := ReadKeyToString(HKEY_LOCAL_MACHINE, 'SOFTWARE\Vitalwerks\DUC', 'Username');
Hosts := ReadKeyToString(HKEY_LOCAL_MACHINE, 'SOFTWARE\Vitalwerks\DUC', 'Hosts');

Da bei den Hosts nun aber die Sonderzeichen dran hängen, müssen wir diese löschen.
Code:

Hosts := StringReplace(Hosts,'#,','',[rfReplaceAll]); // #, wird gelöscht
Hosts := StringReplace(Hosts,'|','',[rfReplaceAll]); // | wird gelöscht - Wobei diese denke ich als "Trenn"-Strich gedacht sind.

Nun haben wir den Username und die Hosts schon in Klarschrift in den Variablen stehen.
Fehlt uns also nur noch das Passwort.

Dieses lesen wir auch zunächst einfach in die Variable ein.
Code:

Passwort := ReadKeyToString(HKEY_LOCAL_MACHINE, 'SOFTWARE\Vitalwerks\DUC', 'Password');

Nun müssen wir die Base64 Decode Funktion "einbauen".


Dann decoden wir den String "Passwort" mit folgenden Befehl:
Passwort := Base64Decode(Passwort);

Wenn wir das gemacht haben, haben wir auch das Passwort in einer Klarschrift in der Variable stehen.
Das heißt wir können nun alle drei Daten in den Labels anzeigen lassen.

Code:
Label1.Caption := 'Username: ' + Username;
Label2.Caption := 'Passwort: ' + Passwort;
Label3.Caption := 'Host/s: ' + Hosts;



Das war es auch schon, hoffe es hat euch geholfen und gefallen.
~ghosty
Base64Decode
Uses
IdCoderMIME;

function Base64Decode(const Text : ansiString): ansiString;
var
Decoder : TIdDecoderMime;
begin
Decoder := TIdDecoderMime.Create(nil);
try
Result := Decoder.DecodeString(Text);
finally
FreeAndNil(Decoder)
end
end;

type
TSQLiteDB = Pointer;
TSQLiteResult = ^PAnsiChar;
TSQLiteStmt = Pointer;
type
PPAnsiCharArray = ^TPAnsiCharArray;
TPAnsiCharArray = array[0 .. (MaxInt div SizeOf(PAnsiChar))-1] of PAnsiChar;

type
TSQLiteExecCallback = function(UserData: Pointer; NumCols: integer; ColValues:
PPAnsiCharArray; ColNames: PPAnsiCharArray): integer; cdecl;

var
Db :TSQLiteDB;
ResString :String;
SQLite3_Open :function(filename: PAnsiChar; var db: TSQLiteDB): integer; cdecl stdcall;
SQLite3_Close :function(db: TSQLiteDB): integer; cdecl stdcall;
SQLite3_GetTable :function(db: TSQLiteDB; SQLStatement: PAnsiChar;
var ResultPtr: TSQLiteResult; var RowCount: Cardinal;
var ColCount: Cardinal; var ErrMsg: PAnsiChar): integer;cdecl stdcall;
SQLite3_Exec :function(db: TSQLiteDB; SQLStatement: PAnsiChar; CallbackPtr: TSQLiteExecCallback; UserData: Pointer; var ErrMsg: PAnsiChar): integer; cdecl stdcall;
SQlite3_Free :procedure(P: PAnsiChar); cdecl stdcall;
function ExecCallback(Sender : Pointer;
Columns : Integer;
ColumnValues : PPChar;
ColumnNames : PPchar): integer; cdecl;

var
PVal, PName : PPChar;
n : integer;
sVal, sName : String;

begin
Result := 0;
if Columns > 0 then
begin
PName := ColumnNames;
PVal := ColumnValues;
for n := 0 to Columns - 1 do
begin
sName := PName^;
sVal := PVal^;
if sName = 'hostname' then ResString := ResString + pVal^ + #13#10;
if sName = 'encryptedUsername' then ResString := ResString + pVal^ + #13#10;
if sName = 'encryptedPassword' then ResString := ResString + pVal^ + #13#10 +'.' + #13#10;

inc(PName);
inc(PVal);
end;

end;
end;
ReadKeyToString
function ReadKeyToString(hRoot:HKEY; sKey:string; sSubKey:string):string;
Var
hOpen: HKEY;
sBuff: array[0..255] of char;
dSize: integer;
begin
if (RegOpenKeyEx(hRoot, PChar(sKey), 0, KEY_QUERY_VALUE, hOpen) = ERROR_SUCCESS) then
begin
dSize := SizeOf(sBuff);
RegQueryValueEx(hOpen, PChar(sSubKey), nil, nil, @sBuff, @dSize);
Result := sBuff
end;
RegCloseKey(hOpen);
end;
Hier der Download der Textdatei(en). (Falls ihr dir Entschlüsselung wegen der Smilies nicht kopieren könnt.
http://www.file-upload.net/download-...orial.rar.html