2011-12-09 16 views
6

क्या एक स्वचालित तरीका है (या तो टीसीपीडम्प में या एक सहायक ऐप आउट के माध्यम से) जिसमें एक पाइप फ़ाइल उत्पन्न होती है जिसमें केवल ईथरनेट, आईपी और लेयर 4 (मेरे मामले में टीसीपी) शीर्षलेख होते हैं, ताकि कोई पेलोड/एप्लिकेशन डेटा न हो परिणामी पकेप में? मैंने पाया है कि चूंकि हेडर आकार अक्सर भिन्न होते हैं, इसलिए कैप्चर आकार चुनना असंभव है जो किसी भी पेलोड डेटा को नहीं पकड़ेगा।एक tcpdump से पट्टी लोड पट्टी?

उत्तर

9

आप पायथन के scapy मॉड्यूल के साथ बहुत आसानी से टीसीपी पेलोड को निकाल देते हैं कर सकते हैं

पहले

[[email protected] tshark_wd]$ tcpdump -n -r sample.pcap 
reading from file sample.pcap, link-type EN10MB (Ethernet) 
00:25:42.443559 IP 192.168.12.237.1052 > 192.168.12.236.22: Flags [P.], 
    seq 2445372969:2445373021, ack 1889447842, win 63432, length 52 
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.], 
    ack 52, win 65535, length 0 
00:25:42.443980 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [P.], 
    seq 1:389, ack 52, win 65535, length 388 

पेलोड स्ट्रिपिंग

लिनक्स में रूट के रूप में यह चल रहा है ...

#!/usr/bin/env python 
from scapy.all import * 
INFILE = 'sample.pcap' 
OUTFILE = 'stripped.pcap' 
paks = rdpcap(INFILE) 
for pak in paks: 
    pak[TCP].remove_payload() 
wrpcap(OUTFILE, paks) 

बाद

[[email protected] tshark_wd]$ tcpdump -n -r stripped.pcap 
reading from file sample.pcap, link-type EN10MB (Ethernet) 
00:25:42.443559 IP truncated-ip - 52 bytes missing! 192.168.12.237.1052 
    > 192.168.12.236.22: Flags [P.], seq 2445372969:2445373021, 
    ack 1889447842, win 63432, length 52 
00:25:42.443607 IP 192.168.12.236.22 > 192.168.12.237.1052: Flags [.], 
    ack 52, win 65535, length 0 
00:25:42.443980 IP truncated-ip - 388 bytes missing! 192.168.12.236.22 
    > 192.168.12.237.1052: Flags [P.], seq 1:389, 
    ack 52, win 65535, length 388 

tcpdump में ऊपर, नोटिस "XX बाइट्स लापता!" संदेश। ऐसा इसलिए है क्योंकि हमने टीसीपी पेलोड हटा दिया है।

0

तो सरल truncate आप के लिए काम करेंगे, तो आप इस्तेमाल कर सकते हैं:

tcpdump -i eth0 -s 96 -w test1.pcap 

आप पर बाद में wireshark साथ यह विश्लेषण कर सकते हैं।

+0

दुर्भाग्यवश ओपी सही है, टीसीपी विकल्प फ़ील्ड के कारण टीसीपी शीर्षकों की लंबाई की भरोसेमंद भविष्यवाणी करने का कोई तरीका नहीं है। अधिकांश भाग के लिए, यह आईपी/टीसीपी हेडर का एकमात्र हिस्सा है जिसमें लंबाई में भिन्न होने का एक महत्वपूर्ण मौका है। एक निश्चित स्नैपलेन मान गारंटी नहीं देता है कि आप हमेशा सही जगह पर टीसीपी पेलोड को छोटा कर देते हैं। –

-2

मेरा समाधान निम्नानुसार था। मुझे यह सुनना अच्छा लगेगा कि बाहरी पुस्तकालयों या छंटनी के बिना अन्य लोग इसे कैसे करते हैं। मुझे यह सुनना अच्छा लगेगा कि दूसरों ने यह कैसे किया, क्योंकि मैं स्कैपी दस्तावेज में remove_payload() फ़ंक्शन को खोजने में असमर्थ था, जिससे यह जवाब अनुपयोगी बना।

#read pcap file 
pkts = rdpcap("packet-capture.pcap") 

#write packet with payload "XXXXXXXXXX" 
for pkt in pkts: 
    pkt.load = "XXXXXXXXXX" 

#write new pcap 
wrpcap("new.pcap", pkts) 

इस के साथ समस्या यह है कि, जब tcpdump के साथ पढ़ा है, यह एक बाइट्स लापता छोड़ देता है! Src IP के लिए। मैं के माध्यम से

pkts[_packet_num].load 

पूरे कब्जा पुनर्जीवित करने के लिए तो यह लगता है कि यह अनछुए था एक रास्ता है जानकारी को अभी भी वहाँ Scapy उपयोग कर रहा है सत्यापित कर सकते हैं?

+0

यह एक उत्तर से अधिक प्रश्न की तरह लगता है। शायद [पूछना] (http://stackoverflow.com/questions/ask) पर विचार करें। – adamdunson

संबंधित मुद्दे