2012년 11월 28일 수요일

Log2Timeline 을 이용한 타임라인 그래프 - 활용편

Log2Timeline 을 이용한 데이터 추출에 대해서 알아보았다. 이번에는 추출한 데이터로 직접 타임라인 그래프를 만들어보자.

우선, 저번 예제에서는 기본으로 CSV 로 추출되는 것을 소개했었고 추출된 CSV 를 이용해 엑셀 같은 곳에서 활용하면 된다. 하지만 이미 언급했듯이 추출된 데이터들을 효과적으로 사용하는데 있어서는 한계가 있다고 했다. 이번 타임라인 그래프도 제한된 화면에 단지 많은 내용이 나타나다 보니 실질적으로 분석가 입장에서는 부족함이 있다.

조금 더 낳은 방법을 추후에 소개하도록 하고, 오늘은 이렇게 사용될 수 있다는 부분을 알아두면 될것 같다. 타임라인 표현에 Simile-Widget 을 사용하였다.  이것을 사용한 이유는 log2timeline 에서 출력 형태로 simile 을 지원해 주기 때문이다.

Simile 위젯에 대한 세부 정보는 다음 사이트를 참고하길 바란다.


http://www.simile-widgets.org/timeline/

사용하기 위해서는 간단히 -o 로 출력 형태를 simile 로 지정해 주면 된다.

# log2timeline -f pcap -o simile -w example.xml timeline.pcap
-----------------------------------------------------------------
      [WARNING]
No timezone has been chosen so the local timezone of this
machine is chosen as the timezone of the suspect drive.

If this is incorrect, then cancel the tool and re-run it
using the -z TIMEZONE parameter to define the suspect drive
timezone settings (and possible time skew with the -s parameter)

(5 second delay has been added to allow you to read this message)
-----------------------------------------------------------------
Start processing file/dir [timeline.pcap] ...
Starting to parse using input modules(s): [pcap]
Local timezone is: Asia/Seoul (KST)
Local timezone is: Asia/Seoul (KST)
Loading output module: simile

example.xml 로 파일이 저장되었다. -z 로 타임존을 지정해 주지 않아서 경고메시지가 나타나고 로컬 컴퓨터의 기본 타임존을 사용하였다. example.xml 파일을 한번 들여다 보자.



화면과 같이 XML 로 구성되어 있는 파일이다.  이벤트의 시간, 타이틀 정보등이 보인다. 이제 이 데이터를 이용해 타임라인을 만들어주기 위한 파일을 만들어야 한다.

다음과 같이 test.html 파일을 만들어 본다.



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
        <script>Timeline_urlPrefix = "http://static.simile.mit.edu/timeline/api-2.3.1/";;</script>
        <script src="http://static.simile.mit.edu/timeline/api-2.3.1/timeline-api.js?bundle=true" type="text/javascript"></script>
        <script>
        var tl;
        function onLoad() {
        var eventSource = new Timeline.DefaultEventSource();
        var bandInfos = [
        Timeline.createBandInfo({
             eventSource:    eventSource,
    date: "Nov 10 2012 00:00:00 GMT",
            width:          "80%",
            intervalUnit:   Timeline.DateTime.MINUTE,
            intervalPixels: 100
        }),
        Timeline.createBandInfo({
            overview:       true,
            eventSource:    eventSource,
    date: "Nov 10 2012 00:00:00 GMT",
            width:          "20%",
            intervalUnit:   Timeline.DateTime.HOUR,
            intervalPixels: 200
        })
        ];
        bandInfos[1].syncWith = 0;
        bandInfos[1].highlight = true;
        tl = Timeline.create(document.getElementById("my-timeline"), bandInfos);
        Timeline.loadXML("/example.xml", function(xml, url) { eventSource.loadXML(xml, url); });
        }

        var resizeTimerID = null;
        function onResize() {
            if (resizeTimerID == null) {
                resizeTimerID = window.setTimeout(function() {
                    resizeTimerID = null;
                    tl.layout();
                }, 500);
            }
        }
        </script>    
    </head>

    <body onload="onLoad();" onresize="onResize();">
        <div id="my-timeline" style="height: 300px; border: 1px solid #aaa"></div>
        <noscript>
        This page uses Javascript to show you a Timeline. Please enable Javascript in your browser to see the full page. Thank you.
        </noscript>
    </body>

 </html>



위 HTML 파일을 그대로 저장하고 색상을 지정해 표시한 부분만 변경하면 기본적으로 타임라인 그래프 생성하는데 큰 문제는 없다.  createBandInfo 에서 각 이벤트의 출력 시작 날짜를 지정해 준다. 타임라인 데이터의 표시할 시간 형태를 정의하게 되는데 MINUTE, HOUR, DAY, MONTH 와 같은 형태로 사용할 수 있다. 여러분들이 로드하는 패킷 데이터의 시간 분포 형태에 따라 적절히 선택해 주면 된다.

그리고 마지막으로 앞서 만든 XML 파일 명을 지정해 주면 끝이다. 브라우저를 통해 해당 HTML 파일을 로드하면 다음과 같은 화면을 볼 수 있다.


여기서 사용한 패킷 데이터가 특정 시간에 크게 패킷이 모여있다 보니 표현하는데 다소 한계가 있다.

그런데 여기서 잠깐! 위와 같이 화면이 나타나지 않는 분이 있을 것이다. 필자도 처음에 안나와서 왜 그럴까 봤더니 타임존 문제였다. XML 데이터에서 Asia/Seoul 을 GMT 로 변경해 주니 잘 나타났다.

다음번에 시간이 더 허락된다면 Simile 에서 좀더 효과적인 패킷 타임라인을 고민해 보고자 한다. 일단 다음을 기약하며 오늘은 여기까지 ~ :-)

/Rigel

댓글 없음:

댓글 쓰기