2011년 7월 12일 화요일

Tcpdump 의 출력내용을 내가 원하는 형태로 바꾸어 보자.

예전에 검색하다 Tcpdump 필터를 하나 발견한 것이 있다. AWK 로 제작한 간단한 스크립트로 Tcpdump 의 출력내용을 awk 로 파싱하여 좀더 보기 쉽게 출력한 것이다. 다음은 일반적으로 tcpdump 를 통해 출력한 내용의 일부분이다.

# tcpdump -i eth0 -s1550 -x


09:26:19.571231 IP 202.131.29.71.www > 192.168.15.11.60478: . 1:1461(1460) ack 658 win 6570
0x0000:  4500 05dc 89d8 4000 3406 ffc5 ca83 1d47
0x0010:  c0a8 0f0b 0050 ec3e b64f e2ba e85c e4e9
0x0020:  5010 19aa 1b94 0000 4854 5450 2f31 2e31
0x0030:  2032 3030 204f 4b0d 0a44 6174 653a 204d
0x0040:  6f6e 2c20 3131 204a 756c 2032 3031 3120
0x0050:  3133 3a32 363a 3137 2047 4d54 0d0a 5365
0x0060:  7276 6572 3a20 4170 6163 6865 0d0a 4c61


물론 -X 옵션과 같은 몇 가지를 조합하면 ASCII 값도 출력시키면서 조금은 더 보기 좋게 볼 수 있다. 여기서 소개하는 것을 이용하면 아래 화면과 같은 형태로 출력된다.


상단에 헤더정보가 요약되어 보이고 다음에 스트링 문자열을 보여준다. 사용방법은 아래 경로에서 스크립트를 다운로드 받고,

# tcpdump -i eth0 -l -s 65535 -x | fil

과 같이 사용하면 된다. 그냥 간단히 덤프하는 출력 내용을 fil 로 전달하는 것 뿐이다.

http://www.ishiboo.com/~danny/Projects/tcpdump.awkfilter/fil

요새는 워낙 좋은 도구들이 많이 나와있다보니 이런 필터가 큰 의미가 있을까 하는 분들도 있을 것이다. 나또한 이 필터의 직접 적인 출력 내용보다도 이런 방식으로 활용할 수 있다는 것을 여러분들에게 소개해 주고 싶은 것이다. Awk 로 만들어져 있지만, 이외에도 다양한 스크립트를 이용할 수 있다.  업무에 따라, 필요로 하는 정보가 조금씩 달라진다. 그럴때 나에게 맞는 도구를 간단히 만들어 응용해 보면, 더욱 효과적인 패킷 분석이 가능해 진다.  꼭, 어렵게 생각할 필요는 없다. 기존에 나와있는 도구를 잘 응용하면 여러분이 원하는 도구로 쉽게 만들어 버릴 수 있다는 사실을 잊지말자!

P.S 처음 받아서 실행해 보면, 출력이 제대로 되지 않아 살펴보았다. fil 필터를 열어보면 다음과 같은 시작부분에서 startip 를 0 에서 1로 변경하였다. 그냥 실행시 제대로 정보가 출력되지 않아, 프로토콜 번호를 찍어보니 엉뚱한 것이 찍히고 있었고, 코드를 확인결과 startip 만 살짝 바꾸면 위와 같이 출력이 된다.


BEGIN {
        BIGENDIAN = 0
        margin="   "
        startip=1
        FS = " "
}

댓글 1개:

  1. AWK 소스를 더 수정해야 할것 같습니다
    저렇게 돌리면 모든 DST 첫번째 IP 가 0 으로 나오구요
    소스 중 아래 IP 찍는 부분에
    =========================================
    else if(drawn == startip+15)
    printf("%d->",X)
    else if(drawn == startip+17)
    =========================================

    15 다음에 16이 아닌 17을 더해 주셔야 정확한 정보가
    찍히겠습니다.

    NIXLUX~ 필요한 정보는 언제든지~
    감사합니다.

    답글삭제