Während ich einige CTF-Herausforderungen online löste, stieß ich auf eine Situation, in der ich einen Server bruteforce musste. Dies ist der Code, den ich geschrieben habe:
#!/bin/bash
for i in {0..9}{0..9}{0..9}{0..9}
do
echo "Now trying code.."
echo $i
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt
done
Das war unglaublich, schmerzhaft langsam . Ich musste Kombinationen von 1000 bis 9999 ausprobieren und das dauerte ungefähr 5 Sekunden für jeweils 10 Versuche. Dann, einem Rat folgend, setze ich ein '&' am Ende dieser Zeile:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
Und es wurden innerhalb von Sekunden Hunderte von Kombinationen ausprobiert. Ich war sehr überrascht. Könnte mir jemand die Logik erklären? Was hat das '&' getan?
for i in {1000..9999}
wait
am Ende einfügen.
nc -z localhost 1000-2000
?
&
Lässt man den Befehl im Hintergrund laufen, ist das alles. Es hat es nicht schneller gemacht oder so. Lesen Sie das Handbuch der Shell, die Sie verwenden (ich nehme an, bash).