सवाल टीसीपीडम्प द्वारा एक या सिन पैकेट कैप्चर कैसे करें?


मैं केवल एक या सिंक पैकेट को कैप्चर करने के लिए फ़िल्टर नियम का उपयोग करना चाहता हूं। मैं यह कैसे करु?


45
2017-12-31 02:40


मूल


व्यक्तिगत रूप से मैं यह नहीं करूँगा। मैं सभी पैकेट कैप्चर करता हूं, फिर बाद में एसईएन और एसीके झंडे पर फ़िल्टर करता हूं। यदि आप टीसीपी की समस्या निवारण कर रहे हैं, तो आप लगभग हमेशा एक हैंडशेक या एसीके नहीं, बल्कि पूरी बातचीत देखना चाहते हैं। यदि आप वास्तविक डेटा पेलोड में रुचि नहीं रखते हैं, तो आप पैकेट आकार को सीमित कर सकते हैं tcpdump -s SIZE। टीसीपी हेडर एक परिवर्तनीय लंबाई हो सकता है, इसलिए कैप्चरिंग -s 128 शायद सभी संभावित शीर्षलेख और शायद थोड़ा सा डेटा प्राप्त होगा। - suprjami
शायद आप टीसीपी की समस्या निवारण नहीं कर रहे हैं। हो सकता है कि आप देखना चाहते हैं कि प्रोग्राम कितना चंचल है, और आप इसके आउटबाउंड कनेक्शन को गिनना चाहते हैं। अब मुझे पसंद है। - Dan Pritts


जवाब:


पकेप फिल्टर वाक्यविन्यास tcpdump के लिए प्रयोग किया जाना चाहिए wireshark कब्जा फ़िल्टर पर बिल्कुल वही काम करना चाहिए।

Tcpdump के साथ मैं इस तरह के एक फिल्टर का उपयोग करेंगे।

tcpdump "tcp[tcpflags] & (tcp-syn|tcp-ack) != 0"

इसकी जाँच पड़ताल करो टीसीपीडम्प मैन पेज, और tcpflags पर ध्यान देना।

कैप्चर और डिस्प्ले फ़िल्टर के बारे में Wireshark विकी में अनुभागों को भी देखना सुनिश्चित करें। दुर्भाग्य से दो प्रकार के फ़िल्टर एक पूरी तरह से अलग वाक्यविन्यास, और एक ही चीज़ के लिए अलग-अलग नामों का उपयोग करते हैं।

यदि आप फ़िल्टर को कैप्चर करने के बजाय डिस्प्ले फ़िल्टर चाहते थे तो आपको शायद tcp.flags.ack, और tcp.flags.syn को एक अभिव्यक्ति बनाने की आवश्यकता होगी। हालांकि मैं फ़िल्टर को कैप्चर करने से कहीं ज्यादा परिचित हूं, इसलिए आपको इसे स्वयं ही काम करना होगा।


75
2017-12-31 04:42



मुझे आपकी प्रतिक्रिया बेहतर पसंद है। ऐसा लगता है कि आप एक प्रयास में गए थे। आपके लिए उपरोक्त - Ablue
यह अच्छे संदर्भों के साथ एक अच्छा जवाब है, लेकिन कृपया ध्यान दें कि यह वाक्यविन्यास किसी भी पैकेट को कैप्चर करेगा जिसमें SYN या ACK झंडे सेट हों, भले ही अन्य झंडे भी सेट हों। यह ओपी का इरादा हो सकता है या नहीं हो सकता है। यदि केवल टीसीपी एसवाईएन या एसीके पैकेट वांछित हैं तो कृपया अधिक सख्त फ़िल्टर के लिए मेरा उत्तर नीचे देखें। चीयर्स। - JJC


जबकि @ ज़ोरर्डैच का जवाब अच्छा और पूर्ण है, ध्यान दें कि सिंटैक्स किसी भी पैकेट को प्राप्त करेगा जिसमें टीसीपी एसईएन या टीसीपी एसीके फ्लैग सेट होगा, जिसमें पैकेट शामिल हैं जो सख्ती से केवल "टीसीपी एसईएन" या "टीसीपी एसीके" पैकेट नहीं हैं, क्योंकि वे भी अन्य झंडे सेट है। यह हो सकता है कि आप (या भविष्य के पाठकों) का इरादा न हो। उदाहरण के लिए, वह वाक्यविन्यास टीसीपी एसवाईएन-एसीके पैकेट, टीसीपी फिन-एसीके इत्यादि भी कैप्चर करेगा यदि आप चाहते हैं केवल टीसीपी एसवाईएन या टीसीपी एसीके पैकेट (यानी उन झंडे सेटों में से एक), उचित कैप्चर फ़िल्टर सिंटैक्स है:

'tcp[tcpflags] == tcp-syn or tcp[tcpflags] == tcp-ack'

इसके तुल्य:

'tcp[13] == 2 or tcp[13] == 16'

चीयर्स!


13
2017-08-09 00:30





मैंने शीर्ष "synners" देखने के लिए एक स्क्रिप्ट बनाई। इसके लिए, मैं केवल प्रारंभिक सिंक पैकेट (तीन पैकेट हैंडशेक का पहला पैकेट) पर विचार करता हूं। वह है, 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

9
2018-03-25 21:35



यह एक अच्छा उदाहरण है। आप 'tcp [tcpflags] और (tcp-syn)! = 0' और 'tcp [tcpflags] और (tcp-ack) == 0' "को 'tcp [tcpflags' के साथ" tcp [tcp-syn) = = tcp [tcpflags] और (tcp-ack) == 0 '"को प्रतिस्थापित करके अपने tcpdump कैप्चर फ़िल्टर को और भी सरल बना सकते हैं। ] == टीसीपी-syn '। वह स्वचालित रूप से एसीके सेट के साथ पैकेट को बाहर कर देगा। चीयर्स! - JJC


tcpdump 'tcp[13] = 3'

http://danielmiessler.com/study/tcpdump/

उन्नत

आप पैकेट के विशिष्ट हिस्सों के आधार पर फ़िल्टर भी कर सकते हैं, साथ ही समूह में कई स्थितियों को जोड़ सकते हैं। जब केवल खोज रहे हों तो पूर्व उपयोगी होता है SYNएस या RSTएस, उदाहरण के लिए, और उत्तरार्द्ध और भी अधिक उन्नत यातायात अलगाव के लिए।

यूएपी आरएसएफ

[संकेत: टीसीपी झंडे के लिए एक आरेख: अकुशल हमलावर पेस्टर असली सुरक्षा लोक]

आपका ज्ञापन: ...

मुझे सभी अजीब दिखाओ (URG) पैकेट ...

tcpdump 'tcp[13] & 32 != 0'

मुझे सभी ACKNOWLEDGE दिखाएं (ACK) पैकेट ...

tcpdump 'tcp[13] & 16 != 0'

मुझे सभी पुश दिखाओ (PSH) पैकेट ...

tcpdump 'tcp[13] & 8 != 0'

मुझे सभी आरईएसईटी दिखाएं (RST) पैकेट ...

tcpdump 'tcp[13] & 4 != 0'

मुझे सभी सिंचन दिखाएं (SYN) पैकेट ...

tcpdump 'tcp[13] & 2 != 0'

मुझे सभी फिनिश दिखाएं (FIN) पैकेट ...

tcpdump 'tcp[13] & 1 != 0'

मुझे सभी सिंचन / ACKNOWLEDGE दिखाएं (SYNACK) पैकेट ...

tcpdump 'tcp[13] = 18'

[ध्यान दें: सिर्फ PSH, RST, SYN, तथा FIN झंडे tcpdump के ध्वज क्षेत्र आउटपुट में प्रदर्शित होते हैं। URGरेत ACKएस प्रदर्शित होते हैं, लेकिन वे झंडे के मैदान के बजाय आउटपुट में कहीं और दिखाए जाते हैं]


9
2018-05-17 18:50



Plagarism पर अनुमति नहीं है स्टैक एक्सचेंज। कृपया इस पोस्ट को यह स्पष्ट करने के लिए संपादित करें कि आपने लिंक की गई साइट से सामग्री की प्रतिलिपि बनाई है। धन्यवाद। - Chris S


मैं केवल एसईएन पैकेट ही प्राप्त करना चाहता था, मैंने निम्न आदेश का उपयोग किया:

tcpdump -i eth7 'tcp[13] & 2 != 0'

यह आपके लिए सीधे काम करना चाहिए।


3
2017-07-11 08:31



यह SYN, SYN-ACK, आदि सहित SYN ध्वज सेट के साथ किसी भी पैकेट को कैप्चर करेगा। यदि आप केवल SYN पैकेट चाहते हैं, तो इसके बजाय 'tcp [13] == 2' का उपयोग करें। चीयर्स! - JJC


इसे बिना किसी फ़िल्टर या तर्क के दिखाना चाहिए।


1
2017-12-31 02:50



आपका जवाब तकनीकी रूप से सही है, लेकिन ओपी शायद अपने प्रश्न में "केवल" शब्द शामिल करना था। ;-) चीयर्स! - JJC