Sadece Ethernet, IP ve Katman 4 (durumumda TCP) başlıklarını içeren bir pcap dosyası oluşturmak için otomatikleştirilmiş bir yol (tcpdump veya bir Yardımcı uygulama yoluyla) var, böylece herhangi bir veri yükü/uygulama verisi yok. sonuçta oluşan pcap? Üstbilgi boyutları genellikle farklılık gösterdiğinden, herhangi bir veri yükü verilerini yakalayamayacak bir yakalama boyutu seçmenin mümkün olmadığını buldum. Basit truncate sizin için çalışacak olursaBir tcpdump’tan gelen yükü mi sıyırıyorsunuz?
cevap
Sen Python'un scapy
modülü ile çok kolay TCP yükünü dışarı şerit olabilir
[[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
SIYIRMA KALDIRMA
... linux root olarak
bu Running ÖNCE#!/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)
Yukarıdaki tcpdump
yılında
[[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
SONRA, "XX bayt eksik!" Fark mesajlar. Bunun nedeni, TCP yükünü kaldırdık.
şunu kullanabilirsiniz:
tcpdump -i eth0 -s 96 -w test1.pcap
Daha sonra size wireshark analiz edebilirsiniz.
Benim çözümüm şu şekilde oldu. Başkalarının harici kütüphaneler veya kesintiler olmadan nasıl yaptıklarını duymak isterim. Başkalarının bunu nasıl gerçekleştirdiğini duymak isterim, çünkü Scapy belgelerinde remove_payload() işlevini bulamadı ve bu yanıtı kullanılamaz hale getirdim.
#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)
bu sorun, tcpdump ile okuduğumda, bir bayt eksik bırakıyor olması! Src IP için. Ben
pkts[_packet_num].load
değişmeden sanki böylece görünüyor bütün yakalama yenilemek için bir yolu var mı aracılığıyla BİLGİ EDİNME hala orada scapy kullanıyor doğrulayabilir?
Bu, bir yanıttan başka bir soruya daha çok benziyor. Belki başka bir [http://stackoverflow.com/questions/ask] [sorarak] düşünün. – adamdunson
Ne yazık ki OP doğru, TCP başlıklarının uzunluğu nedeniyle TCP başlıklarının uzunluğunu güvenilir şekilde tahmin etmenin bir yolu yoktur. Çoğunlukla, IP/TCP başlıklarının uzunluk bakımından büyük bir şansı olan tek kısmı budur. Sabit bir snaplen değeri, TCP yükünü her zaman doğru yerde kesmenizi garanti etmez. –