作這個程序的意圖是wireshark插件編寫複雜(雖然也支持lua),而輕量級的工具如smartsniff,minisniff不支持插件化數據分析,
各類工具用下來或多或少不順手。之前寫的外掛也都是手工+寫代碼的方式分析數據,過程很是痛苦。
於是誕生了這個抓包後可lua腳本分析的工具。但願對作網絡數據分析的同窗有幫助。git
說明:
1.閉源免費。使用raw socket,lua 5.3.1,最大抓取60萬數據包,和wireshark/tcpdump文件格式兼容
2.在winxp-32和win10-64測試正常
3.3rd的trace工具是mbcs作的,win10支持的很差,之後有時間移植unicode再支持
4.示例中的監測qq號測試正常
5.下載地址:http://pan.baidu.com/s/1nt1n2jR
6.技術支持qq羣466507719,開發版本即時更新到羣共享。歡迎測試及功能建議github
程序須要調用的lua接口,參考plugin/example1.lua
(1)init: 插件初始化
(2)handle_data: 當收到一個數據包時調用這個函數,函數return "delete"也能夠起到過濾做用
(3)handle_click:當單擊列表數據時調用這個函數
(4)handle_double: 當雙擊列表數據時調用這個函數web
lua中增長的能夠回調的程序接口:
plugin_output_clear: 清空plugin output窗口
plugin_output: 輸出到plugin output窗口
plugin_summary: 輸出到listview最右邊的Plugin Summary項
trace: 輸出到三方工具,暫未實現
trace_raw: 輸出到三方工具,暫未實現bash
圖多殺貓
(1)程序大小隻有465KB,單獨一個可執行文件PowerSniff.exe也能夠運行,收集的庫可放到lib文件夾,插件自動從plugin文件夾掃描網絡
(2)功能界面socket
(3)插件編輯,編譯,執行界面tcp
(4)演示監測qq登陸號碼
啓動程序,菜單選擇「Option -> Plugin -> qq number analyse.lua」,start抓包,當qq登陸後Plugin Summary會顯示qq號碼函數
分析qq號碼的腳本:工具
-- qq號碼登陸監視腳本(不支持手機號碼登陸,不支持webqq,只在pc上用qq2015測試經過) -- 2015.9.14 require "base64" require "tcp_ip" function init() trace("plugin init: ".._VERSION.."\n") trace("package path: "..package.path.."\n") trace("package path: "..package.cpath.."\n") --for k,v in pairs(_G) do -- trace(string.format("%s,%s\n", k, v)) --end end -- protocol: 字符串如tcp,udp,icmp -- data: 二進制數據 -- len_total: 總共數據長度 -- len_data: 有效數據長度(去除各類頭以後的數據) function handle_data(protocol,data,len_total,len_data) if 54 == len_total then return "delete" -- remove handshake end src_port = tcp_ip_get_src_port(data) dst_port = tcp_ip_get_dst_port(data) -- if 8000 != src_port && 8000 != dst_port then if (8000 ~= dst_port) or (len_data < 100) then return "delete" end if 2 ~= data:byte(43) then -- 0x2是qq udp協議magic number return "delete" end if 8 ~= data:byte(46) then -- 8和37是 0x8和0x25是協議類型,表示登陸 return "delete" end if 37 ~= data:byte(47) then return "delete" end -- 50, 51, 52, 53字節是qq號(lua index從1開始而不是0) qq_number = data:byte(50) * 256 * 256 * 256 + data:byte(51) * 256 * 256 + data:byte(52) * 256 + data:byte(53) plugin_summary("qq_number is: " .. qq_number) end function handle_click(protocol,data,len_total,len_data) end function handle_double(protocol,data,len_total,len_data) handle_data(protocol,data,len_total,len_data) end
github地址:https://github.com/wjx0912/PowerSniff測試
MIT license