tcpdump가 tcp 헤더를 인쇄하지 않게하려면 어떻게합니까?


28

나는 이것을 시도했다 :

tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'

나는 그것의 아스키 부분 만 필요합니다. 나머지는 어떻게 제거합니까?


1
tshark를 사용하면 다음과 같이 할 수 있습니다. tshark -l -i eth0 -f '포트 6667 이상
Marcin

28 개의 패킷이 캡처되었지만 STDOUT에 아무것도 인쇄하지 않습니다.
코더

ASCII7을 의미합니까?
Mircea Vutcovici

답변:


15

Josh가 제안한 것처럼 tcpflow는 TCP 패킷 데이터 만 파일 또는 STDOUT에 인쇄 할 수 있습니다. tcpdump를 다음과 같이 tcpflow로 파이프 할 수 있습니다.

tcpdump -i lo -l -w - port 23 | tcpflow -C -r -

대화의 한쪽 만 보려면 tcpdump에 필터를 사용할 수 있습니다 (예 :) dst port 23.


4
tcpflow루트 로 시작해야 합니까?
Ruslan

5

에 대한 정확한 구문에 대해 잘 모르겠습니다 tcpdump... 실제로이 질문을 가장 좋아하는 것으로 표시하고 싶습니다. 알고 싶습니다! 그러나 대체 솔루션으로 tcpflow대신 사용할 수 있습니다. 본질적으로 동일한 방식으로 작동하지만 ASCII 출력을 훨씬 더 잘 인쇄합니다. 헤더를 제외하고 패킷을 흐름으로 순차적으로 인쇄하므로보다 읽기 및 쓰기가 더 쉽습니다 tcpdump.


5

가장 우아한 해결책은 단지 tcpdump를 버리는 것입니다. 어떤 종류의 파이프도 없습니다 :

tcpflow -c port 6667

그리고 그게 다야.


당신은 내 생명을 구했습니다, 나는 당신에게 쿠키를 사고 싶습니다
gdaras

4

이를 수행하는 빠르고 더러운 방법은 문자열을 통해 출력을 필터링하는 것입니다.

tcpdump -nli eth0 '(port 6667) and (length > 74)' -s 0 -w - | strings

때로는 다른 도구가 없으며 페이로드를 빠르게 들여다보기에 충분합니다. 물론 주입이나 정확한 분석을 위해 정확한 페이로드가 필요한 경우 좋지 않습니다.


1

ASCII 부분 만 필요한 경우 다음을 사용할 수 있습니다 tcpdump -s 1500 -A -l -i eth0 '(port 6667) and (length > 74)'|sed 's/\.//g'.ngrep -d eth0 -lq . '(port 6667) and (length > 74)' |sed -rn '/^ /s/\.//gp'


1

지난주에 같은 문제가 발생했습니다. 대신 wireshark gui를 사용하고 흥미로운 패킷에 대해 "copy readable ascii"를 수행했습니다.

나는 웹 서비스와 그 XML 응답에 대한 http 요청과 관련된 문제를 해결하려고 노력했다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.