tshark是wireshark的命令行实现,可以在没有UI的情况下使用wireshark的全部功能。
参考文档【 https://www.wireshark.org/docs/man-pages/tshark.html 】
由于没有UI交互,那么我们应该如何使用tshark的lua脚本功能呢,这里笔记一种简单的实例。
该实例基于【使用LUA脚本来扩展wireshark的功能 】
新建一个hello_tshark.lua文件,内容如下:
input_ips = "255.255.255.255"
-- 判断指定元素value是否在数组tab中
local function is_include(value, tab)
for k,v in ipairs(tab) do
if v == value then
return true
end
end
return false
end
-- 将一个字符串分割为一个数组
local function split_string(input, delimiter)
input = tostring(input)
delimiter = tostring(delimiter)
if(delimiter=='') then return false end
local pos,arr = 0, {}
for st,sp in function() return string.find(input, delimiter, pos, true) end do
table.insert(arr, string.sub(input, pos, st - 1))
pos = sp + 1
end
table.insert(arr, string.sub(input, pos))
return arr
end
-- 支持多个IP地址输入,每个IP间使用','进行分割
-- 输入的IP数组
local input_ip_table = nil
input_ip_table = split_string(input_ips, ",")
local tap = Listener.new()
function tap.packet(pinfo,tvb)
if(not ( is_include(tostring(pinfo.src), input_ip_table) or is_include(tostring(pinfo.dst), input_ip_table) ) ) then
return
end
content = string.format("idx:%d\t %s:%d ==>> %s:%d",pinfo.number, pinfo.src, pinfo.src_port, pinfo.dst, pinfo.dst_port)
print(content)
end
function tap.draw()
end
function tap.reset()
end
以读取文件方式执行tshark,命令如下:
$ tshark -X lua_script:hello_tshark.lua -q -l -r 1.pcapng idx:9 0.0.0.0:68 ==>> 255.255.255.255:67 idx:10 0.0.0.0:68 ==>> 255.255.255.255:67 idx:12 0.0.0.0:68 ==>> 255.255.255.255:67 idx:13 0.0.0.0:68 ==>> 255.255.255.255:67 idx:19 10.42.0.225:5683 ==>> 255.255.255.255:5683 idx:20 10.42.0.225:5683 ==>> 255.255.255.255:5683 。。。。。。 。。。。。。
发表评论