Durante la risoluzione di alcune sfide CTF online, mi sono imbattuto in una situazione in cui avevo bisogno di rinforzare un server. Questo è il codice che ho scritto:
#!/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
Questo è stato incredibilmente, dolorosamente lento . Avevo bisogno di provare combinazioni da 1000 a 9999 e questo impiegava circa 5 secondi per ogni 10 tentativi. Quindi, seguendo un consiglio, ho inserito un '&' alla fine di questa riga:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
E, ha provato centinaia di combinazioni in pochi secondi. Ero molto sorpreso. Qualcuno potrebbe spiegarmi la logica? Cosa ha fatto il '&'?
for i in {1000..9999}
wait
a alla fine, comunque.
nc -z localhost 1000-2000
?
&
fa funzionare il comando in background, tutto qui. Non lo ha reso più veloce o altro. Leggi il manuale di qualunque shell tu stia usando (presumo bash).