2011-12-09 34 views
6

Có cách tự động (hoặc trong tcpdump hoặc thông qua ứng dụng trợ giúp Có) để tạo tệp pcap chỉ chứa tiêu đề Ethernet, IP và Lớp 4 (TCP trong trường hợp của tôi), để không có dữ liệu ứng dụng/tải trọng trong pcap kết quả? Tôi nhận thấy rằng vì kích thước tiêu đề thường thay đổi, nên không thể chọn kích thước chụp sẽ không bắt được bất kỳ dữ liệu tải trọng nào.Tước tải trọng từ một tcpdump?

Trả lời

9

Bạn có thể loại bỏ các trọng tải TCP rất dễ dàng với mô-đun scapy Python của

TRƯỚC

[[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 

PAYLOAD tước

Chạy này như là người chủ trong linux ...

#!/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) 

SAU

[[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 

Trong tcpdump trên, chú ý đến "XX byte thiếu!" tin nhắn. Đó là bởi vì chúng tôi đã loại bỏ tải trọng TCP.

0

Nếu truncate đơn giản sẽ làm việc cho bạn, bạn có thể sử dụng:

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

Sau đó bạn có thể phân tích nó với Wireshark.

+0

Thật không may là OP là chính xác, không có cách nào để dự đoán đáng tin cậy độ dài của các tiêu đề TCP, do trường Tùy chọn TCP. Đối với hầu hết các phần, đó là phần duy nhất của các tiêu đề IP/TCP có một cơ hội đáng kể khác nhau về chiều dài. Giá trị snaplen cố định không đảm bảo rằng bạn luôn cắt bớt tải trọng TCP ở đúng vị trí. –

-2

Giải pháp của tôi như sau. Tôi rất muốn nghe cách người khác làm điều đó mà không cần thư viện bên ngoài hoặc cắt xén. Tôi rất muốn nghe những người khác đã thực hiện điều này như thế nào, bởi vì tôi không thể tìm thấy hàm remove_payload() trong tài liệu Scapy, làm cho câu trả lời này không sử dụng được.

#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) 

Vấn đề với điều này là khi đọc với tcpdump, thiếu byte! cho IP src. Tôi có thể xác minh thông tin vẫn còn ở đó bằng cách sử dụng scapy qua

pkts[_packet_num].load 

Có cách nào để tạo lại toàn bộ chụp sao cho có vẻ như nó không bị thay đổi?

+0

Điều này nghe giống một câu hỏi khác hơn là câu trả lời. Có lẽ xem xét [yêu cầu] (http://stackoverflow.com/questions/ask) khác. – adamdunson

Các vấn đề liên quan