티스토리 뷰
2. 조회하는 동안 패킷들을 캡쳐하기
Ethereal은 두개의 필터링 언어를 가지고 있다. 한개는 패킷을 캡쳐할때 사용되고, 다른 한개는 패킷을 디스플레이할때 사용된다. 이 장에서는 필터의 두번째 타입을 조사할 것이다. 처음의 타입은 벌써 4장의 5. 캡쳐하는 동안 필터링하기 에서 다루어졌다.
디스플레이 필터들은 당신이 관심있어하는 패킷에 집중하는 것을 허락한다. 그것들은 당신이 아래와 같은 기준에 의해서 패킷을 선택하는 것을 허락한다.
프로토콜
필드 자체
필드들의 값
필드들간의 비교
그외 더 많은 것들..
프로토콜 타입에 근거해서 패킷을 선택하기 위해서는, 당신이 관심있어하는 프로토콜을 Ethereal 창의 필터 툴바의 Filter 필드에 간단히 타이핑해라. 그리고 필터를 시작하기 위해서 엔터를 쳐라. 그림 6.6. "TCP 프로토콜 필터링"는 당신이 필터 필드에 tcp를 타이핑할때 어떤 일이 일어나는지에 대한 예를 보여준다.
주의!
모든 프로토콜과 필드 이름들은 소문자로 입력되어야 한다. 또한, 필터 표현을 입력한 후에 엔터 치는 것을 잊지마라.
그림 6.6 TCP 프로토콜 필터링
아마도 당신이 알아챈것처럼, TCP 프로토콜의 패킷들만이 지금 디스플레이되고 있다.(예로써, 1부터 10까지의 패킷들은 보이지 않는다.) 패킷 번호는 처음과 같이 그대로 유지되기 때문에, 가장 처음에 보이는 패킷의 번호는 11이다.
주의!
디스플레이 필터를 사용할때, 모든 패킷들은 캡쳐 파일안에 (그대로) 남아 있다. 디스플레이 필터는 단지 캡쳐 파일의 디스플레이만 변경시키지, 그 내용물은 변경하지 않는다.
당신은 Ethereal이 판독할 수 있는 어떤 프로토콜에 대해서도 필터할 수 있다. 또한 당신은 해부자가 트리 뷰에 추가한 어떤 필드(단, 만약 해부자가 필드에 대하여 약자를 추가한 경우는 예외이다.)에 대해서도 필터할 수 있다. 그런 필터들의 목록은 Ethereal의 Add Expression... 다이얼로그 박스에서 사용 가능하다.
예로써, IP 주소 192.168.0.1로 주고받는 패킷들만으로 패킷 목록 창을 좁아지게 하기 위해서는 ip.addr==192.168.0.1을 사용한다.
주의!
필터를 제거하기 위해서는, 필터 필드의 오른쪽에 있는 Clear 버튼을 클릭해라.
3. 디스플레이 필터 표현들 만들기
Ethereal은 간단하지만 강력한 디스플레이 필터 언어를 제공한다. 당신은 이것을 가지고 꽤 복잡한 필터 표현들을 만들 수 있다. 당신은 패킷들안의 값들을 비교할 수 있을뿐만 아니라, 표현들을 더 상세한 표현들속으로 결합할 수 있다. 다음의 섹션들은 이것을 수행하기 위한 더 많은 정보를 제공한다.
3.1. 필터 필드들을 디스플레이
패킷 상세 창안의 모든 필드는 필터 문자열로써 사용될 수 있고, 이것은 그 안에 이 필드들이 존재하는 패킷들만 보여주게 된다. 예로써, tcp 필터 문자열은 tcp 프로토콜을 포함하는 모든 패킷들을 보여줄 것이다.
메뉴 아이템 "Help/Supported Protocols"의 "Display Filter Fields" 페이지에는 사용 가능한 모든 필터 필드들의 완전한 목록이 있다.
3.2. 값들 비교
당신은 아주 많은 서로 다른 비교 연산자들을 사용하여 값들을 비교하는 디스플레이 필터들을 만들 수 있다. 그것들은 표 6.2. "디스플레이 필터 비교 연산자들"에서 보여진다.
당신은 English와 C-like 용어들을 같은 방법으로 사용할 수 있다. 심지어는 그것들은 필터 문자열안에 섞일 수도 있다.
테이블 6.2. 디스플레이 필터 비교 연산자들
English |
C-like |
설명 및 예 |
eq |
== |
같다 ip.addr == 10.0.0.5 |
ne |
!= |
같지 않다. ip.addr != 10.0.0.5 |
gt |
> |
크다 frame.pkt_len > 10 |
lt |
< |
작다 frame.pkt_len < 128 |
ge |
>= |
크거나 같다 frame.pkt_len ge 0x100 |
le |
<= |
작거나 같다 frame.pkt_len <= 0x20 |
추가적으로 모든 프로토콜 필드들은 분류되어진다. 표 6.3. "디스플레이 필터 필드 타입들"는 타입들의 목록과 그것들을 어떻게 표현할 것인지에 대한 예제를 제공한다.
표 6.3. 디스플레이 필터 필드 타입들
Type |
예제 |
Unsigned intege (8-bit, 16-bit, 24-bit, 32-bit) |
당신은 integer들을 10진수 또는 8진수 또는 16진수로 표현할 수 있다. 다음의 디스플레이 필터들은 모두 같은 값들이다. ip.len le 1500 ip.len le 02734 ip.len le 0x436 |
Signed integer (8-bit, 16-bit, 24-bit, 32-bit) |
|
Boolean |
boolean 필드는 만약 그 값이 true일 경우만, 프로토콜 디코드에서 존재한다. 예로써, tcp.flags.syn는 만약 SYN 플래그가 TCP 세그먼트 헤더에 존재할 경우만, 존재하며, 그 값은 true이다. 따라서 필드 표현 tcp.flags.syn는 이 플래그가 존재하는 패킷들만 선택한다. 즉, 그 패킷들은 세그먼트 헤더가 SYN 플래그를 포함하는 TCP 세그먼트들이다. 비슷하게, 소스가 라우팅되는 토큰 링 패킷들을 발견하기 위해서는 tr.sr 필터 표현을 사용하라. |
Ethernet address(6 bytes) |
eth.addr == ff:ff:ff:ff:ff:ff |
IPv4 address |
ip.addr == 192.168.0.1 |
IPv6 address |
|
IPX network number |
|
String(text) |
|
Double-precision floating point number |
|
English C-like 설명 및 예 and && 논리적 AND ip.addr == 10.0.0.5 and tcp.flags.fin or || 논리적 OR ip.addr == 10.0.0.5 or ip.addr == 192.1.1.1 xor ^^ 논리적 XOR tr.dst[ not ! 논리적 NOT not 11c […] 하위 문자열 연산자 Ethereal은 당신이 보다 정교한 방법들로 순서의 결과들을 선택할 수 있게 한다. 라벨을 한 이후에 콤마로 분리된 범위 열거자들의 목록을 포함하는 꺾쇠괄호 [] 한 쌍을 놓아 둘수 있다. eth.src[ 위의 예제는 하나의 범위를 상세화하기 위해서 n:m 포맷을 사용한다. 이 경우에 n은 시작 offset이고 m은 상세화된 범위의 길이이다. eth.src[1-2] == 00:83 위의 예제는 하나의 범위를 상세화하기 위해서 n-m 포맷을 사용한다. 이 경우 n은 offset의 시작이고 m은 offset의 끝이다. eth.src[:4] == 위의 예제는 :m 포멧을 사용한다. 이것은 순서의 시작으로부터 offset m까지의 모든 것을 가진다. 이것은 0:m과 동일하다. eth.src[4:] == 위의 예제는 n: 포멧을 사용한다. 이것은 offset n으로부터 순서의 마지막까지의 모든 것을 가진다. eth.src[2] == 83 위의 예제는 하나의 범위를 상세화하기 위해서 포멧을 사용한다. 이경우에 offset n의 순서안의 엘레먼트는 n이 선택된다. 이것은 n:l과 동일하다
'네트워크 > 관련유틸' 카테고리의 다른 글
Ethereal 사용자 가이드[6장 캡쳐된 패킷 조작(4)] (0) | 2008.06.22 |
---|---|
Ethereal 사용자 가이드[6장 캡쳐된 패킷 조작(3)] (0) | 2008.06.22 |
Ethereal 사용자 가이드[6장 캡쳐된 패킷 조작(1)] (0) | 2008.06.22 |
Ethereal 사용자 가이드[4장 라이브 네트워크 데이터 (0) | 2008.06.22 |
Ethereal 사용자 가이드[3장 사용자 인터페이스(4)] (0) | 2008.06.22 |
- Total
- Today
- Yesterday