ubuntuusers.de

Quellcode einer URL in Bash öffnen

Status: Gelöst | Ubuntu-Version: Xubuntu 15.10 (Wily Werewolf)
Antworten |

i_byte_u

Anmeldungsdatum:
9. Dezember 2015

Beiträge: 4

Hallo liebe Gemeinde,

ich mache zur Zeit eine Umschulung in der IT Branche. Wir haben die Aufgabe bekommen, uns einen http-Quellcode in der Konsole (bash oder sh) anzeigen zu lassen. OHNE andere Programme wie Links. Also rein in der Shell.

Ich finde im WWW leider immer nur Anleitungen zu anderen Programmen wie "curl" usw.

Ich hoffe hier kann mir jemand helfen.

Lieben Gruß Chris

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Mit neueren Versionen der Bash geht das beispielsweise so:

1
2
3
exec 3<>/dev/tcp/$DEIN_HOST/$DEIN_PORT
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

Falls ihr telnet verwenden dürft:

1
2
3
4
5
$ telnet $DEIN_HOST $DEIN_PORT
GET / HTTP/1.1
Host: $DEIN_HOST

[hier erscheint die Ausgabe]

(Beachte: Nach der Host-Header-Zeile muss 2x Enter gedrückt werden)

stfischr Team-Icon

Avatar von stfischr

Anmeldungsdatum:
1. März 2007

Beiträge: 19197

Hi.

i_byte_u schrieb:

Wir haben die Aufgabe bekommen, uns einen http-Quellcode in der Konsole (bash oder sh) anzeigen zu lassen.

Was genau? http-Protokollbefehle oder HTML-"Quelltext"?

OHNE andere Programme wie Links. Also rein in der Shell.

wget blablubb.de/html-Datei.xhtml
cat html-Datei.xhtml

um den Quelltext anzuschauen.

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

stfischr schrieb:

wget blablubb.de/html-Datei.xhtml cat html-Datei.xhtml

Wenn wget verwendet werden darf, geht das auch so:

1
wget -q -O- $URL

Ich gehe aber mal davon aus, dass wget auch nicht verwendet werden darf.

i_byte_u

(Themenstarter)

Anmeldungsdatum:
9. Dezember 2015

Beiträge: 4

misterunknown schrieb:

Mit neueren Versionen der Bash geht das beispielsweise so:

1
2
3
exec 3<>/dev/tcp/$DEIN_HOST/$DEIN_PORT
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

Falls ihr telnet verwenden dürft:

1
2
3
4
5
$ telnet $DEIN_HOST $DEIN_PORT
GET / HTTP/1.1
Host: $DEIN_HOST

[hier erscheint die Ausgabe]

(Beachte: Nach der Host-Header-Zeile muss 2x Enter gedrückt werden)

1
exec 3<>/dev/tcp/*.*.*.165/443

So habe ich es jetzt versucht. Bekomme dann immer: Connection refused. Etherape sagt aber 443 ist offen.

Habe das auch noch nicht ganz verstanden. Wo gebe ich denn jetzt ein, dass ich den Quellcode von zb. www.google.com angezeigt haben möchte? Code }}}

misterunknown Team-Icon

Ehemalige
Avatar von misterunknown

Anmeldungsdatum:
28. Oktober 2009

Beiträge: 4403

Wohnort: Sachsen

Für Google würde das so aussehen:

1
2
3
exec 3<>/dev/tcp/www.google.com/80
echo -e "GET / HTTP/1.1\nHost: www.google.com\n\n" >&3
cat <&3

Port 443 ist normalerweise verschlüsselt. Das kriegst du mit Bash-Boardmitteln nicht hin, dazu brauchst du mindestens openssl:

1
2
3
4
5
$ openssl s_client -connect www.google.de:443
#... ausgabe des Zertifikats etc.
GET / HTTP/1.1
Host: www.google.de

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13166

misterunknown schrieb:

Mit neueren Versionen der Bash geht das beispielsweise so:

1
2
3
exec 3<>/dev/tcp/$DEIN_HOST/$DEIN_PORT
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

Beachte, dass HTTP-Header mit "\r\n" beendet werden.

i_byte_u

(Themenstarter)

Anmeldungsdatum:
9. Dezember 2015

Beiträge: 4

misterunknown schrieb:

Mit neueren Versionen der Bash geht das beispielsweise so:

1
2
3
exec 3<>/dev/tcp/$DEIN_HOST/$DEIN_PORT
echo -e "GET / HTTP/1.1\n\n" >&3
cat <&3

Vielen Dank. Damit hat es geklappt.

Antworten |