| | tcpdump [ -adeflnNOpqStvx ] [ -c count ] [ -F file ] [ -i interface ] [ -r file ] [ -s snaplen ] [ -T type ] [ -w file ] [ expression ] <Option> -a : | Network & Broadcast 주소들을 이름들로 바꾼다.
| -c : | Number : 제시된 수의 패킷을 받은 후 종료한다 | -d : | comile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다.
| -dd : | packet-matching code를 C program의 일부로 출력한다.
| -ddd : | packet-matching code를 숫자로 출력한다. | -e : | 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.
| -f : | 외부의 internet address를 가급적 심볼로 출력한다(Sun의 yp server와의 사용은 가급적 피하자).
| -F file : | filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다.
| -i device : | 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면 시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호를 가진 인터페이스를 선택한다(이 때 loopback은 제외된다).
| -l : | 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이터를 받고자 할 때, 유용하다.
| -n : | 모든 주소들을 번역하지 않는다(port,host address 등등)
| -N : | 호스트 이름을 출력할 때, 도메인을 찍지 않는다. | -O : | packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다. | -p : | 인터페이스를 promiscuous mode로 두지 않는다. | -q : | 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다. | -r <file>: | 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 받아들인다.
| -s <spaplen>: | 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다(SunOS의 NIT에서는 최소가 96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면 그만큼의 정보를 잃게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아주어야 한다.
-T <type> : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp(Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed White Board)
| -S : | TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.
| -t : | 출력되는 각각의 라인에 시간을 출력하지 않는다.
| -tt : | 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.
| -v : | 좀 더 많은 정보들을 출력한다.
| -vv : | '-v'보다 좀 더 많은 정보들을 출력한다.
| -w : | 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.
| -x : | 각각의 패킷을 헥사코드로 출력한다.
|
<expression>
expression은 패킷을 선택적으로 캡처하기 위한 조건을 적는 부분이다. expression이 없다면 네트워크상의 모든 패킷을 캡처하여 보여 주며expression이 정의 되어있다면 이 expression을 참으로 하는 패킷만을 선별하여 보여준다. expression은 하나이상이 primitives로 구성되며, primitives는 일반적으로qualifer을 앞에 내세운 id(이름이나 숫자)로 구성된다. [Qualifier] type : | id(이름이나 숫자)가 어떠한 의미를 가지는지를 알려준다. 가능한 type으로는 host, net, port가 있다.
| | ex) " host foo", "net 123.4", "port 23" 특별한 qualifier가 정해져 있지 않으면 "host"로 가정한다.
| dir : | 전송방향을 결정한다. 가능한 방향은 "src", "dst", "src or dst", "src and dst"이다
| | ex) "src foo", "dst net 123.4", "src or dst port ftp" 특별한 qualifier가 정해져 있지 않으면 "src or dst"로 가정한다.
| proto : | 특정한 프로토콜의 패킷만을 받아들이게 한다. 가능한 proto로는 "either", "fddi", "ip" ,"arp", "rarp", "decnet", "lat", "sca", "moprd", "mopdl", "tcp","udp"가 있다.
| | ex) "either src foo", "arp net 123.4", "tcp port 23" 특별한 qualifier가 정해져 있지 않으면 "src or dst"로 가정한다. |
[primitives] dst host <host> : | 패킷의목적지 필드에 있는 IP주소와 <host> (hostname, name 둘다 가능)가 일치하면 참.
| src host <host> : | 패킷의 발신지 필드에 있는 IP주소와 <host> (hostname, name 둘다 가능)가 일치하면 참.
| host <host> : | 패킷의 목적지 IP나 발싲니 IP중 어느하나라도 <host>와 일치하면 참. | ether dst <ehost> : | 패킷의 목적지 ethernet 주소(48bit의 주소로 일반적으로 X:X:X:X:X;X로 표시된다.여기서 X는 16진수)가<ehost>와 일치하면 참 | ether dst <ehost> : | 패킷의 목적지 ethernet 주소가 <ehost>와 일치하면 참. | gateway <ehost> : | <host>가 gateway로 쓰일 때 참. 즉, ethernet발신지 혹은 목적지 주소는 <host>이나 IP 발신지 혹은 목적지 주소로 <host>는 될 수 없다는 것을 의미한다. <host>는 반드시 /etc/hosts와 /etc/ethers에서 찾을 수 있어야 한다.이 expression은 "ether host <ehost> and not host <host>"와 동일한 의미를 가진다.
| dst net <net> : | 패킷의 IP목적지 주소가 <net>과 동일한 테트워크 번호(network number)를 가지면 참. | | src net <net> : 패킷의 IP발신지 주소가 <net>과 동일한 테트워크 번호(network number)를 가지면 참.
| net <net> : | 패킷이 IP목적지 혹은 발신지 주소 둘 중 어느 하나라도 <net>과 동일한 network number를 가지면 참 .
| net <net> mask <mask> : | IP주소가 지정된 netmask(<mask>)를 통하여 network number <net>와 일치하면 참.
| net <net>/<len> : | IP주소가 network number <net>과 netmaks의 <len>비트만큼 일치하면 참.
| dst port <port> : | 패킷이 IP혹은 UDP 이면서 목적지 port값으로 <port>를 가지고 있다면 참. <port>는 숫자나 /etc/services에 정의 되어있는 port이름을 사용할 수 있다. | src port <port> : | 패킷이 IP혹은 UDP 이면서 발신지 port값으로 <port>를 가지고 있다면 참.
| port <port> : | 패킷의 목적지 혹은 발신지 port값에서 둘주 어느하나라도 <port>와 같으면 참이된다. 위의 port expression들은 "tcp"나 "udp"와 함께쓰일 수 있다. ex) tcpdump tcp src port 23 -tcp패킷중에서 발신지 port 23인 것만 검출하여 보내준다.
| less <length> : | 패킷의 길이가 <length>Byte보다 작거나 같으면 참이된다.
| greater <length> : | 패킷의 길이가 <length>Byte보다 크거나 같으면 참이된다.
| ip proto <protocol> : | 패킷이 <protocol> protocol형태의 ip패킷이면 참. <protocol>에는 icmp, igrp, udp , tcp이름이 들어갈 수 있다. tcp, udp,icmp는 키워드로도 사용되기 때문에 <protocol>의 값이 되기 위해서는 앞에 backslash를 붙여준다. | ether broadcast : | 패킷이 ethernet broadcast패킷이면 참. "ehter" keyword는 생략 가능. ip broadcast : 패킷이 ip broadcast패킷이면 참.
| ether multicast : | 패킷이 ethernet multicast 패킷이면 참이된다. "ether"keyword 는 생략가능.
| ip multicast : | 패킷이 ip multicast패팃이면 참.
| ether proto <protocol> : | 패킷이 <protocol>의 ether형태라면 참. <protocol>의값으로는 숫자나 ip, arp, rarp와 같은 이름이 될수있다. | decnet src <host> : | DECNET발신지 주소가 <host>이면 참이 된다. <host>의 값으로는 "10.123"나 DECNET호스트 이름이 될수있다.
| decnet dst <host> : | DECNET목적지 주소가 <host>이면 참.
| decnet host <host> : | DECNET목적지혹은 발신지 주소중에서 어느 하나라도 <host>와 일치하면 참.
| ip, arp, rarp, decnet : | "ether proto <p>"의 축약형이다. 여기서 <p>값은 위의 protocol중의 하나가된다.
| tcp, udp, icmp : | "ip proto <p>"의 축약형이다. 여기서 <p>값은 위의 protocol중 하나가된다.
|
간단한 expression들을 다음의 관계연산자를 통하여 묶음으로서 더욱 복잡한 filter expression을 구성할 수 있다. Nagation : "!", "not" Concatenation : "&&", "and" Alternation : "||", "or"
| |