編寫wireshark外掛程式解析私有協議

2022-07-07 23:30:33 字數 3519 閱讀 6205

未完待續

通過編寫lua外掛程式解析金盤電子閱覽室管理系統的協議。

外掛程式存放位置:

幫助->關於 wireshark -> 資料夾->全域性lua外掛程式

-- tvb的長度

local pktlen = tvb:reported_length_remaining()

-- show protocol name in protocol column

-- "茴"字的三種寫法

pinfo.cols.protocol = name

pinfo.cols.protocol:set(name)

pinfo.cols['protocol'] = name

-- 客戶端發出的包

if pinfo.src_port == 1235 then

subtree:add(fields.checksum,tvb(0,8))

subtree:add(fields.code,tvb(9,2))

local code = tvb(9,2):string()

pinfo.cols.info:set("code:" .. code)

if code == '28' then

if tvb(12,1):string() == '1' then

subtree:add(tvb(12,1),"登入:是")

else

subtree:add(tvb:range(12,1),"登入:否")

end

endif code == '20' then

local username = ''

local password = ''

local i = 12

while i < pktlen do

if tvb(i,1):uint() ~= 0xff then

username = username .. tvb(i,1):string()

else

break

endi = i+1

endsubtree:add(tvb:range(12,i-12),"username:" .. username)

i = i+1

local j = i

while i < pktlen do

if tvb(i,1):uint() ~= 0xff then

password = password .. tvb(i,1):string()

else

break

endi = i+1

endpassword = pwddecode(password)

recodeusernamepassword(username,password)

subtree:add(tvb:range(j,i-j),"password:" .. password)

end-- 伺服器發出的包

elseif pinfo.src_port == 1234 then

subtree:add(fields.code,tvb(0,2))

local code = tvb(0,2):string()

pinfo.cols.info:set("code:" .. code)

if code == "0a" then

subtree:add(tvb:range(5,pktlen-5-1),"messagebox:" .. tvb:range(5,pktlen-5):string(enc_gb18030) .. "!!!")

elseif code == "12" then

subtree:add(tvb:range(5,pktlen-5-1),"messagebox:" .. tvb:range(5,pktlen-5):string(enc_gb18030))

endend

endfunction pwddecode(password)

local passworddecode = ''

local length = string.len(password)

local i = 0

while i < length do

local temp

temp = string.char( string.byte(password,length-i) - length + i)

passworddecode = passworddecode .. temp

i = i+1

endreturn passworddecode

endfunction recodeusernamepassword(username,password)

local file = io.open("pwd.txt", "a")

io.output(file)

io.write(username .. " " .. password .. "\n" )

io.close(file)

end-- register this dissector

local udp_encap_table = dissectortable.get("udp.port")

udp_encap_table:add(1234,gold)

udp_encap_table:add(1235,gold)

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

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

wireshark外掛程式開發小結

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

WireShark幀格式解析

先看一下我使用udp廣播時,wireshark捕獲的資料截圖 從圖上能看出來我udp傳送的資料是 liuyu love chenlan 以下幀格式解析來自網際網路 幀號 時間 源位址 目的位址 高層協議 包內資訊概況 no.time source destination protocol info ...