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