मैंने यह कोशिश की:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
मुझे इसके केवल एसेसी हिस्से की जरूरत है। मैं बाकी को कैसे हटाऊं?
मैंने यह कोशिश की:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
मुझे इसके केवल एसेसी हिस्से की जरूरत है। मैं बाकी को कैसे हटाऊं?
जवाबों:
जैसा कि जोश का सुझाव है, tcpflow किसी फ़ाइल या STDOUT में सिर्फ TCP पैकेट डेटा प्रिंट कर सकता है। आप tcpdump को इस तरह tcpflow कर सकते हैं:
tcpdump -i lo -l -w - port 23 | tcpflow -C -r -
वार्तालाप के केवल एक पक्ष को देखने के लिए, आप tcpdump के लिए फ़िल्टर का उपयोग कर सकते हैं, उदा dst port 23
।
tcpflow
रूट के रूप में शुरुआत करने की आवश्यकता क्यों होगी ?
मुझे सटीक सिंटैक्स के बारे में यकीन नहीं है tcpdump
... वास्तव में, मैंने इस प्रश्न को पसंदीदा के रूप में चिह्नित किया है क्योंकि मैं जानना चाहूंगा! लेकिन एक वैकल्पिक समाधान के रूप में, आप tcpflow
इसके बजाय उपयोग करने का प्रयास कर सकते हैं । यह अनिवार्य रूप से उसी तरह काम करता है, लेकिन यह ASCII आउटपुट को बेहतर तरीके से प्रिंट करता है; यह हेडर और प्रिंट के पैकेट को क्रमिक रूप से एक प्रवाह के रूप में बाहर कर देता है, इसलिए यह पढ़ने में आसान है और समय की तुलना में अनुसरण करता है tcpdump
।
मुझे लगता है कि सबसे सुंदर समाधान सिर्फ tcpdump को खोदना है। किसी भी प्रकार का कोई पाइप नहीं:
tcpflow -c port 6667
और बस।
ऐसा करने का एक त्वरित और गंदा तरीका स्ट्रिंग्स के माध्यम से आउटपुट को फ़िल्टर करना है:
tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings
कभी-कभी आपके पास अन्य उपकरण नहीं होते हैं और पेलोड में एक त्वरित झांकने के लिए यह पर्याप्त है। यह अच्छा नहीं है अगर आपको इंजेक्शन या सटीक विश्लेषण के लिए सटीक पेलोड की आवश्यकता है, तो निश्चित रूप से।
यदि आपको केवल ASCII भाग की आवश्यकता हो तो आप इसका उपयोग कर सकते हैं: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'
या एनक्रेप के साथ:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'