Bunu denedim:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
Sadece bir kısmı için ihtiyacım var. Gerisini nasıl kaldırırım?
Bunu denedim:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
Sadece bir kısmı için ihtiyacım var. Gerisini nasıl kaldırırım?
Yanıtlar:
Josh'un önerdiği gibi, tcpflow sadece TCP paket verilerini bir dosyaya veya STDOUT'a yazdırabilir. Tcpdump'ı şu şekilde tcpflow'a yönlendirebilirsiniz:
tcpdump -i lo -l -w - port 23 | tcpflow -C -r -
Konuşmanın yalnızca bir tarafını görüntülemek için, örneğin tcpdump için filtreler kullanabilirsiniz dst port 23
.
tcpflow
root olarak başlamanız gerekiyor ?
Bunun tam olarak sözdiziminden emin değilim tcpdump
... aslında, bu soruyu favori olarak işaretledim çünkü bilmek istiyorum! Ancak alternatif bir çözüm olarak, tcpflow
bunun yerine kullanmayı deneyebilirsiniz . Esasen aynı şekilde çalışır, ancak ASCII çıktısını çok daha iyi yazdırır; başlıkları hariç tutar ve paketleri akış olarak sırayla yazdırır, bu nedenle zaman zaman okuyup takip etmesi daha kolaydır tcpdump
.
En zarif çözümün sadece tcpdump’tan kurtulmak olduğunu düşünüyorum. Hiçbir çeşit boru yok:
tcpflow -c port 6667
Ve bu kadar.
Bunu yapmanın hızlı ve kirli bir yolu, çıktıyı dizelerden süzmek:
tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings
Bazen başka araçlara sahip değilsiniz ve yüke hızlıca göz atmak için bu yeterli. Tabii ki, enjeksiyon için tam yüke veya kesin bir analize ihtiyaç duymanız iyi bir şey değil.
Yalnızca ASCII kısmına ihtiyacınız varsa, kullanabilirsiniz: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'
veya ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'