Mientras resolvía algunos desafíos de CTF en línea, me encontré con una situación en la que necesitaba forzar un servidor. Este es el código que escribí:
#!/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
Esto fue increíblemente, dolorosamente lento . Necesitaba probar combinaciones de 1000 a 9999 y esto tomó alrededor de 5 segundos por cada 10 intentos. Luego, siguiendo un consejo, pongo un '&' al final de esta línea:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
Y, probó cientos de combinaciones en segundos. Estaba muy sorprendido. ¿Alguien podría explicarme la lógica? ¿Qué hizo el '&'?
for i in {1000..9999}
wait
embargo, debe incluir un al final.
nc -z localhost 1000-2000
?
&
hace que el comando se ejecute en segundo plano, eso es todo. No lo hizo más rápido ni nada. Lea el manual de shell que esté utilizando (supongo que bash).