패킷파일을 다루다 보면 보통은 우리가 패킷파일을 오픈하고 살펴볼 수 있는 크기의 파일이 많다.
너무 파일이 커 버리면 분석하는것 자체도 힘들기 때문에..
[관련글] 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 패치
댓글 없음:
댓글 쓰기