it-swarm.asia

Koklamanın en kolay yolu nedir? TCP Linux'ta trafik verileri?

Linux kutumda herhangi bir arabirimin üzerinden geçen tüm TCP verilerini (TCP başlıkları veya başka herhangi bir şey) göstermenin basit bir yolunu istiyorum.

Mesela büyülü bir komut istiyorum ki:

magic_commmand_I_want port=1234

o zaman makinemdeki 1234 numaralı bağlantı noktasını dinleyen bir sunucu varsa ve birileri yaptıysa:

echo hello | nc localhost 1234
# Note: "nc" (aka "netcat") is a simple tool that sends data to a Host/port

Sonra büyülü komut sadece basardı:

hello

"Tcpdump", "Ethereal", "tethereal", "tshark" ve diğerlerini denedim, ancak onları nasıl elde edeceğiniz belli değil:

  • iP adreslerini veya diğer meta verileri gösterme
  • bireysel paketleri ve başlıklarını değil yalnızca gönderilen "verileri" gösterir
  • verileri, onaltılı olmayan ve paket ofset işaretleyicileriyle olduğu gibi yazdırabilirsiniz.
  • sniff all network trafiği (olup olmadığının eth0 veya eth1 veya lo , etc ...)

Evet, muhtemelen bunu yapmak için bir grup unix komutunu bir araya getirebilirsiniz, fakat bir dahaki sefere hatırlaması çok kolay değil :)

Bunu yapan basit bir komut satırı örneğine sahipseniz, istediğim şey budur.

77
Dustin Boswell

Güncelleme:

Yorumlarda Michal'ın işaret ettiği gibi: tcpflow 1.3 sürümünde, -e seçeneği tarayıcı adını belirlemek için kullanılır. Bu nedenle "Geçersiz tarayıcı adı '8983'" hatası yazdırıldı. Doğru komut

Sudo tcpflow -i any -C -J port 1234

(ayrıca son sürümde -J-g olarak değiştirildi)


Beni " tcpflow " olarak işaretlediğiniz için teşekkürler. İşte komut satırı:

tcpflow -i any -C -e port 1234  # as root, or with Sudo

Bu istediğim her şeyi yapıyor

  • veri bayt bayt, geldiği gibi
  • başka bir meta veri göstermiyor
  • tüm arayüzleri dinler (böylece makinenin içinden ve dışından gelen verileri toplar)

"-C" bir dosya yerine konsola atmasını söyler. "-e" renkleri etkinleştirir, böylece istemci-> sunucu ve sunucu-> istemci görsel olarak farklıdır.

Tcpflow'u sadece yaparak yükledim

Sudo apt-get install tcpflow
104
Dustin Boswell

socat, istediğiniz bir araçtır. Bir vekil olarak hareket edebilir:

$socat -v TCP-LISTEN:4444 TCP:localhost:1234
hello

daha sonra uygulamanız doğrudan 1234'e bağlanmak yerine 4444 numaralı bağlantı noktasını bağlamalıdır.

-v seçeneği, socat'ın aldığı her şeyi standart hatayla (stderr) yazdırabilmektir.

Güncelleştirme:

Socat makinenizde mevcut değilse, yine de netcat ile bu şekilde öykünebilirsiniz:

$netcat -l -p 4444 | tee output_file | netcat localhost 1234

uyarılar: bu seçenek tek yönlüdür. ikinci netcat örneği, sunucunuzdan standart çıktıya kadar olan herhangi bir yanıtı basacaktır. O zaman hala yapabilirsin:

$mkfifo my_fifo
$netcat -l -p 4444 < my_fifo | tee output_file | netcat localhost 1234 > my_fifo
28
yves Baumes

Deneyin Wireshark . Hem Linux hem de Windows için hedeflenmiş mükemmel bir protokol analizörüdür.

20
Kevin Boyd

tcpflow istediğin şey. Man sayfasından ayıkla:

AÇIKLAMA
tcpflow, TCP bağlantısının (akar) bir parçası olarak iletilen verileri toplayan ve verileri protokol analizi veya hata ayıklama için uygun bir şekilde depolayan bir programdır. tcpdump (4) gibi bir program, telde görülen paketlerin bir özetini gösterir, ancak genellikle iletilen verileri kaydetmez. Buna karşılık, tcpflow, gerçek veri akışlarını yeniden yapılandırır ve daha sonra analiz için her akışı ayrı bir dosyada saklar. tcpflow, TCP sıra numaralarını anlar ve yeniden iletimlerden veya sipariş dışı teslimattan bağımsız olarak veri akışlarını doğru şekilde yeniden yapılandırır.

tcpflow, yakalanan tüm verileri formun adlarına sahip dosyalarda saklar.

192.168.101.102.02345-010.011.012.013.45103

yukarıdaki dosyanın içeriği, Host 192.168.101.102 port 2345'ten, Host 10.11.12.13 port 45103'e iletilecek olan verilerdir.

Uygulama uygulamanızdan sunucunuza bir bağlantı kurun. Bağlantı kurulurken ve çalışırken, tcpflow hala ondan veri yakalayabiliyor. Örnek olarak:

$ Sudo tcpflow -i lo port 5555
tcpflow[3006]: listening on lo

Her veri 127.000.000.001.48842-127.000.000.001.05555 adında bir dosyada saklanacaktır.

Bunu standart çıktıda -Cs seçeneğiyle yine yönlendirebilirsiniz. Tcpflow'un yakalamasını istediğiniz harfleri ayarlamak için ifadeyle oynatmak için manuel sayfayı okuyun.

13
yves Baumes

ngrep bunun için çok güzel. Paketlerin içinde arama yapmak için bir BPF dizesini ve isteğe bağlı bir dizeyi alır ve ardından paket içeriğini oldukça kullanışlı bir formatta ekrana gönderir. İsteğe bağlı olarak, daha sonra Wireshark'ta daha yakından inceleyebileceğiniz bir pcap_dump dosyasına da dökülür.

2
hobbs

Chaosreader 'a bakınız. İstediğinizden biraz daha fazla ve biraz farklı olsa da, muhtemelen istediğinizi yapmak için kodunu değiştirebilirsiniz.

0
Andrew Y