從Wireshark監聽的數據中提取須要的數據

最近,須要將wireshark監聽的數據進行提取,分兩步:首先,應該得出wireshark的數據包吧,在圖形化界面中能夠很是直觀的將監聽數據進行存儲,可是這樣須要手動操做很是麻煩,並且容易出錯(隨着處理數據包的數量增長,圖形化可能吃不消,之前就碰見過),在linux下,採用了tshark命令,tshark就是wireshark圖形界面命令行化,命令以下:linux

sudo tshark -f "udp port 1243"  -i eth0 (-w)> /tmp/capture.cap

對上面的命令進行解釋:"udp port 1243",雙引號內的東西就是對須要監聽的內容進行一個篩選,也就是端口號爲1243的udp數據包,-i後面就是須要監聽的接口,接口後面的(-w)和(>)兩個選項,表示須要存儲文件的格式,-w存儲的多是二進制文件,例如,使用-w的話,那麼這行命令執行之後capture.cap就是二進制的文件,那麼使用>之後,則保存的文本文件,固然,如今須要的是純文本文件,最後則是文件須要保存的路徑以及名稱。工具

第一步完成之後,則須要從數據中提取出來須要的數據,好比時間,源、目的地址等有用信息,咱們採用以下命令:spa

sudo cat /tmp/capture.cap | awk'{print $1"\t" $2"\t" $3}' > /tmp/capture.txt 

此時cat的任務就是將須要被提取的文件展示出來,經過管道,將輸出內容做爲awk命令的輸入,awk是一個很是好的數據處理工具。具體見鳥哥的私房菜基礎篇363頁!,一樣的輸出爲純文本格式文件capture.txt,完成了上述的工做,我想放入同一個腳本就能很是輕鬆的調用並且不用出錯,將上述兩行命令輸入一個腳本中,可是我發現沒法出來capture.txt文件,後來發現本身SB了,腳本是一行一行執行,第一行是一直執行的,根本執行不到第二行來,後來在第一行後面加上&,讓其進行後臺運行,capture.txt,卻是能夠出來可是內容爲空白,由於該文件僅僅在上面文件建立了就開始抓取本身的內容,固然什麼也沒有。命令行

後來我想,我要的只是最後通過調整的數據,不須要中間數據啊,爲何不直接一條命令進行提取不就完了,因而將兩個命令融合以下:code

sudo tshark -f "udp port 1243" -i eth0 |awk '{print $1 "\t" $2 "\t" $3}' > /tmp/capture.txt 
相關文章
相關標籤/搜索