Извлечение полезных данных из tcpdump? - PullRequest
7 голосов
/ 09 декабря 2011

Существует ли автоматический способ (либо в tcpdump, либо через вспомогательное приложение Out There) генерировать файл pcap, который содержит только заголовки Ethernet, IP и Layer 4 (в моем случае TCP), чтобы не было полезной нагрузки / приложенияданные в полученном pcap?Я обнаружил, что, поскольку размеры заголовков часто меняются, невозможно выбрать размер захвата, который не будет захватывать какие-либо полезные данные.

Ответы [ 3 ]

9 голосов
/ 09 декабря 2011

Вы можете легко удалить полезную нагрузку TCP с помощью модуля scapy Python

до

[mpenning@hotcoffee 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

ПЛАТА ЗАГРУЗКИ

Запуск этого как root в 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)

ПОСЛЕ

[mpenning@hotcoffee 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 байт отсутствует!» Сообщения. Это потому, что мы удалили полезную нагрузку TCP.

0 голосов
/ 30 октября 2013

Мое решение было следующим.Я хотел бы услышать, как другие делают это без внешних библиотек или усечения.Мне бы очень хотелось услышать, как это сделали другие, потому что я не смог найти функцию remove_payload () в документации Scapy, что делало этот ответ непригодным для использования.

#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.Я могу убедиться, что информация все еще там, используя scapy через

pkts[_packet_num].load

Есть ли способ восстановить весь захват так, чтобы он выглядел так, как будто он не изменился?

0 голосов
/ 09 декабря 2011

Если бы у вас работало простое усечение, вы можете использовать:

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

Позже вы можете проанализировать его с помощью wireshark.

...