tcpdump -xx는 Mac OS X에서 무엇을합니까?


2

나는을 가지고 놀고 있었고 tcpdumpOS X에서 -xx옵션이 맨 페이지가 설명하는 것과 다른 것을 수행한다는 것을 알았습니다.

man페이지의 내용은 다음과 같습니다 .

   -x     When parsing and printing, in addition to printing the headers of each packet, print the data of each packet (minus its link level header) in hex.
          The  smaller  of  the entire packet or snaplen bytes will be printed.  Note that this is the entire link-layer packet, so for link layers that pad
          (e.g. Ethernet), the padding bytes will also be printed when the higher layer packet is shorter than the required padding.

   -xx    When parsing and printing, in addition to printing the headers of each packet, print the data of each packet, including its link level header,  in
          hex.

따라서 올바르게 이해 -xx하면 이더넷 헤더가 표시 -x되지 않지만 이더넷 헤더가 표시 됩니다. 이것은 Linux에서 마찬가지입니다. 그러나 OS X -x에서는 이더넷 헤더를 보여 주면서 -xx여분의 정크를 앞에 두었습니다. 당신이 볼 수 있듯이, 이더넷 헤더를 0886 3b60 1d3c 28cf e919 a36d 0800모두 표시 -x하고 -xx,과에서 -xx가에 의해 표시 줄에 나타납니다 0x0060그리고 그것이 의미하기 전에 데이터가 올 알고 있지 않다.

tcpdump -xxOS X에서의 샘플 출력은 다음과 같습니다 .

$ sudo tcpdump -Sxx -e -n port 33407
tcpdump: data link type PKTAP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on pktap, link-type PKTAP (Packet Tap), capture size 65535 bytes
11:10:11.177881 28:cf:e9:19:a3:6d > 08:86:3b:60:1d:3c, ethertype IPv4 (0x0800), length 78: 192.168.2.8.49923 > 23.239.3.247.33407: Flags [S], seq 1859065803, win 65535, options [mss 1460,nop,wscale 4,nop,nop,TS val 461417464 ecr 0,sackOK,eol], length 0
    0x0000:  6c00 0000 0100 0000 0100 0000 656e 3000
    0x0010:  0000 0000 0000 0000 0000 0000 0000 0000
    0x0020:  0000 0000 0200 0000 0200 0000 0e00 0000
    0x0030:  0000 0000 4f10 0100 7373 6800 0000 0000
    0x0040:  0000 0000 0000 0000 0000 0000 0000 0000
    0x0050:  0600 0000 ffff ffff 0000 0000 0000 0000
    0x0060:  0000 0000 0000 0000 0000 0000 0886 3b60
    0x0070:  1d3c 28cf e919 a36d 0800 4500 0040 66af
    0x0080:  4000 4006 f572 c0a8 0208 17ef 03f7 c303
    0x0090:  827f 6ecf 17cb 0000 0000 b002 ffff c4d1
    0x00a0:  0000 0204 05b4 0103 0304 0101 080a 1b80
    0x00b0:  abf8 0000 0000 0402 0000

다음은 하나의 샘플 출력입니다 tcpdump -x.

$ sudo tcpdump -Sxvv -e -n port 33407
tcpdump: data link type PKTAP
tcpdump: listening on pktap, link-type PKTAP (Packet Tap), capture size 65535 bytes
11:10:48.727138 28:cf:e9:19:a3:6d > 08:86:3b:60:1d:3c, ethertype IPv4 (0x0800), length 102: (tos 0x10, ttl 64, id 25163, offset 0, flags [DF], proto TCP (6), length 88)
    192.168.2.8.49923 > 23.239.3.247.33407: Flags [P.], cksum 0x1126 (correct), seq 1859067461:1859067497, ack 2295673726, win 8192, options [nop,nop,TS val 461454802 ecr 120336925], length 36
    0x0000:  0886 3b60 1d3c 28cf e919 a36d 0800 4510
    0x0010:  0058 624b 4000 4006 f9ae c0a8 0208 17ef
    0x0020:  03f7 c303 827f 6ecf 1e45 88d5 337e 8018
    0x0030:  2000 1126 0000 0101 080a 1b81 3dd2 072c
    0x0040:  321d cdac 025c 44d7 8043 f45e da96 1c0d
    0x0050:  fbf3 de02 c17e 03ef 1014 d6da 506f c0c3
    0x0060:  a405 8cbd fcdc

답변:


2

해당 패킷의 시작 부분에 이더넷 헤더가 없습니다. 링크 계층 헤더 유형은 DLT_PKTAP이며 이것이 헤더의 모양 입니다.

OS X 또는 Linux 에서 모니터 모드로 캡처하면 비슷한 놀라움을 느낄 수 있습니다 ! -패킷이 아마도 라디오 탭 헤더로 시작될 것입니다 .

문서와 tcpdump 자체는 더 간단한 시대에 작성되었습니다. 링크 계층을 갖기 전에는 많은 메타 데이터 (예 : 802.11 및 MAC 계층 아래의 계층에 대한 메타 데이터)와 다른 종류를 제공하는 메커니즘이 필요한 링크 계층이있었습니다. 메타 데이터 (예 : PKTAP가 제공)

Tcpdump는 메타 데이터 헤더와 링크 레이어 헤더를 구별해야합니다. 기본적으로 메타 데이터 레이어는 표시하지 않고으로 -xx만 덤프 -xxx하거나 그와 같은 항목 만 덤프합니다 . tcpdump 이슈 트래커 에 버그를 신고 할 수 있습니다 . (tcpdump의 출력에 호환되지 않는 변경이 있기 때문에 아마도 약간의 토론이있을 것입니다.)

에 관해서는 하지 사용하여 특정 인터페이스에 포착하려고 DLT_PKTAP을 받고 -i플래그; Yosemite의 tcpdump는 기본적으로 모든 네트워크 인터페이스에서 동시에 캡처합니다 . 리눅스에서 그는 "어떤"인터페이스에 캡처하여 수행 할 수 있습니다 - 또한 당신에게 이더넷 헤더를 제공하지 않습니다, 당신이 제공 리눅스 캡처 헤더를 요리 -하지만하지 않는 기본 은 "어떤"인터페이스; Yosemite에서는 기본적으로 모든 인터페이스를 동시에 캡처합니다.


설명해 주셔서 감사합니다. 나는 링크 레이어에 대해 전혀 모른다. : D. 이번에는 버그를 제출하지 않기로 선택했습니다. ;-)에 대해 더 많이 배울 때 그만한 가치가 있는지 확인할 것입니다.
h__
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.