Вирішуючи деякі проблеми CTF в Інтернеті, я натрапив на ситуацію, коли мені потрібно було змусити працювати над сервером. Це код, який я написав:
#!/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
Це було неймовірно, болісно повільно . Мені потрібно було спробувати комбінації від 1000 до 9999, і це займало близько 5 секунд на кожні 10 спроб. Потім, дотримуючись поради, я ставлю "&" в кінці цього рядка:
echo "a fixed string" $i | nc localhost *port here* >> /tmp/me/dump.txt &
І, він спробував 100 комбінацій протягом декількох секунд. Я був дуже здивований. Може хтось пояснить мені логіку? Що зробили "&"?
for i in {1000..9999}
wait
в кінці.
nc -z localhost 1000-2000
?
&
змушує команду виконуватись у фоновому режимі, ось і все. Це не зробило це швидше чи нічого. Прочитайте будь-які оболонки, якими ви користуєтесь (я вважаю, баш).