미친해커

[Wireshark] Tree에 Item을 추가해 데이터 시각화하기 본문

Wireshark/Lua Script

[Wireshark] Tree에 Item을 추가해 데이터 시각화하기

미친해커 2022. 7. 30. 04:53
반응형

이번 포스팅에서는 와이어샤크의 Tree(트리)에 TreeItem을 생성하고 생성된 TreeItem에 Item을 추가해 데이터를 보다 보기 좋게 시각화하려고 한다.

 

이전 포스팅을 읽지 않았다면 읽는 것을 추천한다.

 

[Wireshark] Dissector로 프로토콜 만들기

Create a Protocol use Wireshark API 우선 Wireshark(와이어샤크)에서 제공하는 API를 활용해 직접 프로토콜을 정의한다. MyProto = Proto.new("MyProto", "My Custom Protocol") Define Dissector of MyProto 새..

crazyhacker.tistory.com

How to add TreeItem to Wireshark

dissector의 인자로 들어오는 root를 이용해 TreeItem을 생성할 수 있다.

MyProto = Proto.new("MyProto", "My Custom Protocol")

function MyProto.dissector(buf, pinfo, root)
    pinfo.cols.protocol = "MY_PROTOCOL"
    local st = root:add(MyProto, "MY PROTOCOL DATA", buf(0, buf:len()))
end

DissectorTable.get("tcp.port"):add(8080, MyProto)

위 코드는 MY PROTOCOL DATA라는 이름의 트리 아이템을 추가하는 코드이다. 생성된 트리 아이템을 변수에 저장해야 하위에 아이템을 생성할 수 있다.

How to add Sub-Item for TreeItem

위에서 생성한 트리 아이템에 아이템을 추가해 데이터를 보기 좋게 만들 수 있다.

st:add(buf(0), "Data: " .. buf(0):bytes():tohex())

위 이미지와 같이 아이템이 생성된 것을 확인할 수 있다.

 

생성된 아이템을 클릭해보면 아래에 해당되는 데이터가 파란색으로 하이라이트 되는 것을 볼 수 있는데 이는 자동적으로 되는 것이 아니라 st:add 함수에서 첫 번째 인자로 해당 범위를 지정해주는 것이다.

 

st:add(buf(0, 2), "Data: " .. buf(0, 2):bytes():tohex())

위 코드를 예로 들자면 buf(0, 2) 는 TCP 프로토콜 Payload의 오프셋 0부터 2바이트를 아이템의 범위로 지정해준다는 의미이다. 맨 위의 예시에서는 offset만 지정해주고 length는 지정하지 않았기 때문에 오프셋 0부터 모든 데이터가 범위로 지정됐다.

반응형

'Wireshark > Lua Script' 카테고리의 다른 글

[Wireshark] Dissector로 프로토콜 만들기  (0) 2022.07.28
[Wireshark] Lua Script 개발 환경설정  (0) 2022.07.28
Comments