WLAN Anmeldung per Script

Themen, die in keine andere Kategorie passen

Moderator: Co-Administratoren

Duescher
Beiträge: 28
Registriert: 06.06.2009, 16:29
Hat sich bedankt: 7 Mal

WLAN Anmeldung per Script

Beitrag von Duescher » 05.01.2024, 13:00

Hallo, trotz aller Suche finde ich im Forum keine Antwort. Wahrscheinlich ist mein Problem zu trivial. Aber fuer mich zu schwierig um es allein zu loesen.

Hintergrund:
In einer Eigentumswohungsanlage stellt die Eigentuemergemeinschaft per WLAN Internet zur Verfuegung. Jeder Eigentuemer hat Benutzername und Passwort erhalten. Zum LogIn muss man sich per WLAN mit diesen Daten auf einer Anmeldeseite anmelden. Die Verbindung bleibt dann fuer laengere Zeit bestehen. Nach nicht kalkulierbarer Zeit wird die Verbindung jedoch beendet und man muss sich erneut mit Benutzername und Passwort anmelden.

Solange ich vor Ort bin, ist das auch kein Problem. Manchmal ist aber die Homematic dort allein und verliert so den Kontakt zur Aussenwelt.

Ich moechte nun, dass die Homematic die Anmeldung per Script durchfuehrt:

meine Versuche mit:

system.Exec("wget --post-data 'username=XYZ&password=1234' http://192.168.16.1/login/");

haben leider keinen Erfolg.

Kann mir jemand helfen?

Hier ist der Quelltext der Anmeldeseite:

Code: Alles auswählen

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>internet hotspot > login</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="expires" content="-1" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0;"/>
<style type="text/css">
body {
	color: #737373;
	font-size: 10px;
	font-family: verdana;
	background: url('img/bg.jpg') no-repeat;
	background-size: cover;
}

@media (max-width: 1000px) {
	body {
		background-size: auto;
	}
}

textarea,input,select {
background-color: #FDFBFB;
border: 1px solid #BBBBBB;
padding: 2px;
margin: 1px;
font-size: 14px;
color: #808080;
}

a, a:link, a:visited, a:active { color: #AAAAAA; text-decoration: none; font-size: 10px; }
a:hover { border-bottom: 1px dotted #c1c1c1; color: #AAAAAA; }
img {border: none;}
td { font-size: 14px; color: #7A7A7A; }

.container {

	padding: 15px;
}
</style>

</head>

<body>

	<form name="sendin" action="http://192.168.16.1/login" method="post">
		<input type="hidden" name="username" />
		<input type="hidden" name="password" />
		<input type="hidden" name="dst" value="" />
		<input type="hidden" name="popup" value="true" />
	</form>
	
	<script type="text/javascript" src="/md5.js"></script>
	<script type="text/javascript">
	<!--
	    function doLogin() {
		document.sendin.username.value = document.login.username.value;
		document.sendin.password.value = hexMD5('\217' + document.login.password.value + '\354\244\150\162\177\153\276\023\152\303\054\066\134\131\166\110');
		document.sendin.submit();
		return false;
	    }
	//-->
	</script>



<table width="100%" style="margin-top: 10%;">
	<tr class="container">
	<td align="center" valign="middle">
		<!--
		<div class="notice" style="color: #c1c1c1; font-size: 9px">Please log on to use the internet hotspot service<br /></div><br />
		-->
		<table width="280" height="280" style="border: 1px solid #cccccc; padding: 0px;background-color: white;border-radius:15px;" cellpadding="0" cellspacing="0">
			<tr>
				<td align="center">
					<a href="http://www.XXXXXXXXX.com" target="_blank" style="border: none;">
						<img src="img/logo_300.png" alt="Rentel Wifi" style="width: 100%; max-width: 50px;"/></a><br>
					XXXXXXXXXXX
				</td>
			</tr>
			<tr>
				<td colspan="2" style="text-align: center;">
					<h1>XXXXXXXXXXX</h1>
				</td>
			</tr>
			<tr>
				<td align="center" valign="center" height="175" colspan="2">
					<form name="login" action="http://192.168.16.1/login" method="post"
					     onSubmit="return doLogin()" >
						<input type="hidden" name="dst" value="" />
						<input type="hidden" name="popup" value="true" />
						
							<table width="100" style="background-color: #ffffff">
								<tr><td align="right">Usuario:</td>
										<td><input style="width: 80px" name="username" type="text" value=""/></td>
								</tr>
								<tr><td align="right">Contraseña:</td>
										<td><input style="width: 80px" name="password" type="password"/></td>
								</tr>
								<tr><td>&nbsp;</td>
										<td><input type="submit" value="Conectar" style="padding: 5px 10px;" /></td>
								</tr>
								<tr>
									<td colspan="2" style="text-align: center;">
										
									</td>

								</tr>
							</table>
					</form>
				</td>
			</tr>

		</table>
	


	</td>
	</tr>
</table>

<script type="text/javascript">
<!--
  document.login.username.focus();
//-->
</script>
</body>
</html>
Zuletzt geändert von Duescher am 14.01.2024, 23:14, insgesamt 1-mal geändert.

Dennis-HM
Beiträge: 256
Registriert: 19.02.2023, 18:40
System: CCU
Hat sich bedankt: 16 Mal
Danksagung erhalten: 23 Mal

Re: WLAN Anmeldung per Script

Beitrag von Dennis-HM » 05.01.2024, 13:12

Wenn welchem Hersteller/Firma ist denn das Wifi-Portal?

Und funktioniert das wget von der Kommadozeile es PCs aus? Um überhaupt zu prüfen, ob es geht?

Und im Quelltext wird das Passwort noch gehasht, müsste dann auch für das wget gemacht werden.

Kann die CCU MD5?

Edit: und dst und popup als Parameter müssten vielleicht auch noch mitgesendet werden.

Edit: gehasht und nicht gehast :-o
Zuletzt geändert von Dennis-HM am 05.01.2024, 14:26, insgesamt 1-mal geändert.

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: WLAN Anmeldung per Script

Beitrag von McPan » 05.01.2024, 13:45

Bitte Quelltext im Post in Code-Tags (</> Symbol) setzten.

Eventuell mal die Parameter

Code: Alles auswählen

--method=POST
und/oder

Code: Alles auswählen

--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36" "https://httpbin.io/user-agent" 
hinzufügen.
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD


McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: WLAN Anmeldung per Script

Beitrag von McPan » 05.01.2024, 13:54

Dennis-HM hat geschrieben:
05.01.2024, 13:12
...
Kann die CCU MD5?
...
Die Raspberrymatic kann "md5sum", ich denke die originale CCU3 auch.

Dennis-HM hat geschrieben:
05.01.2024, 13:12
...
Und im Quelltext wird das Passwort noch gehast, müsste dann auch für das wget gemacht werden.
...
Edit: und dst und popup als Parameter müssten vielleicht auch noch mitgesendet werden.
Das ist wohl das Stichwort.

Code: Alles auswählen

document.sendin.password.value = hexMD5('\217' + document.login.password.value + '\354\244\150\162\177\153\276\023\152\303\054\066\134\131
Hier werden noch Character vor und hinter das eigentliche Passwort gehängt, bevor der MD5-Hash gebildet wird.
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

Duescher
Beiträge: 28
Registriert: 06.06.2009, 16:29
Hat sich bedankt: 7 Mal

Re: WLAN Anmeldung per Script

Beitrag von Duescher » 06.01.2024, 10:37

Wenn welchem Hersteller/Firma ist denn das Wifi-Portal?

Und funktioniert das wget von der Kommadozeile es PCs aus? Um überhaupt zu prüfen, ob es geht?
Der WLAN Server scheint MikroTik zu sein. Wer das WiFi Portal geschrieben hat kann ich leider nicht rauskriegen und wget funktioniert von der Konsole aus auch nicht.

Vielen Dank Euch allen. Nach den Antworten muss ich leider feststellen, dass ich mir das Ganze zu einfach vorgestellt hatte. Meine Kenntnisse reichen huerfuer einfach nicht aus.

Ich danke Allen
Carsten

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: WLAN Anmeldung per Script

Beitrag von McPan » 06.01.2024, 19:22

Probier mal

Code: Alles auswählen

system.Exec("PASSWORD=`printf '\217GEHEIM\354\244\150\162\177\153\276\023\152\303\054\066\134\131\166\110' | md5sum
| awk '{print $1}'` && wget --post-data 'username=XYZ&password='$PASSWORD'' http://192.168.16.1/login/");
wobei das "GEHEIM" zwischen der \217 und \354 natürlich durch dein eigenes Passwort und XYZ durch deinen Benutzernamen zu ersetzen ist.

Der Sinn und die Verwendung der Werte "dst" und "popup" erschließen sich mir hier gerade nicht.

Bleibt auch noch zu hoffen, dass die Werte, die vor und hinter das Passwort gehängt werden, auch tatsächlich konstante Werte sind und nicht in gewissen Zeitabständen zufällig erzeugt werden. Ggf. noch mal den aktuellen Seitenquelltext anschauen und mit deinem Post vergleichen.

Weiter bleibt zu hoffen, dass die im Javascript der Seite verwendete "hexMD5()"-Funktion auch tatsächlich nur einen MD5-Hash und nichts anderes erzeugt.
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

Duescher
Beiträge: 28
Registriert: 06.06.2009, 16:29
Hat sich bedankt: 7 Mal

Re: WLAN Anmeldung per Script

Beitrag von Duescher » 09.01.2024, 19:25

Hallo Marco,

vielen Dank fuer die Deine Muehe.
Ich habe den String auf der RaspiMatic (CCU3) vor Ort ausprobiert. Funktioniert leider nicht.
Mein Gefuehl sagt mir allerdings, dass es moeglicherweise an dem "dst" und "popup" liegen koennte.
Als Anhang fuege ich mal einen Screenshot von der LogIn Seite
2024-01-09 Screenshot LogIn Seite.jpg
bei.
Zum LogIn muss man die Felder Usuario=User und Contrasena=Password mit der Tabulatortaste oder dem Mauscursor anwaehlen und dann jeweils den Text eingeben. zum Abschluss muss man das Feld "Connectar" entweder mit der Maus anklicken, oder mit der Tabulatortaste auswaehlen und "Enter" auf der Tastatur druecken. Vielleicht hat das letzte etwas mit den Werten "dst" und "popup" zu tun.

Wenn man bereits eingeloggt ist, und die LogIn-Seite aufruft, wird man zur Status-Seite weitergeleitet. Vielleicht hat auch das was damit zu tun.

Ich versuche schon seit zwei Jahren, diesen automatischen LogIn hinzukriegen. Deshalb habe ich den Quellcode mehrere Male gespeichert. Der Quellcode, also auch die Ziffern vor und hinter dem Passwort, haben sich in den letzten zwei Jahren nicht geaendert.

Ich habe auch noch Screenshots von der Status-Seite
2024-01-09 Screenshot Statur Seite.jpg
, die angezeigt wird, wenn man eingeloggt ist, und von der Seite, die angezeigt wird, wenn man sich abgemeldet hat
2024-01-09 Screenshot LogOut Seite.jpg
gemacht. Auch habe ich den Quelltext der Status-Seite
2024-01-09 Quelltext Status Seite.txt
(133.61 KiB) 12-mal heruntergeladen
kopiert. Alle diese Sachen fuege ich als Dateianhaenge bei.

Ich wuerde mich freuen, wenn Du Dir das bei Gelegenheit noch mal ansehen koenntest.

Danke Carsten

Dennis-HM
Beiträge: 256
Registriert: 19.02.2023, 18:40
System: CCU
Hat sich bedankt: 16 Mal
Danksagung erhalten: 23 Mal

Re: WLAN Anmeldung per Script

Beitrag von Dennis-HM » 10.01.2024, 12:18

Diese beiden Parameter dst und popup würde ich auch mitsenden.
Und auch den User-Agent, wie oben beschrieben.
Je näher ein wget Request dem Browser Request ähnelt, umso größer die Chance.

McPan
Beiträge: 222
Registriert: 29.11.2021, 07:04
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 12 Mal
Danksagung erhalten: 44 Mal

Re: WLAN Anmeldung per Script

Beitrag von McPan » 10.01.2024, 16:41

Ist auf jeden Fall einen Versuch wert.

"popup" wird ja mit "true" initalisiert und mitgeschickt. Das könnte sich auf den Anmeldedialog selbst oder ein danach erscheinendes Festerchen handeln. Kann man testweise vielleicht auch mal mit "false" übermitteln, vielleicht klappt' s damit dann.

"dst" wird mit einem leeren Wert initalisiert. Den Parameter in den Post-Daten aber genauso mitzuschicken dürfte an dieser Stelle auch nicht schaden. Also ausprobieren! Nachträgliche Manipulationen über die Anmeldeseite sind offensichtlich erst einmal nicht zu sehen.

Interessant wäre auch die Ausgabe von "http://192.168.16.1/md5.js", wo vermutlich die Funktion "hexMD5()" mit drinsteckt, um zu schauen, ob die tatsächlich "nur" einen MD5-Hash bildet, oder ob sich hinter "hex" im Namen noch weitere Anpassungen verbergen. In diesem Fall funktionert's mit der automatischen Anmeldung logischerweise auch nicht.

In der zuletzt geposteten Statusseite habe ich auf die Schnelle nicht's gesehen, was uns hier weiterhelfen könnte.
Grüße,
Marco

Elektrische Bauteile funktionieren mit Rauch. Der Beweis: tritt der Rauch aus, funktioniert das Bauteil nicht mehr!
Raspberrymatic @ RPi3b+, HmIP mit RPi-RF-MOD

Antworten

Zurück zu „OffTopic“