tcpdump 출력 파일이 비어 있는 이유는 무엇입니까?

tcpdump 출력 파일이 비어 있는 이유는 무엇입니까?

이 옵션을 사용하여 캡처를 파일에 저장하면 Red Hat Enterprise Linux Server release 6.5결과 파일은 비어 있습니다.tcpdump-w

[root@plop ~]# tcpdump -n -w tcpdump.cap
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C217 packets captured
217 packets received by filter
0 packets dropped by kernel
[root@plop ~]# cat tcpdump.cap
[root@plop ~]# ll tcpdump.cap
-rw-r-----. 1 root root 0 Aug 25 14:13 tcpdump.cap
[root@plop ~]#

>또한 and를 사용하여 명령 출력을 리디렉션하려고 시도했지만 &>항상 빈 파일이 표시됩니다...

그 이유는 무엇입니까?

알아채다:

  • 파일로 리디렉션되지 않으면 터미널에서 올바른 출력(많은 패킷)을 볼 수 있습니다.
  • 동일한 작업을 수행했는데 thsark예상대로 작동했습니다(출력 파일이 정확했습니다).
  • 버전 tcpdumptcpdump version 4.1-PRE-CVS_2012_02_01
  • 버전 libpcaplibpcap version 1.4.0
  • 해당 옵션을 시도했지만 -U문제가 해결되지 않았습니다.

답변1

해당 옵션을 추가해 보세요 -U.

매뉴얼 페이지에서:

   -U
   --packet-buffered
          If  the  -w option is not specified, make the printed packet output ``packet-buffered''; i.e., as the description of the contents of each packet is printed, it will be written to the standard
          output, rather than, when not writing to a terminal, being written only when the output buffer fills.

      If the -w option is specified, make the saved raw packet output ``packet-buffered''; i.e., as each packet is saved, it will be written to the output file, rather than being written only  when
      the output buffer fills.

      The -U flag will not be supported if tcpdump was built with an older version of libpcap that lacks the pcap_dump_flush() function.

답변2

tcpdump출력 파일에 쓸 수 없는 경우(예: 권한 또는 디스크가 가득 찬 경우) 해당 사실을 보고하지 않는 알려진 문제가 있습니다 .

이 경우 출력 파일은 정상적으로 생성되지만 데이터가 기록되지 않아 파일 시스템이 꽉 찼을 수 있습니다.

strace이는 를 통해 다시 실행하고 쓰기 실패를 관찰하여 확인할 수 있습니다.

해결책은 문제의 파일 시스템에서 공간을 지우거나 tcpdump공간이 존재하는 파일 시스템을 가리키는 것입니다.

답변3

나는 이 cmd를 사용했습니다: sudo tcpdump -v -w ~/Desktop/tout_135.pcap -i eth0 host 10.211.55.*

결과 파일에는 데이터가 없으며 chmod 700 또는 권한을 부여하려는 모든 항목만 포함됩니다. tcpdump를 다시 실행하면 짜잔! 데이터가 생성됩니다!

답변4

tcpdump올바른 네트워크 인터페이스를 보고 있는지 확인하십시오 . 또는 -i any모든 인터페이스에서 볼 수 있습니다.

관련 정보