कुछ CTF चुनौतियों को ऑनलाइन हल करते समय, मैं एक ऐसी स्थिति में आया था जहाँ मुझे एक सर्वर को bruteforce करने की आवश्यकता थी। यह मेरे द्वारा लिखा गया कोड है:
#!/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 तक संयोजनों की कोशिश करने की आवश्यकता थी और प्रत्येक 10 कोशिशों के लिए यह लगभग 5 सेकंड था। फिर, एक सलाह के बाद, मैंने इस पंक्ति के अंत में एक 'और' डाला:
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
?
&
पृष्ठभूमि में कमांड चलाता है, बस इतना ही। यह तेज या कुछ भी नहीं बना। जो भी शेल का उपयोग कर रहे हैं उसे पढ़ें (मैं मान लेता हूं) मैनुअल।