Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Einloggen mit idhttp auf https-Server (https://www.delphipraxis.net/177256-einloggen-mit-idhttp-auf-https-server.html)

MathiasE 7. Nov 2013 13:19

AW: Einloggen mit idhttp auf https-Server
 
Danke für die Antworten!

Ich versuche gerade den RSA Key zu erstellen bzw. Benutzername und Passwort zu verschlüsseln (was das javascript macht). Habe mir das alles ein bisschen einfacher vorgestellt :(

Back2Code 7. Nov 2013 14:10

AW: Einloggen mit idhttp auf https-Server
 
Mach mal nen Get auf die Html und speichere dir den Quelltext und guck ob da der Key drin ist. Wenn ja, dann speicherst du dir die Value in einer Variable 8-)

Code:
value="D9EB8685177B7F25E374FFA82D4276391DDC84E5F39 DE4A62A87EBBF015E0B174ED6797B23BA3D5D390D4FD2708C9 7972D5E9E7D7BBB9E3FF5FC90A04BF17C4496FE20F273799A7 059660BC3EAD4F2592D0DDE6FE7E950AA78A259B7188AD7ECC D7DC4777811AE7B2762B09730AC195A4B453C9C5986D1DCEC7 B60C1AD0D3580766BECB216D82A2A190BE8E2074631C78D9D8 90678C799D79E79FD979F012C9A3F21D94EBFD48673EDB79DB 1B6AC29987AAD9E332DA727306663FAF9B25093EB11767B70C AD78618709A334F7C721858FF5347FED56B4CE8C42A0A44913 87AFE828B6B12101" /><input type="hidden" id="rsa_e" name="e" value="10001" />

Ich mach dir mal nen Beispiel

Delphi-Quellcode:
function GetBetween (Str: String; StrStart : String; StrEnd : String) : String;
var
  iPos   : Integer;
  BackUp : String;
begin
  result := '';
  iPos := Pos (StrStart, Str);
  if iPos <> 0 then begin
    Delete (Str, 1, iPos + Length (StrStart) - 1);
    iPos := Pos (StrEnd, Str);
    if iPos <> 0 then begin
      result := Copy(Str,1, iPos - 1);
    end;
  end;
end;
Aufruf:

Delphi-Quellcode:
sRSAKey := GetBetween(sQuelltext, 'value="', '" /><input type="hidden" id="rsa_e"');

MathiasE 8. Nov 2013 12:02

AW: Einloggen mit idhttp auf https-Server
 
Hallo!

Ja, der Key steht auf der Webseite. Danke für das Beispiel.
Jetzt habe ich noch eine Frage (ja, die sind vielleicht einfach - und ja, ich kenne mich damit leider schlecht aus):
- Wie verschlüssele ich jetzt das Passwort mit dem Key? irgendwie habe ich gelesen, dass es da mehrere arten gibt....

Habe das Beispiel von Sougetsu (von oben) angepasst und hoffe, dass nach korrekter Verschlüsselung des Passworts der Login funktionieren sollte
Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  PostDataStream : TStringStream;
  MYIOHandler: TIdSSLIOHandlerSocket;
  MyMultiPartFormDataStream: TIdMultiPartFormDataStream;
begin
  //Voraussetzungen für SSL erzeugen
  MYIOHandler:=TIdSSLIOHandlerSocket.Create(nil);
  MYIOHandler.SSLOptions.Method:=sslvSSLv23; // Method anpassen an die welche vom Server unterstützt wird.
  MYIOHandler.SSLOptions.Mode:=sslmUnassigned; //Akzeptiert alle Zertifikate egal ob signiert oder nicht, sollte behandelt werden damit Zertifikate auf Gültigkeit etc. geprüft wird.
  MyMultiPartFormDataStream:=TIdMultiPartFormDataStream.Create; //Hier einen Stream erzeugen der nachher die Formulardaten enthält.
  MyMultiPartFormDataStream.AddFormField('user',username); //Username
[B] MyMultiPartFormDataStream.AddFormField('pass',RSApassword); //RSA verschlüsseltes Passwort
[/B] MyMultiPartFormDataStream.AddFormField('submit','Anmelden'); //Falls geprüft wird ob der reguläre Button da war
  MyMultiPartFormDataStream.AddFormField('logintype','login'); //Auch selbsterklärend
  MyMultiPartFormDataStream.AddFormField('pid','28110'); //[B]die pid bleibt immer gleich[/B]
  MyMultiPartFormDataStream.AddFormField('redirect_url',''); //Auch unbekannt wofür das ist
  MyMultiPartFormDataStream.AddFormField('tx_felogin_pi1[noredirect]','0'); //Hier auch
[B] MyMultiPartFormDataStream.AddFormField('n',RSAkey); //der Schlüssel aus dem html
[/B] MyMultiPartFormDataStream.AddFormField('e','10001'); //[B]Der Wert bleibt immer gleich[/B]

  IdHTTP1 := TIdHTTP.Create(nil);
  IdHTTP1.IOHandler:=MYIOHandler; // Der Kompo das SSL mitgeben damit es eine SSL Verbindung aufbauen kann.
  IdHTTP1.AllowCookies:=true; //Standardeinstellungen vornehmen wie Cookies und Redirects.
  IdHTTP1.HandleRedirects:=true;
  PostDataStream := TStringStream.Create('');
  try
  //Connect
      IdHTTP1.Post(URL, MyMultiPartFormDataStream, PostDataStream);
      Memo1.Text := PostDataStream.DataString;
  finally
    MyMultiPartFormDataStream.Free;
    PostDataStream.Free;
    MYIOHandler.Free;
  end;
end;
Vielen Dank für die Hilfe bisher!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 Uhr.
Seite 2 von 2     12   

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