Delphi-PRAXiS
Seite 1 von 2  1 2      

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 28. Okt 2013 11:52

Einloggen mit idhttp auf https-Server
 
Hallo,

Ich versuche mich auf eine Webseite mit folgendem Quellcode(Ausschnitt) zu verbinden, kann mich allerdings nicht einloggen.


<!-- ###LOGIN_FORM### -->
<form action="de.html" target="_top" method="post" onsubmit="tx_rsaauth_feencrypt(this);; return true;">
<fieldset>
<legend>Anmelden</legend>
<label for="user">Benutzername:</label>
<input type="text" id="user" name="user" value="" />
<label class="password" for="pass">Kennwort:</label>
<input type="password" id="pass" name="pass" value="" />
<input type="submit" name="submit" value="Anmelden" />
<div class="felogin-hidden">
<input type="hidden" name="logintype" value="login" />
<input type="hidden" name="pid" value="28110" />
<input type="hidden" name="redirect_url" value="" />
<input type="hidden" name="tx_felogin_pi1[noredirect]" value="0" />
<script type="text/javascript" src="typo3/sysext/rsaauth/resources/jsbn/jsbn.js"></script><script type="text/javascript" src="typo3/sysext/rsaauth/resources/jsbn/prng4.js"></script><script type="text/javascript" src="typo3/sysext/rsaauth/resources/jsbn/rng.js"></script><script type="text/javascript" src="typo3/sysext/rsaauth/resources/jsbn/rsa.js"></script><script type="text/javascript" src="typo3/sysext/rsaauth/resources/jsbn/base64.js"></script><script type="text/javascript" src="typo3/sysext/rsaauth/resources/rsaauth_min.js"></script><input type="hidden" id="rsa_n" name="n" value="D9EB8685177B7F25E374FFA82D4276391DDC84E5F39 DE4A62A87EBBF015E0B174ED6797B23BA3D5D390D4FD2708C9 7972D5E9E7D7BBB9E3FF5FC90A04BF17C4496FE20F273799A7 059660BC3EAD4F2592D0DDE6FE7E950AA78A259B7188AD7ECC D7DC4777811AE7B2762B09730AC195A4B453C9C5986D1DCEC7 B60C1AD0D3580766BECB216D82A2A190BE8E2074631C78D9D8 90678C799D79E79FD979F012C9A3F21D94EBFD48673EDB79DB 1B6AC29987AAD9E332DA727306663FAF9B25093EB11767B70C AD78618709A334F7C721858FF5347FED56B4CE8C42A0A44913 87AFE828B6B12101" /><input type="hidden" id="rsa_e" name="e" value="10001" />
</div>
</fieldset>
</form>


Ich vermute, dass ich die Parameter nicht korrekt angegeben habe.

Bis jetzt habe ich es mit den Beispielen aus dem "Tutorial" probiert, aber leider ohne Erfolg.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  PostDataStream : TStringStream;
  ParamData : TStringStream;
begin
  IdHTTP1.Create(nil);
  PostDataStream := TStringStream.Create('');
  ParamData := TStringStream.Create('');
  ParamData.WriteString('user='+username);
  ParamData.WriteString('pass='+password);
try
//Connect
  with TIdHTTP.Create(nil) do
    try
      IOHandler := TIdSSLIOHandlerSocket.Create(nil);
    finally
      IdHTTP1.Post('https://kb.zumtobel.com/de.html', ParamData, PostDataStream);
      Memo1.Text := PostDataStream.DataString;
    end;
finally
  ParamData.Free;
  PostDataStream.Free;
end;
end;
Könnte mir jemand einen Tip geben, wie man soetwas macht?
Ein einfaches GET bekomme ich hin, aber einloggen kann ich mich nicht.

Wäre für Tipps dankbar!

Sg,
Mathias

CCRDude 28. Okt 2013 11:54

AW: Einloggen mit idhttp auf https-Server
 
Zitat:

onsubmit="tx_rsaauth_feencrypt(this);
Ich denke, Du wirst Dir diese Funktion ansehen und nachbilden müssen.

Back2Code 28. Okt 2013 13:05

AW: Einloggen mit idhttp auf https-Server
 
Liegen die SSL Dlls im Programmverzeichnis?

MathiasE 28. Okt 2013 13:21

AW: Einloggen mit idhttp auf https-Server
 
Zitat:

Zitat von Back2Code (Beitrag 1233449)
Liegen die SSL Dlls im Programmverzeichnis?

ja, tun sie


Zitat:

Zitat von CCRDude (Beitrag 1233425)
Zitat:

onsubmit="tx_rsaauth_feencrypt(this);
Ich denke, Du wirst Dir diese Funktion ansehen und nachbilden müssen.

So etwas habe ich schon befürchtet, obwohl es mich wundert, dass es da keine "einheitliche" Verschlüsselung gibt.

MathiasE 28. Okt 2013 15:14

AW: Einloggen mit idhttp auf https-Server
 
blöde Frage: wird das Skript nicht eben von der Seite verwendet, auf der ich mich einloggen will? Ich dachte, ich poste nur die Anmeldedaten in die Felder und rufe den "submit" Button auf - quasi das gleiche, wie wenn ich mich händisch anmelde. Oder liege ich da falsch?

Danke

mquadrat 28. Okt 2013 15:19

AW: Einloggen mit idhttp auf https-Server
 
Nein, du emulierst ja nicht die Eingaben, sondern den gesamten Browser. Also von den Eingaben bis hin zum fertigen http-Request.

Sougetsu 30. Okt 2013 18:01

AW: Einloggen mit idhttp auf https-Server
 
Moin,

theoretisch ist es einfach ein post zu basteln.
bei der login source könnte dein delphi code evtl. so aussehen:
Code nicht getestet, alles auf eigene Gefahr.

Delphi-Quellcode:
procedure TForm1.btn1Click(Sender: TObject);
var
  PostDataStream : TStringStream;
  MYIOHandler: TIdSSLIOHandlerSocketOpenSSL;
  MyMultiPartFormDataStream:TIdMultipartFormDataStream;
begin
  //Voraussetzungen für SSL erzeugen
  MYIOHandler:=TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  MYIOHandler.SSLOptions.Method:=sslvTLS1_2; // 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); //Das sollte klar sein
  MyMultiPartFormDataStream.AddFormField('pass',password); //Das auch
  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'); //Gute Frage, bleibt die pid immer gleich oder ändert sie sich nach jedem Request?
  MyMultiPartFormDataStream.AddFormField('redirect_url',''); //Auch unbekannt wofür das ist
  MyMultiPartFormDataStream.AddFormField('tx_felogin_pi1[noredirect]','0'); //Hier auch
  MyMultiPartFormDataStream.AddFormField('e','10001'); //Hier auch, ändern sich die Werte mal?

  IdHTTP1.Create(nil);
  IdHTTP1.IOHandler:=MYIOHandler; // Der Kompo das SSL mitgeben damit es eine SSL Verbindung aufbauen kann.
  IdHTTP1.AllowCokies:=true; //Standardeinstellungen vornehmen wie Cookies und Redirects.
  IdHTTP1.HandleRedirect:=true;
  PostDataStream := TStringStream.Create('');
try
//Connect
      IdHTTP1.Post('https://kb.zumtobel.com/de.html', MyMultiPartFormDataStream, PostDataStream);
      Memo1.Text := PostDataStream.DataString;
    end;
finally
  MyMultiPartFormDataStream.Free;
  PostDataStream.Free;
  MYIOHandler.Free;
end;
end;

mjustin 30. Okt 2013 18:12

AW: Einloggen mit idhttp auf https-Server
 
Ein empfehlenswertes Werkzeug zum Aufzeichnen der POST Request/Response für das Login ist Fiddler, das einfach als Proxy benutzt wird.

CCRDude 31. Okt 2013 07:11

AW: Einloggen mit idhttp auf https-Server
 
@Sougetsu: Du hast aber schon gelesen, das da noch Javascript aufgerufen wird, sehr wahrscheinlich für das, wo Du schreibst "das dürfte klar sein"?

@Thema: da es sich um Typo3 handelt, würde ich eher vorschlagen, nach einer RPC-Schnittstelle für dieses CMS zu suchen. Die ist dann hoffentlich auch ordentlich dokumentiert. Z.B. das hier?

Sougetsu 31. Okt 2013 22:11

AW: Einloggen mit idhttp auf https-Server
 
oh stimmt hast recht, den Javascript Part hab ich nicht voll gelesen, da der von der form eigtl. nicht mitgesendet wird.
Dadurch ist mir die eine variable darin entfallen, die wie ich vermute den public key des rsa darstellt!?

die Stelle wo ich geschrieben habe, das dürfte klar sein, bezog sich nur auf username und password, nicht auf die anderen Objekte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:25 Uhr.
Seite 1 von 2  1 2      

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