와이어샤크 또는 tshark 를 사용하다 보면 패킷이 중간에 끊기어 다음과 같은 메시지를 보는 경우가 있다.
$ tshark -q -z io,phs -r test.pcap
tshark: "test.pcap" appears to have been cut short in the middle of a packet.
tshark 를 사용해 로드하는데 메시지가 패킷중간이 잘린것 같다고 나온다. GUI 환경의 와이어샤크에서도
이런 메시지가 나온다. 이유는, 코드 상에서 로드하다가 이런 경우가 발생되면 빠져나가도록
되어 있기 때문이다. 하지만 때로는, 어쩔수 없이 이런 패킷을 많이 봐야 할 경우도 생긴다.
(와이어샤크로 보는 경우라면 말이다)
특히 유닉스 상에서 덤프를 하는데 tcpdump 와 같이 패킷 덤프를 저장하다가 kill 로 해당 프로세스를 죽이지 않고 kill -9 와 같이 하는 경우는 이런 경우가 종종 발생한다.
일단 소스를 재 컴파일 해야 하는데, 일단 tshark 를 기준으로 설명한다. GUI 기반으로 컴파일 하려면 이것저것 더 필요한 것들이 많아서 귀차니즘으로 tshark 를 기준으로 한다. 물론, GUI 환경으로 컴파일이 다 준비되었다면 똑같이 wireshark 소스코드를 찾아 바꾸면 될 것이다.
와이어샤크 최신버전인 1.2.9 의 경우는 tshark.c 의 2279 라인을 보면 된다.
case WTAP_ERR_SHORT_READ:
cmdarg_err("\"%s\" appears to have been cut short in the middle of a packet.",
cf->filename);
// break; ---> 이 부분을 "//" 로 주석처리한다.
return 0; ---> 그리고 리턴 시켜준다.
break; 라고 되어 있는 부분을 주석처리 하면 된다. 이것은 일부로 에러가 발생해도 계속 동작하도록
수정하는 것이다. 나의 경우는 이런 것이 필요하여 코드를 보다가 이렇게 간단히 수정하여 사용하고 있다.
아래와 같이 실행하면 에러 메시지는 나와도 결과를 볼 수 있다. 필요하면 좀더 자기 입맛에 맞도록 수정하면 된다.
# ./tshark -q -z io,phs -r test.pcap
tshark: "test.pcap" appears to have been cut short in the middle of a packet.
===================================================================
Protocol Hierarchy Statistics
Filter: frame
frame frames:394341 bytes:49686922
eth frames:394341 bytes:49686922
ip frames:394341 bytes:49686922
tcp frames:394318 bytes:49683678
http frames:78864 bytes:31308464
data-text-lines frames:39431 bytes:26418684
udp frames:23 bytes:3244
dns frames:20 bytes:2499
nbdgm frames:3 bytes:745
smb frames:3 bytes:745
mailslot frames:3 bytes:745
browser frames:3 bytes:745
===================================================================
필요에 의해서 간단하게 언급을 해 보았는데, 기회가 되면 다음번에 컴파일 과정에 대해서도 소개하도록 하겠다.
댓글 없음:
댓글 쓰기