tcpdump는 전체 패킷을 캡처하지 않습니다.

tcpdump는 전체 패킷을 캡처하지 않습니다.

나는 그것을 사용하고 있다

sudo tcpdump -A -s0 -ien0 port 80 | grep schemas-microsoft >> ~/Downloads/convert.txt

인터넷을 통해 전송된 microsoft-schema xml을 캡처하려면 언제 tcpdump캡처해야 합니까?(예:)

<xml>
 <sample>h</sample>
 <samp2>j</sample>
</xml>

다음만 캡처합니다.

<xml>
<sample>h</sample
<sam

파일 어딘가에서 무작위로 중지됩니다. 그 이유는 무엇입니까?

답변1

Wireshark 설명서의 지침에서는 다음 명령을 사용하여 패킷의 전체 내용을 캡처할 것을 권장합니다.

$ tcpdump -i <interface> -s 65535 -w <some-file>

매뉴얼 페이지 tcpdump의 가이드를 보면 -s0동일해야 함을 알 수 있습니다.

-에스

기본 65535바이트 대신 각 패킷의 Snarf snaplen 바이트 데이터. 제한된 스냅샷으로 인해 잘린 패킷은 출력에 "[|proto]"로 표시됩니다. 여기서 proto는 잘림이 발생한 프로토콜 수준의 이름입니다. 더 큰 스냅샷을 찍으면 패킷을 처리하는 데 필요한 시간이 늘어날 뿐만 아니라 패킷 버퍼링 양도 효과적으로 줄어듭니다. 이로 인해 패킷 손실이 발생할 수 있습니다. 관심 있는 프로토콜 정보를 캡처하는 가장 작은 숫자로 snaplen을 제한해야 합니다. snaplen을 0으로 설정하면 최근 이전 버전의 tcpdump와의 호환성을 위해 기본값인 65535로 설정됩니다.

이 가이드의 중간에 있는 문장으로 인해 일부 데이터가 누락되었을 수 있다고 생각됩니다. 주로 다음과 같습니다.

더 큰 스냅샷을 찍으면 패킷을 처리하는 데 필요한 시간이 늘어날 뿐만 아니라 패킷 버퍼링 양도 효과적으로 줄어듭니다. 이로 인해 패킷 손실이 발생할 수 있습니다. 관심 있는 프로토콜 정보를 캡처하는 최소 수로 snaplen을 제한해야 합니다.

어떻게 하는지 검색하다가 알게 됐어요기타 제안다음과 유사한 명령줄:

$ tcpdump -nnXSs 0 'port 80'
  • /etc/services"-nn"을 사용하면 각각 더 빠르고 깔끔한 출력을 위해 DNS에서 호스트 이름과 서비스 이름(에서)을 조회하지 않습니다 .
  • "-X"는 각 패킷을 16진수 및 ASCII 형식으로 인쇄합니다. 이는 헤더 등을 추적하는 데 매우 유용한 비트입니다.
  • "-S"는 상대 TCP 시퀀스 번호가 아닌 절대 TCP 시퀀스 번호를 인쇄합니다. 올바르게 기억한다면 이 작업을 동시에 수행하는 여러 사용자의 tcpdump 출력을 비교할 수 있습니다.
  • "-s 0" 기본적으로 tcpdump는 각 패킷의 시작 부분만 캡처합니다. 여기서 0을 사용하면 전체 패킷을 캡처하게 됩니다.

-nn성능을 향상시켜 더 적은 양의 데이터가 버퍼링되고 더 많은 데이터가 삭제되지 않도록 보호할 수 있는지 확인하기 위해 이를 추가하는 것이 좋습니다. 다른 스위치가 도움이 될 수도 있지만, 귀하의 경우에 어떻게 도움이 될지는 확실하지 않습니다.

인용하다

관련 정보