ubuntuusers.de

Webseiten-Login-Script

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

der.markus

Anmeldungsdatum:
19. September 2010

Beiträge: 5

Hallo zusammen,

Ich habe in einem kleinen Multimediasystem (Telekom S100) Debian in einer minimal-Ausführung (also ohne graphische Oberfläche) installiert und lasse darauf ein schlankes Mediacenter laufen. Soweit funktioniert das auch prächtig, nur würde ich nun gerne auch Internet darauf haben.

Dieses bekomme ich hier (in einem Studentenwohnheim) via Kabel, wobei ich mich bei jedem Systemstart erst einmal auf einer "https://"-Seite mit meinen Login-Daten anmelden muss. Ich würde das gerne als Bash-Skript realisieren, was auch eigentlich keine große Sache sein sollte, nur leider habe ich da schon alles Mögliche ausprobiert und das Internet schon des öfteren durchforstet, leider ohne Erfolg. (Ich benutze zwar schon ein gutes Jahr Ubuntu, jedoch leider bisher nur sehr oberflächlich)

Es wäre echt super lieb von euch, wenn ihr mir da aus der Patsche helfen könntet, weil so ein Media-PC ohne Internet macht ja nicht wirklich Spaß.

Also schonmal vielen Dank im Vorraus!

Damit ihr seht, dass ich auch schon selbst tätig war hier mein momentanes Skript 😉 :

curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" \

--cookie cjar --cookie-jar cjar \

--data "username=mein_benutzername" \

--data "password=mein_passwort" \

--data "Login=Login" \

--location "https://loginwebsite">/tmp/tmp.html

Die entsprechenden Zeilen aus dem Seitenquelltext habe ich hier nochmal rausgeschrieben:

- Die Benutzernamen-Textbox:

<td valign="top"><input type="text" name="username"></td>

- Die Passwort-Textbox:

<td valign="top"><input type="password" name="password"></td>

- Und die beiden Buttons:

<td><input type="submit" name="action" value="Login" size="50"><br></td>

<td><input type="submit" name="action" value="Logout" width="500"></td>

Ach ja:

Das Programm liefert folgenden Output in der Konsole, wenn ich es ausführe:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

100  4200    0  4154  100    46  15231    168 --:--:-- --:--:-- --:--:-- 15442

Bearbeitet von tomtomtom:

Codeblöcke eingefügt. Bitte nutze die Forensyntax. Ubuntu aus Versionsauswahl entfernt.

DiBo33

Anmeldungsdatum:
16. Juni 2006

Beiträge: 1827

Als erstes was mir auffällt

--data "Login=Login" \


<input type="submit" name="action" value="Login" size="50">

der.markus

(Themenstarter)

Anmeldungsdatum:
19. September 2010

Beiträge: 5

Oh ja, klar, das scheint einem meiner verzweifelten Versuche zum Opfer gefallen zu sein.

Hab das gerade geändert und nochmal ausgeführt; funktioniert leider noch immer nicht ☹

Eine Sache ist mir gerade noch aufgefallen:

Momentan probiere ich das Skript noch auf meinem Ubuntu-Rechner (64-Bit) aus.

Am Anfang des Programms steht ja "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)". Kann das damit zusammenhängen?

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hi.

Schau doch mal mit Live HTTP Headers (oder ähnlichem), was da so alles gesendet wird. vielleicht kann diese curl auch kein https? dann probiers mal mit wget.

der.markus schrieb:

Am Anfang des Programms steht ja "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)". Kann das damit zusammenhängen?

Nein, das sollte selbst mit "Mozilla/4.73 Hans Wurst" (oder jedem beliebigen String) funktionieren

henry-06

Anmeldungsdatum:
16. Juni 2009

Beiträge: 22

Hallo Markus,

ich hab derzeit ähnliche Probleme mit curl, aber ob live http headers weiterhilft, weiß ich nicht. Ich würde mir auf jeden Fall mal Wireshark anschauen, ich benutze das tool auch und es ist erste Sahne. Dürfte es auch für debian geben.

Mit Wireshark kannst Du Deinen kompletten Netzwerkverkehr anschauen und überprüfen:

(1) Was curl sendet und für eine Antwort vom Server erhält

(2) Was der normale Browser für eine Anfrage schickt und die mit der curl Anfrage vergleichen.

Wenn Du das gemacht hast, und dennoch nicht weiterweißt, kannst Du ja die jeweiligen Mitschnitte von Wireshark hier mal zeigen.

mfg henry

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

henry-06 schrieb:

Mit Wireshark kannst Du Deinen kompletten Netzwerkverkehr anschauen und überprüfen:

Ja das ist sinnvoller als live Headers, welches nur den zweiten Fall abdeckt

Wenn Du das gemacht hast, und dennoch nicht weiterweißt, kannst Du ja die jeweiligen Mitschnitte von Wireshark hier mal zeigen.

Schau sie vorher gründlich durch, da stehen diverse Passwörter, Namen und Adressen drin.

henry-06

Anmeldungsdatum:
16. Juni 2009

Beiträge: 22

stfischr schrieb:

Schau sie vorher gründlich durch, da stehen diverse Passwörter, Namen und Adressen drin.

Stimmt, dass sollte man überprüfen und nicht wahllos veröffentlichen. Hätte ich selber schon anmerken sollen.

Allerdings sollten bei https ja eigentlich keine Passwörter sichtbar sein, deswegen heißt das ja https. 😉

mfg henry

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

henry-06 schrieb:

Allerdings sollten bei https ja eigentlich keine Passwörter sichtbar sein, deswegen heißt das ja https. 😉

stimmt, allerdings ist damit die komplette Ausgabe nutzlos, weil alle Daten verschlüsselt sind, soweit hatte ich garnicht gedacht. also ist live headers garnicht so verkehrt

henry-06

Anmeldungsdatum:
16. Juni 2009

Beiträge: 22

Hm, wirklich die komplette ausgabe und nicht nur die einzelnen passwörter bzw. benutzernamen? Kenn mich mit https nicht so genau aus. Und probiert hab ich das auch noch nie.

mfg henry

der.markus

(Themenstarter)

Anmeldungsdatum:
19. September 2010

Beiträge: 5

Wow, ich bin begeistert, schon so viele Menschen die helfen! ☺

Also mit live-http-headers habe ich für die Amneldung folgende Ausgabe bekommen:

https://login.rz.ruhr-uni-bochum.de/cgi-bin/laklogin



POST /cgi-bin/laklogin HTTP/1.1

Host: login.rz.ruhr-uni-bochum.de

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Connection: keep-alive

Referer: https://login.rz.ruhr-uni-bochum.de/cgi-bin/start

Cookie: __utma=164249276.726999188.1305800394.1305800394.1309252894.2; __utmz=164249276.1309252894.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=ruhr%20uni%20bochum%20pr%C3%A4sentationsfolien

Content-Type: application/x-www-form-urlencoded

Content-Length: 54

code=1&username='''******'''&password='''******'''&action=Login

HTTP/1.1 200 OK

Date: Sun, 21 Aug 2011 11:29:44 GMT

Server: Apache/2.2.9 (Debian) mod_ssl/2.2.9 OpenSSL/0.9.8o

Content-Length: 740

Keep-Alive: timeout=15, max=99

Connection: Keep-Alive

Content-Type: text/html

Soweit ich das verstehe ist ja der Block "code=1&username=******&password=******&action=Login" genau das, was ich mit dem Skript gemacht habe, oder?

Vielleicht mag curl https-Seiten ja wirklich nicht leiden...

henry-06

Anmeldungsdatum:
16. Juni 2009

Beiträge: 22

der.markus schrieb:

Soweit ich das verstehe ist ja der Block "code=1&username=******&password=******&action=Login" genau das, was ich mit dem Skript gemacht habe, oder?

Vielleicht mag curl https-Seiten ja wirklich nicht leiden...

Eigentlich nicht. Aber es wär natürlich interessant zu erfahren, was

1
wget --post-data 'username=...&password=....'

liefert, wobei ich nicht wirklich glaube, dass das funktioniert.

Und nach wie vor hielte ich es für sinnvoll, mal wireshark zu installieren und zu schauen, wie der Netzverkehr so aussieht, wenn Du curl oder wget aufrufst.

Dann erkennt man auch die unterschiede zw. curl und firefox und kann diese eventuell beseitigen.

mfg henry

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

henry-06 schrieb:

Und nach wie vor hielte ich es für sinnvoll, mal wireshark zu installieren und zu schauen, wie der Netzverkehr so aussieht, wenn Du curl oder wget aufrufst.

Ich weiß wie das aussieht 😛 HTTPS, TLS, SSL, AUTH, SYNC, ACK und häufiger mal ein ominöses Feld namens "encrypted data"

Dann erkennt man auch die unterschiede zw. curl und firefox und kann diese eventuell beseitigen.

Da kann man eigentlich nur sehen ob die Verbindung oder die Authentifizierung fehlschlägt.

Probiere mal folgendes mit wget:

wget --save-cookies unilogin.cookie https://login.rz.ruhr-uni-bochum.de/cgi-bin/start

sieht die erstellt Datei (unilogin.cookie) so ähnlich aus wie

__utma=164249276.726999188.1305800394.1305800394.1309252894.2; __utmz=164249276.1309252894.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=ruhr%20uni%20bochum%20pr%C3%A4sentationsfolien

? Dann gehts unter auth weiter ...

Edit: 2. Cookieversion:

wget --save-cookies unilogin.cookie \
     -U "Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0" \
     --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     --header='Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' \
     --header='Accept-Encoding: gzip, deflate' \
     --header='Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' \
     --header='Content-Type: application/x-www-form-urlencoded' \
     --no-check-certificate \
     https://login.rz.ruhr-uni-bochum.de/cgi-bin/start

eventuell auch mal den 'Content-Type' weglassen

auth

Achte darauf, dass ****** keine Sonderzeichen oder Leerzeichen enthalten darf, diese musst du mit %20 (etc) escapen

wget --post-data="code=1&username=******&password=******&action=Login" \
     --load-cookies unilogin.cookie \
     -U "Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0" \
     --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     --header='Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' \
     --header='Accept-Encoding: gzip, deflate' \
     --header='Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' \
     --referer="https://login.rz.ruhr-uni-bochum.de/cgi-bin/start" \
     --header='Content-Type: application/x-www-form-urlencoded' \
     --no-check-certificate \
     -p https://login.rz.ruhr-uni-bochum.de/cgi-bin/laklogin

So das ist zwar die ganz grobe Stachelkeule, aber wenns so nicht klappt, dann liegts am Cookie oder an der Verschlüsselung

PS: ich finde es echt cool, wie euch eure UNI zum Hacken animiert 😉

PPS: bitte wer mit Ahnung nochmal drüber schauen, ich mach gerne viele Fehler.

henry06

Anmeldungsdatum:
19. November 2007

Beiträge: 51

stfischr schrieb:

henry-06 schrieb:

Und nach wie vor hielte ich es für sinnvoll, mal wireshark zu installieren und zu schauen, wie der Netzverkehr so aussieht, wenn Du curl oder wget aufrufst.

Ich weiß wie das aussieht 😛 HTTPS, TLS, SSL, AUTH, SYNC, ACK und häufiger mal ein ominöses Feld namens "encrypted data"

Stimmt, hab grad mal mein gmx einloggen mitgeschnitten.

Hab ich wohl mist erzählt... Sorry 😳

mfg henry

der.markus

(Themenstarter)

Anmeldungsdatum:
19. September 2010

Beiträge: 5

Ich glaub es nich! Ihr seid spitze 😀

Es funktioniert alles wie's soll!

Also in dieser Version:

wget --save-cookies unilogin.cookie https://login.rz.ruhr-uni-bochum.de/cgi-bin/start

und

wget --post-data="code=1&username=******&password=******&action=Login" \
     --load-cookies unilogin.cookie \
     -U "Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0" \
     --header='Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
     --header='Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3' \
     --header='Accept-Encoding: gzip, deflate' \
     --header='Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7' \
     --referer="https://login.rz.ruhr-uni-bochum.de/cgi-bin/start" \
     --header='Content-Type: application/x-www-form-urlencoded' \
     --no-check-certificate \
     -p https://login.rz.ruhr-uni-bochum.de/cgi-bin/laklogin

hat's super geklappt.

Vielen Dank dafür ☺

PS.: Ja da soll nochmal jemand sagen, die Uni würde einen nicht auch fachübergreifend fördern und fordern!

Edit:

Eine Frage hätte ich vielleicht noch um komplett begeistert zu sein:

Das ist doch bestimmt möglich, dieses Skript beim Start des Betriebssystems automatisch auszuführen oder?

Weiß jemand wie ich das realisieren könnte?

henry06

Anmeldungsdatum:
19. November 2007

Beiträge: 51

Guckst Du hier: Autostart

mfg henry

Antworten |