टीसीपी कनेक्शन द्वारा पीक फ़ाइलों को विभाजित करने के लिए उपकरण? [बन्द है]


16

क्या प्रत्येक टीसीपी कनेक्शन के लिए एक पैकेट कैप्चर फाइल (पीक फॉर्मेट में) को अलग-अलग फाइलों में विभाजित करने का उपकरण है? (एक घर में विकसित शेल स्क्रिप्ट के अलावा, जिसे संभवतः कैप्चर पर दो बार चलाने की आवश्यकता होती है ...)। वायरशर्क की तरह कुछ 'टीसीपी स्ट्रीम' का पालन करें लेकिन कमांड लाइन के लिए (मुझे डर है कि वायरशर्क 700 एमबी पैकेट कैप्चर प्रदर्शित करते समय बड़ी मात्रा में मेमोरी का उपभोग करेगा)

मैंने tcpflow को देखा, लेकिन यह मूल pcap फ़ाइलों की तुलना में बहुत बड़ी फ़ाइलों का उत्पादन करती है और वे pcap प्रारूप में नहीं लगती हैं।


फ़ाइलें जो tcpflow से उत्पन्न होती हैं वे pcaps नहीं हैं, वे tcp स्ट्रीम की वास्तविक tcp पेलोड हैं।
क्रिस

जवाबों:


9

आप PcapSplitter का भी उपयोग कर सकते हैं जो PcapPlusPlus पैकेज का हिस्सा है । यह वही करता है जो आपको चाहिए (जो टीसीपी या यूडीपी कनेक्शन द्वारा पीकेपी फ़ाइलों को विभाजित कर रहा है), यह बहु-प्लेटफ़ॉर्म है और इसकी मूल फ़ाइल में कनेक्शन की संख्या की कोई सीमा नहीं है (इसलिए आप इसका उपयोग बड़े विभाजन के लिए कर सकते हैं पीक फ़ाइल जिसमें हजारों कनेक्शन या उससे भी अधिक हों)। उपरोक्त लिंक स्रोत कोड के लिए है, लेकिन यदि आप एक संकलित द्विआधारी चाहते हैं - यहाँ पर आपके द्वारा बनाए गए बायनेरिज़ के लिए एक लिंक है जो कई प्लेटफार्मों के लिए है

संपादित करें: जाहिरा तौर पर PcapPlusPlus का एक नया संस्करण जारी किया गया था और इसमें काफी सारे प्लेटफार्मों (विंडोज, उबंटू 12.04 / 14.04, मैक OSX Mavericks / Yosemite / El Captian) के लिए PcapSplitter बायनेरी शामिल हैं। मुझे लगता है कि मेरे द्वारा पहले दिए गए लिंक की तुलना में इन बायनेरिज़ का उपयोग करना बेहतर है। आप इसे यहाँ पा सकते हैं


10

आप tcpdumpअपने इच्छित फलक के अंश निकालने के लिए उपयोग कर सकते हैं ... मान लीजिए कि आप एक होस्ट पर TCP / 55777 और दूसरे पर TCP / 80 के बीच सॉकेट कनेक्शन में पैकेट ढूंढ रहे हैं। आपकी स्रोत फ़ाइल है bigfile.pcap, जो प्रश्न में वेब होस्ट के लिए कई HTTP सत्रों का एक स्निफर डंप है ...

tcpdump -r bigfile.pcap -w session.pcap -s0 tcp and port 55777

जो टीसीपी / 55777 में जाने वाले सभी पैकेटों को खींचेगा bigfile.pcapऔर उनमें कॉपी करेगा session.pcap


है -s0जब के साथ उपयोग किया कोई असर -r?
कैस्परल्ड

4

थोड़ा ओवरकिल, लेकिन का उपयोग कर tshark(साथ भेज दिया wireshark), आप के साथ कर सकते हैं zsh:

file=file.pcap
tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -A f; do 
    tshark -r $file -2R "tcp.stream == $f[1]" -w ${(j:-:)f[2,-1]}.pcap
  done

जो 1509466312.202450000-10.0.0.1-58892-10.0.0.2-80.pcap( जैसे प्रत्येक कनेक्शन के लिए देखे गए पहले पैकेट के आधार पर) नाम की फाइलें उत्पन्न करता है ।


3

tcpflow क्या आप चाहते हैं - टीसीपी सत्र प्रति एक फ़ाइल में पीसीएपी को विभाजित करता है

http://www.circlemud.org/jelson/software/tcpflow/


3
जैसा कि प्रश्न में उल्लेख किया गया है, मैंने इसकी कोशिश की और समझ में नहीं आया कि परिणामी आउटपुट फाइलें इनपुट (pcap) फाइलों की तुलना में बहुत बड़ी क्यों थीं ...
आंद्रे

1
यह भी tcpflow pcap फ़ाइलों को आउटपुट करने में सक्षम नहीं लगता है।
तोकुमार

2

ऐसा लगता है कि यह उपकरण काम कर सकता है (मैंने व्यक्तिगत रूप से इसका उपयोग नहीं किया है)

http://www.netresec.com/?page=SplitCap (विंडोज़ आधारित)

स्प्लिटकैप एक स्वतंत्र (बीयर के रूप में) ओपन सोर्स पीक फाइल स्प्लिटर है। स्प्लिटकैप एक बड़ी पीक फाइल को टीसीपी और यूडीपी सत्रों पर आधारित कई फाइलों में विभाजित करता है, प्रति सत्र एक पीक फाइल। स्प्लिटकैप का उपयोग सत्र के बजाय एक pcap फ़ाइल को प्रति होस्ट-जोड़ी में एक pcap फ़ाइल में विभाजित करने के लिए किया जा सकता है।


1

यहां @sch से प्रेरित एक बैश संस्करण है:

file=cap.pcap
$tshark -Tfields -e tcp.stream \
                -e frame.time_epoch \
                -e ip.src \
                -e tcp.srcport \
                -e ip.dst \
                -e tcp.dstport -r $file |
  sort -snu |
  while read -a f; do 
  [[ "${f[5]}" ]] || continue  # sometimes there is no stream number ex. UDP
  fileout=$(echo ${f[0]}__${f[1]}__${f[2]}__${f[3]}__${f[4]}__${f[5]} | tr -d '\r'  )
    $tshark -r $file -2R "tcp.stream == ${f[0]}" -w "$fileout.pcap"
  done
read

फ़ाइल नाम इस तरह होगा: stream number__time__source IP__port__destination IP__port.pcap

tr -d '\r' विंडोज़ उपयोगकर्ताओं के लिए है, क्योंकि विंडोज़ आउटपुट CR LF में tshark।

संपादित करें :

tshark के साथ यह समाधान इतना धीमा है लेकिन निश्चित है। स्प्लिटकैप सुपर फास्ट है लेकिन जब किसी पैकेट में कोई त्रुटि होती है तो यह क्रैश हो जाता है, जबकि tshark आपको केवल त्रुटि के बारे में सूचित करता है लेकिन:

tshark: The file "cap.pcap" appears to have been cut short in the middle of a packet.

और अंत में PcapSplitter है जो सुपर फास्ट भी है, लेकिन इसे winpcap ड्राइवर की आवश्यकता है, यह विंडोज़ में npcap ड्राइवर के साथ काम नहीं करता है।

लेकिन स्प्लिटकैप का एक समाधान है: pcapfix का उपयोग करके मैं भ्रष्ट पैकेट को ठीक कर सकता हूं फिर स्प्लिटकैप फिर से क्रैश नहीं होता है। और यह वही है जो मैं अभी उपयोग कर रहा हूं, क्योंकि स्पार्क विभाजन में बहुत धीमा है।

और PcapSplitter के लिए एक समाधान मैं किसी भी विधि का उपयोग करते हुए winpcap dll इंजेक्शन लगा रहा था, लेकिन जब हमारे पास स्प्लिटकैप है तो ऐसा क्यों है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.