2010년 9월 6일 월요일

와이어샤크에서 2기가 이상의 파일이 열리지 않는다면...

패킷파일을 다루다 보면 보통은 우리가 패킷파일을 오픈하고 살펴볼 수 있는 크기의 파일이 많다.
너무 파일이 커 버리면 분석하는것 자체도 힘들기 때문에..

[관련글] 2010/01/27 Rigel 100 기가 가 넘는 패킷 파일이라고 ? 

그런데 때로는 패킷파일이 생각 이상으로 커지기도 한다. 필자가 이전에 쓴 포스팅에서는 100 기가가
넘는 패킷파일도 있었다고 이야기 하였다. 이번에는 그 정도까지는 아니지만, 대략 2기가가 넘는 파일을
읽어 들이려고 했을때 아래와 같은 에러 메시지를 얻을 수가 있다. (물론, 와이어샤크를 기준으로 했을때이다)

capinfos: Can't open /tmp/test.pcap: Value too large for defined data type

와이어샤크에서는 기본적으로 2기가 이상의 파일을 읽어들일 수가 없다. 이유는 int32 값을 사용하고 있기 때문인데, int32 의 값 범위는 아래와 같다.

−2,147,483,648 to 2,147,483,647

그래서 2기가 정도로 제한된 것이다. 일단 간단하게 나마 해결책은 64비트로 변경해 주는 것이다. 새롭게 다시 컴파일을 해 주면 되는데 아래와 같이 설정후에 컴파일을 다시 해 보자.

CFLAGS=-D_GNU_SOURCE\ -D_FILE_OFFSET_BITS=64 ./configure --enable-wireshark=no --without-zlib


            Build profile binaries : no
                   Use pcap library : yes
                   Use zlib library : no
                   Use pcre library : no
               Use kerberos library : no

./configure 다음의 옵션은 여러분들의 필요에 따라 맞게 사용하면 되고, 중요한 것이 앞쪽에서 CFLAGS 에 설정한 FILE_OFFSET_BITS 를 64로 설정한 것이다. 64 비트로 했을때의 값은 아래와 같다.

−9,223,372,036,854,775,808 to +9,223,372,036,854,775,807

큰 파일을 오픈하는데는 걱정하지 않을 수준이다.

컴파일을 하고, 파일을 읽어보자. (여기서는 tshark 를 사용하지 않고 기본 정보를 얻기 위해 capinfos 를 사용하였다.)

# ./capinfos  /tmp/test.pcap
File type:           Wireshark/tcpdump/... - libpcap
File encapsulation:  Ethernet
Number of packets:   2936376
File size:           3062134522 bytes
Data size:           3015152482 bytes
Capture duration:    310 seconds
Start time:          Tue Aug 31 05:10:43 2010
End time:            Tue Aug 31 05:15:53 2010
Data byte rate:      9737875.87 bytes/sec
Data bit rate:       77903006.99 bits/sec
Average packet size: 1026.83 bytes
Average packet rate: 9483.46 packets/sec

짜잔. 위 예와 같이 3기가 파일도 이제는 오픈이 된다.  이와 관련한 비공식 패치는 아래 참고의 2번을 참고하기 바란다.

[참고]
1. 2147483647
2. 와이어샤크 int32 패치

댓글 없음:

댓글 쓰기