SSHA ist ein Format für SHA-1 Hashes mit Salt und wird von manchen Programmen genutzt um Passwort-Hashes zu speichern. Hierfür wird zunächst ein Salt an das Passwort angehängt und davon ein SHA-1-Hash gebildet. Danach wird an den Hash nochmal das Salt angehängt und das ganze mit base64 kodiert.
Hier ein kleines Script, das ein Passwort als Parameter erwartet und daraus ein SSHA-Hash generiert.
#!/bin/bash
saltlen=8
salt="$(cat /dev/urandom | head -c $saltlen)"
pwsalt=$1$salt
pwhash="$(head -c -1 << EOF | openssl dgst -sha1 -binary
$pwsalt
EOF
)"
ssha="$(head -c -1 << EOF | base64
$pwhash$salt
EOF
)"
ssha="{SSHA}$ssha"
echo $ssha
Es kommt des Öfteren vor, dass man einen Netzwerk-Service testen, oder allgemein mit einer Anwendung über Sockets kommunizieren möchte. Viele verwenden dafür telnet, jedoch ist das eine Zweckentfremdung des Programms. Telnet ist eigentlich ein Fernwartungstool, das heute nur noch selten eingesetzt wird, weil es unsicher ist. Der Telnet-Client kann aber für die meisten textbasierten Protokolle verwendet werden. Z.B. wird telnet manchmal verwendet, um manuell einen HTTP-Request auszuführen. Es gibt jedoch ein Tool, was genau für solche Zwecke gedacht ist, nämlich netcat, das oft als "TCP/IP swiss army knife" bezeichnet wird. Netcat kann natürlich mehr als nur die Standardeingabe zum Server zu schicken und die Antworten auszugeben. Es unterstützt unter anderem auch UDP, es kann als Server verwendet werden und im Gegensatz zu telnet kann netcat mit Pipes und Redirections umgehen.
Ein typischer Anwendungsfall ist, dass mit netcat eine Verbindung zu einem Server aufgebaut wird, die Standardeingabe von Netcat an den Server geschickt wird und die Antwort vom Server ausgegeben wird. Im folgendem Beispiel wird eine Verbindung zu einem Webserver hergestellt und ein HTTP-Request abgeschickt.
$ nc unixwork.de 80
GET / HTTP/1.1
Host: unixwork.de
HTTP/1.1 307 Temporary Redirect
Server: Apache-Coyote/1.1
Location: /blog/
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 0
Date: Wed, 05 Nov 2014 20:14:29 GMT
...
Ein weiteres und komplexeres Beispiel sei der Wikipedia entlehnt:
{ echo -ne "HTTP/1.0 200 OK\r\n\
Content-Length: $(wc -c < some.file)\r\n\r\n";\
cat some.file; } | nc -l 8080
Fertig ist ein kleiner Webserver, der eine Datei überträgt.
Es gibt mitlerweile viele Varianten von netcat, unter anderem auch welche, die SSL unterstützen. Für Windows ist netcat ebenfalls erhältlich.