天天看點

從Wireshark監聽的資料中提取需要的資料

最近,需要将wireshark監聽的資料進行提取,分兩步:首先,應該得出wireshark的資料包吧,在圖形化界面中可以非常直覺的将監聽資料進行存儲,但是這樣需要手動操作非常麻煩,而且容易出錯(随着處理資料包的數量增加,圖形化可能吃不消,以前就遇見過),在linux下,采用了tshark指令,tshark就是wireshark圖形界面指令行化,指令如下:

對上面的指令進行解釋:"udp port 1243",雙引号内的東西就是對需要監聽的内容進行一個篩選,也就是端口号為1243的udp資料包,-i後面就是需要監聽的接口,接口後面的(-w)和(>)兩個選項,表示需要存儲檔案的格式,-w存儲的可能是二進制檔案,例如,使用-w的話,那麼這行指令執行以後capture.cap就是二進制的檔案,那麼使用>以後,則儲存的文本檔案,當然,現在需要的是純文字檔案,最後則是檔案需要儲存的路徑以及名稱。

第一步完成以後,則需要從資料中提取出來需要的資料,比如時間,源、目的位址等有用資訊,我們采用如下指令:

此時cat的任務就是将需要被提取的檔案展現出來,通過管道,将輸出内容作為awk指令的輸入,awk是一個非常好的資料處理工具。具體見鳥哥的私房菜基礎篇363頁!,同樣的輸出為純文字格式檔案capture.txt,完成了上述的工作,我想放入同一個腳本就能非常輕松的調用而且不用出錯,将上述兩行指令輸入一個腳本中,但是我發現無法出來capture.txt檔案,後來發現自己SB了,腳本是一行一行執行,第一行是一直執行的,根本執行不到第二行來,後來在第一行後面加上&,讓其進行背景運作,capture.txt,倒是可以出來但是内容為空白,因為該檔案僅僅在上面檔案建立了就開始抓取自己的内容,當然什麼也沒有。

後來我想,我要的隻是最後經過調整的資料,不需要中間資料啊,為什麼不直接一條指令進行提取不就完了,于是将兩個指令融合如下:

繼續閱讀