मैं केवल ack या syn पैकेट को पकड़ने के लिए एक फिल्टर नियम का उपयोग करना चाहता हूं। मैं यह कैसे करु?
मैं केवल ack या syn पैकेट को पकड़ने के लिए एक फिल्टर नियम का उपयोग करना चाहता हूं। मैं यह कैसे करु?
जवाबों:
PCAP फिल्टर वाक्य रचना tcpdump के लिए इस्तेमाल किया wireshark कब्जा फिल्टर पर ठीक उसी तरह काम करना चाहिए।
Tcpdump के साथ मैं इस तरह से एक फ़िल्टर का उपयोग करूँगा।
tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"
की जाँच करें tcpdump आदमी पेज , और tcpflags पर अधिक ध्यान दें।
कैप्चर और फ़िल्टर प्रदर्शित करने के बारे में Wireshark Wiki में अनुभाग भी देखें। दुर्भाग्य से दो प्रकार के फिल्टर एक ही चीज़ के लिए एक पूरी तरह से अलग सिंटैक्स, और अलग-अलग नामों का उपयोग करते हैं।
यदि आप कैप्चर फ़िल्टर के बजाय डिस्प्ले फ़िल्टर चाहते हैं, तो आपको संभवतः tcp.flags.ack और tcp.flags.syn के संयोजन की अभिव्यक्ति बनाने की आवश्यकता होगी। मैं हालांकि कैप्चर फ़िल्टर से अधिक परिचित हूं, इसलिए आपको अपने दम पर काम करना होगा।
जबकि @ ज़ोर्डचे का उत्तर अच्छा और पूर्ण है, ध्यान दें कि सिंटैक्स किसी भी पैकेट का उत्पादन करेगा जिसमें टीसीपी एसवाईएन या टीसीपी एसीके ध्वज सेट है, जिसमें पैकेट भी शामिल हैं जो कड़ाई से सीधे सादे "टीसीपी एसएनएन" या "टीसीपी एसीके" पैकेट नहीं हैं, क्योंकि वे अन्य झंडे भी लगाए हैं। यह हो सकता है या आप (या भविष्य के पाठकों) का इरादा नहीं हो सकता है। उदाहरण के लिए, वह सिंटैक्स टीसीपी SYN-ACK पैकेट, टीसीपी फिन-एसीके आदि को भी कैप्चर करेगा, यदि आप केवल TCP SYN या TCP ACK पैकेट चाहते हैं (यानी उन झंडे सेटों में से एक), तो उचित कैप्चर फ़िल्टर सिंटैक्स है:
'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'
इसके तुल्य:
'tcp[13] == 2 or tcp[13] == 16'
चीयर्स!
मैंने शीर्ष "सिंकर्स" देखने के लिए एक स्क्रिप्ट बनाई। उसके लिए, मैं केवल प्रारंभिक सिंक पैकेट (तीन पैकेट हैंडशेक का पहला पैकेट) पर विचार करता हूं। अर्थात्, syn = 1, ack = 0
while :; do
date;
tcpdump -i eth1 -n -c 100 \
'tcp[tcpflags] & (tcp-syn) != 0' and
'tcp[tcpflags] & (tcp-ack) == 0' 2> /dev/null \
| awk '{ print $3}' \
| sort | uniq -c | sort | tail -5;
echo;
sleep 1
done
tcpdump 'tcp[13] = 3'
http://danielmiessler.com/study/tcpdump/
उन्नत
आप पैकेट के विशिष्ट भागों के आधार पर फ़िल्टर कर सकते हैं, साथ ही समूहों में कई स्थितियों को जोड़ सकते हैं। पूर्व उपयोगी है जब केवल SYN
एस या RST
एस की तलाश में, उदाहरण के लिए, और बाद में भी अधिक उन्नत यातायात अलगाव के लिए।
यूएपी आरएसएफ
[संकेत: टीसीपी झंडे के लिए विपर्यय: अकुशल हमलावरों पेस्टर वास्तविक सुरक्षा लोक]
आपका ज्ञापन: ...
मुझे सभी URGENT ( URG
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 32 != 0'
मुझे सभी ACKNOWLEDGE ( ACK
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 16 != 0'
मुझे सभी PUSH ( PSH
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 8 != 0'
मुझे सभी RESET ( RST
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 4 != 0'
मुझे सभी SYNCHRONIZE ( SYN
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 2 != 0'
मुझे सभी को अंतिम ( FIN
) पैकेट दिखाएं ...
tcpdump 'tcp[13] & 1 != 0'
मुझे सभी SYNCHRONIZE / ACKNOWLEDGE ( SYNACK
) पैकेट दिखाएं ...
tcpdump 'tcp[13] = 18'
[ नोट: केवल PSH
, RST
, SYN
, और FIN
झंडे tcpdump के झंडे क्षेत्र उत्पादन में प्रदर्शित होते हैं। URG
s और ACK
s प्रदर्शित किए जाते हैं, लेकिन वे झंडे के क्षेत्र के बजाय आउटपुट में कहीं और दिखाए जाते हैं]
मैं स्वयं केवल SYN पैकेट प्राप्त करना चाहता था, मैंने निम्नलिखित कमांड का उपयोग किया:
tcpdump -i eth7 'tcp[13] & 2 != 0'
यह आपके लिए सीधा काम करना चाहिए।
tcpdump -s SIZE
। टीसीपी हेडर एक चर लंबाई हो सकती है, इसलिए कैप्चरिंग-s 128
से संभवतः सभी संभव हेडर मिलेंगे और शायद थोड़ा सा डेटा।