2010년 5월 28일 금요일

와이어샤크(WireShark)의 그래프 기능 활용하기 - 고급편

그래프 기능 활용 기본편에 이어 이번에는 조금더 고급적으로 쓸 수 있는 방법을 소개하겠다. 와이어샤크의
IO Graph 기능을 단순히 와이어샤크로만 한정하지 않고 다른 방법을 통해 그래프도 좀도 이쁘게 만들 수 있는
방법과 그래프 생성시 SUM, MAX 와 같은 함수를 이용한 그래프 생성 방법이다.

자 일단, 아래의 그림을 살펴보자. 이것은 그래프를 생성할때 Y Axis 에서 Unit 을 Advanced 로 선택하면
Calc 라는 추가 입력을 볼 수 있다. 즉, 합을 구하거나 최대, 최소, 평균 값등을 계산할 때,
이 방법을 사용하면 유용하게 이용할 수 있다. 특정 프로토콜에서 계산이 가능한 값이 있을 경우, 함수를 통해
그래프를 생성하면 좀더 의미있는 형태로 만들 수가 있는 것이다. 아래 예제에서는 http.content_length (빨간색)을 바로 표현했고, 프레임 길이를 녹색으로 그리고 IP 프로토콜의 TTL 을 합산으로 사용해 보았다.
frame.len 을 보면 01:50:57 부터 일정하게 높은 수치가 유지되고 있고 있다. 이뜻은 이 시간에 전송한 패킷 프레임의 길이가 일정하게 큰 수준으로 계속 이어졌다는 것이다.

또한 그래프 화면에서 해당 지점을 클릭하면 어떤 패킷을 가르키는지 와이어샤크의 출력화면이 해당 패킷으로 움직이게 된다. 그래프를 보고서 의심스러운 지점을 찾아 쉽게 볼 수 있는 것이다.


위 화면은 여러분들에게 소개를 하기 위해 임의로 계산을 한 것이지만, 여러분들이 분석하고자 하는 데이터에
따라 사용한다면 아주 유용한 그래프가 될 것이다.

자, 다음으로는 앞서 기본편에서 언급한 IO Graph 에서 Copy 명령을 통해 CSV 형태로 저장할 수 있다고 설명하였다. Copy 를 누른 후 보면 각 데이터는 콤마(,) 로 구분되어 나열되어 있다. 이렇게 저장한 CSV 를 어떻게 활용할 수 있을까 ? 그렇다. 바로 CSV 를 지원하는 도구를 이용하면 그래프를 더욱 멋지게 생성할 수 있는 것이다. 우리가 업무에서 많이 활용하고 있는 엑셀(Excel) 을 예로 들어보자. 아래의 그래프 화면은 엑셀을 이용하여 만들어 본것이다. 엑셀에서 해당 파일을 로드할때 CSV 형태로 로드하면서 구분자는 콤마로 지정한다. 그러면 엑셀에서 원하는 영역을 선택하여 그래프로 만들어주면 아래와 같이 멋진 그래프로 탄생한다.

엑셀을 자유롭게 다루는 분이라면 훨씬 멋진 그래프 화면을 만들어 낼 수가 있을 것이다. 또 다른 예제로 오픈오피스를 이용한 그래프 생성에 대해서도 소개하고자 한다. 이 내용은 아래 주소에서 본 슬라이드를 보고서 소개하는 것이다.


필자는 주로 오픈소스를 사용하기를 원하는데, 적절한 소개인것 같다. 이번에도 마찬가지로, 똑같이 CSV 데이터를 이용하는 것이다. CSV 데이터를 이용하는 부분은 와이어샤크의 메인 화면에 출력되는 컬럼을 이용하는 것이다.

와이어샤크 메인의 기본 컬럼 구성은
번호, 시간, 출발지, 목적지, 프로토콜, 정보 로 구성된다. 이 화면에 출력된 내용을 CSV 로 저장할 수 있는 것이다. 그런데 기본 컬럼을 바꿀 수 있다는 사실을 알고 있을 것이다. Edit->Preference 를 선택하고 Columns 를 보면 된다. 바로 여기에서 아래 부분의 필드타입을 Packet length (bytes) 를 선택하고 Add 를 눌러보자. (컬럼 이름은 Length 라고 정의하였다)그러면 컬럼에 패킷의 길이가 추가된다. 여기 예에서는 패킷 길이를 선택하였지만, 원하는 형태로 선택할 수 있다.

자, 그리고 CSV 데이터를 얻기 위해 File -> Export -> File 을 선택해 보자. 아래 화면과 같이 파일 형식을 CSV 로 선택하고 저장할 파일이름을 적고 저장을 누른다.

이제, 우리가 사용할 데이터를 얻었으니 오픈오피스를 통해 그래프를 생성해 주는 일만 남았다. 오픈오피스 Calc 를 일단 실행하고 파일오픈을 선택하자. * 오픈오피스는 openoffice.org 에서 받을 수 있다.

파일 오픈시 읽어들일 데이터를 CSV 로 선택후 오픈하면 CSV 로 파싱할 화면이 나타난다. 그리고 구분자로 Comma 로 선택하면 필드가 제대로 나뉘어 진다.
그러면 엑셀 형태와 같이 데이터가 기록이 된다. 그래프를 생성해 내고자 하는 형태는 시간별로 얼마나
많은 패킷 데이터가 전송되었는지를 표현하기 위해서이다. 그래서, 앞서 와이어샤크에서 컬럼을 추가해
각 패킷 길이 컬럼을 추가한 것이다.

필요한 컬럼은 시간과 패킷 길이(바이트) 이다. 그런데 라인수가 엄청나다. 아무래도 시간대 별로 한개씩
다 기록되어 있으니 말이다. 그래서 활용하는 방법이 Subtotals 기능을 이용하는 것이다. 시간 컬럼을 기준으로
Length 의 합을 구하는 것이다. 아래 화면과 같이 Group by 에서 Time 을 선택하고 Subtotals 대상인 Length 를 선택후 사용할 기능으로 Sum 을 선택한다.

그러면 화면의 왼쪽 부분에 선 같은 것이 생길것이다. 거기서 2번을 눌러보면 아래 그림과 같이 만들어 진다. 이 화면에서는 불필요한 컬럼은 다 삭제하였고, 시간 부분에 합산을 하고 나면 12시36분27초 Sum 과 같이 생긴다. 이때는 Edit 기능에 있는 Find & Replace 기능을 활용해 변경할 문자열을 Sum 을 선택하고 대상 문자열을 공백으로 두고 Replace 를 눌러버리면 말끔하게 삭제할 수 있다.

이제 마지막까지 왔다. 드디어 그래프를 생성하기 위해 열을 선택하고 Insert 메뉴에서 Chart 를 선택하거나, 메인 화면의 차트 아이콘을 클릭하면 된다. 그리고서 생성을 하면 멋진 그래프가 만들어진다.


비록 하나의 그래프를 생성하기 위해 많은 사전 작업을 거쳤지만, 모든걸 무료로 사용할 수 있다는 점이 매력적이지 않은가? 와이어샤크의 그래프 생성이 비주얼 적으로 이쁘지는 않지만, 데이터를 CSV 로 저장하여 활용한다면 어느 프로그램보다도 멋지게 그래프를 생성할 수 있다.  여기서는 여러분들에게 소개하기 위해서 그래프가 볼품이 없을지도 모르지만, 그건 여러분들이 그래프 생성하는데 얼마나 시간을 쏟느냐에 따라 달려있는 것이다.

와이어샤크의 수 많은 데이터를 이용해서 멋진 그래프를 이제 생성할 수 있다는 사실 !
이제 여러분도 와이어샤크 만으로도 멋진 패킷 분석 보고서를 만들어 낼 수 있을 것이다.

멋진 그래프를 생성한다면 댓글을 달아주세요. 다른 분들과 공유할 수 있도록 예제로 소개해 드리겠습니다.
Good Luck to you!


댓글 1개: