본문 바로가기

STUDY

[2014 CODEGATE] weird shark

문제의 pcap파일을 와이어샤크로 열면 에러가 뜬다.

블럭의 길이에 문제가 있어서 열리지 않는거 같다. 일단 직역해보자면 EPB의 전체 블럭길이는 96인데 4270407998 바이트인 패킷에 비하면 너무 작아서 문제가 있다는 것 같다. 그렇다면 일단 EPB가 무엇인지 알아보자.

EPB란 Enhanced Packet Block으로 PCAP 구조와 같이 패킷 데이터를 저장하는 블럭이라고 한다. http://www.packetinside.com/2013/08/pcap-ng.html여기로 가면 EPB뿐만 아니라 다른 블록에 대한 설명들도 자세히 되어있으니 보면 좋을 것 같다. 일단 저 길이들을 어떻게 조절해주나 무슨 툴을 써야하는지 조차 몰라 헤맸는데 이 전에 쉬운 패킷 문제를 풀었었는데 hex로 정보가 뜨니까 헥디로 까면 되지 않을까 싶었다.

일단 참고한 블로그의 EPB 설명을 보면 Block Type에서 0x00000006을 가지고 Block total length가 나온다. 에러창에서 EPB의 전체 블럭길이는 96이라고 했으니까 0x00000006과 96의 16진수인 0x60가 연달아 나오는 부분을 찾아보자

이 부분이 Block Type과 Block total length 부분인 듯 하다. 에러창에서 block total length와 packet data가 언급되었으니까 일단 4bytes씩 이동해서 packet length를 보자

파란색으로 그은 부분 다음의 4bytes, 0x0000003e가 Packet length인데 Packet length 위,파란색으로 드래그한 부분은 captured length이다. 직관적으로 생각하면 패킷 길이가 캡쳐된 길이 아닌가 싶어 일단 참고한 블로그의 설명을 더 읽어보니 Snaplen에 따라 둘의 값이 달라질 수도 있는 것 같다. 일단 다른 pcapng파일을 까서 확인해보았다.

드래그한 부분이 Captured Length이고 다음에 오는 똑같은 값의 4bytes가 Packet Length이다. 둘의 값이 똑같고 이 파일은 와이어샤크로 문제없이 열린다.

그래서 혹시나 싶어서 캡쳐 len을 패킷 len에 맞춰 와이어샤크로 열기를 시도했다.

와..!!열린다...!사실 파일을 여는데만 하루가 걸렸다.ㅠ_ㅠ

우선 'frame contains flag' 필터식을 쳐서 보았더니 아무것도 안떴다.

그래서 다시 패킷들을 보는데 HTTP프로토콜에선 파일들을 받는게 보여서 HTTP만 살펴보았다.

다 살펴보니 많은 파일들을 받았는데 패킷들이 받은 파일을 나도 볼려면 추출을 하면 된다! HTTP 프로토콜로 받았으니까 Export Objects HTTP를 토해 파일을 보자

추출해내서 보면

 이런 파일들이 있는데 일단 볼 수 있는 파일들만 보자

사진파일들은 특별한 점이 없는거같아 헥디로 까야하나 생각하고있었는데 multiple.pdf 열자마자 답이 나온다.