wireshark外掛程式開發 自定義協議

2021-08-08 12:55:42 字數 2671 閱讀 7776

雖然wireshark自帶了很多知名協議的解析外掛程式,譬如http、dhcp等等,然而在實際應用環境中,有不少軟體之間的通訊協議都是私有的,如遊戲客戶端和伺服器之間的互動協議通常都是私有的,wireshark無法具體解析出各種字段之間的含義,只能顯示接收到的二進位制資料,給協議的分析和問題的排查帶來了一定的困難,尤其是協議內容比較複雜時。

本文乙個自定義的簡單協議入手,分析如何基於wireshark開發自定義協議分析外掛程式。

本書使用go語言來描述協議的互動過程。go由google出品,號稱是網際網路上的c語言,有點類似於c語言,以其簡潔和高併發著稱。

即使不了解go語言也沒有關係,本書給出的**,基本可以自釋其義,了解過程即可,重點不在於此。

1 package packet

2 3 import (

4     "bytes"

5     "encoding/binary"

6     "fmt"

7     "os"

8 )9 10 type npacket struct

15 16 func (packet *npacket) string() string

20 21 func checkerror(err error)

26 }

27 28 func converttopacket(b byte) (packet *npacket, err error)

32 #將緩衝區buffer的內容轉換到npacket結構體中

33     err = binary.read(buffer, binary.bigendian, packet)

34 35     return packet, err

36 }

37 38 func converttobuffer(packet *npacket) (b byte, err error)

1 package main

2 3 import (

4     "fmt"

5     "net"

6 )7 8 import "packet"

9 10 func main()

18     copy(pkt_send.buffer[:], "ping")

19 20     send_buff, err := packet.converttobuffer(&pkt_send)

21     packet.checkerror(err)

22 #傳送報文

23     conn.write(send_buff)

24 25     var recv_msg [4096]byte

26 #讀取報文

27     n, err := conn.read(recv_msg[0:])

28     packet.checkerror(err)

29 30 #報文轉換到結構體中

31     pkt_recv, err := packet.converttopacket(recv_msg[0:n])

32     packet.checkerror(err)

33 34 #會呼叫npacket結構體的string方法

35     fmt.println(pkt_recv)

36 }

1 package main

2 3 import (

4     "fmt"

5     "net"

6 )7 8 import "packet"

9 10 func recvudpmsg(conn *net.udpconn)

25     copy(pkt_send.buffer[:], "pong")

26 27     send_buff, err := packet.converttobuffer(&pkt_send)

28     packet.checkerror(err)

29 #傳送報文

30     _, err = conn.writetoudp(send_buff, raddr)

31     packet.checkerror(err)

32 }

33 34 func main()

1、啟動服務端

開啟cmd視窗,進入原始碼所在目錄

set gopath=原始碼所在目錄

go run src\main\server.go

2、啟動客戶端

開啟cmd視窗,進入原始碼所在目錄

set gopath=原始碼所在目錄

推薦:計算機類等經典類書籍收藏

wireshark外掛程式開發小結

關鍵字 wireshark,plugin,lua,protocol wireshark是非常流行的網路封包分析軟體,功能十分強大。可以抓取各種網路包,並顯示網路包的詳細資訊。為什麼使用wireshark troubleshoot network problems 定位網路問題 debug proto...

wireshark外掛程式開發 C外掛程式解析

相比較而言,c語言就比較麻煩,需要準備一堆開發環境和第三方庫,不夠簡潔,不過 c語言的乙個優點就是快。然而,lua語言在指令碼語言也是出了名的快,除非報文的流量非常大。大概章節劃分 目錄 2 1.導言 3 2.自定義協議 3 2.1.概述 4 2.2.協議描述 4 2.3.客戶端 5 2.4.服務端...

開發自己的One Page Scroll外掛程式(二)

開發自己的one page scroll外掛程式 一 我經常會不停地發布當前的版本,從而可以在github上得到不斷的反饋。我的開發模式是不斷的迭代。在開始的時候,我不會太關注它在手機上的效 果,其實到目前我也沒有關注這個問題。但其實我使用了乙個簡單的解決方案。通過檢測和轉換資料,從而在手機上同樣能...