마지막 패킷을 캡처하는 "tcpdump"

마지막 패킷을 캡처하는 "tcpdump"

내 응용 프로그램이 해당 포트를 사용하기 때문에 특정 포트를 모니터링하고 있습니다. 연결이 무작위로 끊어지는 것 같습니다. 연결이 끊어지기 전에 통과하는 마지막 패킷이 무엇인지 확인하고 싶습니다. 다음 줄을 사용했습니다.

 sudo tcpdump -XX -i eth0 port 3050 | tail  >> tcpamir.txt

하지만 작동하려면 다른 터미널을 시작하고 문제를 발행해야 합니다.

sudo killall tcpdump

더 나은 접근 방식이 있습니까? EDIT1: 디스크 공간을 빠르게 채울 만큼 충분한 트래픽이 있기 때문에 파일이 팽창하는 것을 원하지 않으므로 마지막 패킷만 캡처하는 것이 중요합니다.

답변1

알았어 내가 찾은 것 같아해결책:

sudo tcpdump -XX -i eth0 -w tcpamir-%s.txt -G 10 port 3050

이렇게 하면 출력 파일이 10초마다 다음이라는 새 파일로 회전됩니다.tcpamir-<unixtimestamp>.txt

보류 중인 파일 크기가 걱정되는 경우 출력 파일을 수정하여 매일 자체적으로 덮어쓸 수도 있습니다. 자세한 내용은 를 읽어보세요 man 3 strftime.

나는 다음과 같은 것을 생각한다

sudo tcpdump -XX -i eth0 -w tcpamir-%R.txt -G 86400

%R24시간 표기법으로 시간을 표시합니다(예: 12:40) .

다음을 사용하여 관련 출력 파일을 읽습니다.

sudo tcpdump -r tcpamir-<unixtimestamp>.txt

두 번째 해결 방법:

더 많은 명령으로 분할하고 스크립트/함수로 저장합니다.

sudo tcpdump -XX -i eth0 port 3050 >> tcptmp.txt
sudo tail -n100 tcptmp.txt >> tcpamir.txt
sudo rm tcptmp.txt

답변2

캡처된 모든 트래픽만 기록하려면 제거 줄에 -w만 추가하면 됩니다.'| 꼬리 >> tcpamir.txt'

# tcpdump -XX -i eth0 port 3050 -w tcpamir.cap

Wireshark에서 캡처를 분석하려면 확장자는 .cap이어야 합니다. 캡처가 완료되었는지 확인하면 다음을 사용하여 이를 종료할 수 있습니다.Ctrl + C

참고: -w [filename.cap] 캡처를 파일에 기록합니다.

관련 정보