Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   vnc Passwort setzen (https://www.delphipraxis.net/119417-vnc-passwort-setzen.html)

noi 26. Aug 2008 01:46


vnc Passwort setzen
 
Ich suche eine Möglichkeit das VNC (tight oder ultra) Passwort in der Registrierung zu setzen. Nach nutzung der Sufu habe ich bereits folgendes dazu gefunden:
c++ Übersetzung
DES56
Leider haben die Informationen bisher noch nicht zu funktionierendem Delphi Code geführt, was an mehreren Problemen liegt. Zum einen speichert VNC das Passwort als REG_BINARY wobei ich nicht weiss welche Datenstrucktur dem Wert zugrunde liegt. Bei meinen Versuchen einen String als binary Wert in die Registry zu schreiben kamen immer andere Werte als bei VNC heraus. Die von chaosben geschriebene Unit (d3des.pas) sieht so aus wie eine Übersetzung der d3des.c aus den TightVNC 1.3.9 Sourcen (sogar der VNC_DES_Key stimmt), führt bei mir aber zu anderen Registrywerten (kann auch am schreiben des Binarywertes liegen). Die andere Option es mit einer modifizierten DEC Version verschlüsseln scheiterte bisher auch daran das die geposteten Codebeispiele bei mir nicht funktionieren.
Delphi-Quellcode:
with TCipher_1DES.Create do
  try
    Mode := cmCBCx;
    Init(FSharedSecret);
    encval := EncodeBinary(Edit1.Text, TFormat_HEX);
  finally
    Free;
  end;
Zu wenig wirkliche Parameter beim erzeugen.
So, ich hoffe das reicht damit mir jemand den nächsten Schritt in die richtige Richtung zeigen kann.

[edit=SirThornberry]Titel korrigiert - nächstes mal bitte die Zeit nehmen solche offensichtlichen Fehler zu vermeiden - Mfg, SirThornberry[/edit]

chaosben 26. Aug 2008 05:35

Re: vnc Passwort detzen
 
Hi und herzlich Willkommen in der DP! :hi:

Bei mir hat es mit RealVNC ohne Probleme geklappt.
Vielleicht kannst du ja mal den Code posten, mit dem du das Passwort in die Registry schreibst.
Interessant wäre auch die Länge. Imho ist meine Unit auf 8 Zeichen beschränkt. (Weiß ich aber nicht mehr so genau :-/)

noi 26. Aug 2008 19:50

Re: vnc Passwort setzen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Um den VNC Server für zukünftige Aufgaben anpassen zu können möchte ich, sofern dies möglich ist, einen opensource VNC verwenden. Zum Schreiben in die Registry benutze ich folgenden Code
Delphi-Quellcode:
     u:=DES_Encrypt('hugohugo',VNC_DES_Key);
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\ORL\WinVNC3', true) then
    begin
      try
        reg.WriteBinaryData('aaa',u,sizeof(u));
      except

      end;
    end;
  finally
    reg.Free;
  end;
Das Ergebnis ist dann
Zitat:

aaa -> a8 11 ce 00
Password -> a9 12 64 c2 00 de 76 65
Wie du siehst führe ich meine Tests nur mit 8 Zeichen langen Passwörtern durch. Als VNC Referenz habe ich hier TightVNC genommen, da der Quelltext (d3des.c) sehr gut zu deiner Unit zu passen scheint(s. Anhang).

chaosben 26. Aug 2008 20:09

Re: vnc Passwort setzen
 
Ich glaube du hast Recht. Das Problem liegt wahrscheinlich in der Art wie du die Daten in die Registry schreibst.
Was ist denn u für ein Typ?
SizeOf(u) liefert die die Größe von u im Speicher. In der Annahme das u ein PChar ist, wird SizeOf(u) immer 4 liefern, egal was in u "drinsteht". Schick mal bitte die komplette Prozedur samt Variablendeklarationen und ich werd zusehen, das ich dir morgen eine Demo posten kann, wie es bei mir funktioniert.

noi 26. Aug 2008 21:40

Re: vnc Passwort setzen
 
Danke für deine Hilfe.
Zitat:

Zitat von chaosben
Was ist denn u für ein Typ?

Da deine Funktion DES_Encrypt einen String zurrückgibt habe ich u auch als string gewählt. Hier also der Code der kompletten Procedure
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var Reg: TRegistry;
 u:string;
begin
  u:=DES_Encrypt('hugohugo',VNC_DES_Key);
  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\ORL\WinVNC3', true) then
    begin
      try
        reg.WriteBinaryData('aaa',u,sizeof(u));
      except

      end;
    end;
  finally
    reg.Free;
  end;
end;

chaosben 27. Aug 2008 05:36

Re: vnc Passwort setzen
 
Ok, mit der gefixten Version von hier und dem Code sollte es gehen:
Delphi-Quellcode:
procedure TForm1.btn_Button1Click(Sender: TObject);
var
  passw : TDES_Data;
  reg : TRegistry;
begin
  passw := DES_Encrypt(ed_PW.Text, VNC_DES_Key);
  reg := TRegistry.Create;
  try
    reg.RootKey := HKEY_CURRENT_USER;
    if reg.OpenKey('\Software\RealVNC\WinVNC4', false) then
      reg.WriteBinaryData('pw', passw, Length(passw));
  finally
    reg.Free;
  end;
end;

noi 27. Aug 2008 23:07

Re: vnc Passwort setzen
 
Funktioniert mit Tightvnc wunderbar 8)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz