Ho provato questo:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
Ho solo bisogno della parte ascii di esso. Come rimuovo il resto?
Ho provato questo:
tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'
Ho solo bisogno della parte ascii di esso. Come rimuovo il resto?
Risposte:
Come suggerisce Josh, tcpflow può stampare solo i dati del pacchetto TCP su un file o STDOUT. È possibile reindirizzare tcpdump a tcpflow in questo modo:
tcpdump -i lo -l -w - port 23 | tcpflow -C -r -
Per visualizzare solo un lato della conversazione, è possibile utilizzare i filtri per tcpdump, ad es dst port 23.
tcpflowcome root?
Non sono sicuro dell'esatta sintassi per tcpdump... in effetti, ho contrassegnato questa domanda come preferita perché mi piacerebbe saperlo! Ma come soluzione alternativa, potresti provare a utilizzare tcpflowinvece. Funziona essenzialmente allo stesso modo, ma stampa l'output ASCII molto meglio; ha escluso le intestazioni e stampa i pacchetti in sequenza come flusso, quindi a volte è più facile da leggere e seguire tcpdump.
Sento che la soluzione più elegante è quella di abbandonare tcpdump. Nessun tubo di alcun tipo:
tcpflow -c port 6667
E questo è tutto.
Un modo rapido e sporco per farlo è filtrare l'output attraverso le stringhe:
tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings
A volte non hai altri strumenti e per dare una rapida occhiata al payload questo è sufficiente. Non va bene se hai bisogno del payload esatto per l'iniezione o di un'analisi esatta, ovviamente.
Se hai bisogno solo della parte ASCII puoi usare: tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'o con ngrep:ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'