nc
Der Shell-Befehl nc (netcat) wird als "TCP/IP swiss army knife" bezeichnet.
Optionen
Option | Beschreibung |
---|---|
-l | (listen) Start als Server. |
-p | (port) Port, auf dem nc als Server lauscht. |
-v | (verbose) Ausführliche Ausgabe. |
-z | (zero-I/O mode) Portscanner-Modus. |
Verwendung
Kopieren einer Datei
Kopieren der Datei "eingabe.txt" vom Rechner "emu" zum Rechner "uhu". Dazu wird auf Rechner "uhu" nc als Server ("-l") auf Port 6000 ("-p 6000") gestartet. Eine Ausgabeumleitung sorgt dafür dass nc die Daten in die Datei "ausgabe.txt" schreibt. Auf Rechner "emu" genügen dann die Parameter "uhu" und "6000", um mit "< eingabe.txt" die Datei "eingebae.txt" an den Rechner "uhu" zu übergeben. Nach Eingabe des Befehls auf Rechner "emu" muss der Befehl mit "CTRL+C" abgebrochen werden, der nc-Server auf Rechner "uhu" beendet sich damit ebenfalls.
uhu:~$ nc -l -p 6000 > ausgabe.txt emu:~$ nc uhu 6000 < eingabe.txt CTRL+C
Kopieren eines Verzeichnisses
Das aktuelle Verzeichnis auf Rechner "emu" wird durch die Pipe "|" in einen Tarball gepackt, an den Rechner "uhu" geschickt und dort entpackt.
uhu:~$ nc -l -p 6000 | tar x emu:~$ tar cf - * | nc uhu 6000 CTRL+C
Postfach abfragen
Abfrage der Mails eines Postfachs über das Post Office Protocol.
$ nc pop.abc.xx 110 user Benutzername pass Passwort list quit
In entsprechender Weise können auch Verbindungen zu SMTP-, NNTP- oder FTP-Servern hergestellt werden.
Portscanner
Anzeige der auf dem lokalen Rechner "localhost" zwischen Port 1 und 1024 laufenden Dienste. Der Parameter "-v" sorgt für eine ausführliche Ausgabe, "-z" versetzt nc in den Portscanner-Modus.
$ nc -vz localhost 1-1024 localhost [127.0.0.1] 631 (ipp) open localhost [127.0.0.1] 80 (www) open localhost [127.0.0.1] 25 (smtp) open localhost [127.0.0.1] 22 (ssh) open
Anzeige des Ports auf dem lokalen Rechner, auf dem ein SMTP-Server läuft.
$ nc -vz localhost smtp localhost [127.0.0.1] 25 (smtp) open
Kommunikation mit Diensten
Kopieren der Einstiegsseite des WWW-Servers vom Rechner "www.linux-user.de" ins lokale Verzeichnis unter dem Namen "linuxuser.html". Dabei wird mit "echo -e" der sogenannte REQUEST durch die Pipe "|" an nc übergeben - diese Anfrage stellt normalerweise ein Webbrowser.
$ echo -e "GET / HTTP/1.0\r\n" | nc www.linux-user.de 80 > linuxuser.html
Die Einstiegsseite des WWW-Servers vom Rechner "www.linux-user.de" wird auf dem lokalen Rechner unter Port 8080 zur Verfügung gestellt und kann dort mit dem Webbrowser ("http://localhost:8080/") angesehen werden. Der Parameter "-q 1" beendet nc nach einer Sekunde, wenn das Ende der Datei erreicht wurde. Auf der Shell sind dabei die Header-Daten zu sehen, wie sie beispielsweise auch in der Logdatei eines Webservers zu sehen sind.
$ echo -e "GET / HTTP/1.0\r\n" | nc www.linux-user.de 80 | nc -l -p 8080 -q 1 GET / HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.18) Gecko/2010021501 Ubuntu/8.04 (hardy) Firefox/3.0.18 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-ch,de-de;q=0.8,de;q=0.6,en-us;q=0.4,en;q=0.2 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cookie: wikidbUserID=3; wikidbUserName=Mik; wikidb_session=6685748448b46dd92656d3b5c3b0c78d