昨天初步介紹了tshark這個指令,今天就來介紹幾個如何使用這個指令的實例。
順帶一題,因為我偷懶不想輸入檔案路徑,所以直接把讀取的檔案和匯出的檔案路徑都放在Wireshark資料夾下,所以cmd就要記得用系統管理者模式開啟,不然程式的權限會不夠喔。
指令跑完後我們看一下output出來的檔案,也就是我們要的結果。
那我們來分解一下剛剛下的指令:
tshark 執行tshark功能
-r evidence04.pcap 開啟匯出的檔案路徑及檔名
-T fields 輸出格式,選fields的話就是欄位方式來匯出,也可以選擇json等格式,須配合後面的-e 及 -E參數使用
-e frame.time_relative 取出相對封包時間的欄位資料
-e ip.src 取出來源IP的欄位資料
-e ip.dst 取出目標IP的欄位資料
-e ip.proto 取出Protocol的欄位資料
-e tcp.srcport 取出來源Port的欄位資料
-e tcp.dstport 取出目標Port的欄位資料
-e frame.len 取出封包大小的欄位資料
-E header=n 匯出的檔案需不需要標註欄位名稱
-E separator=, 匯出的檔案要以什麼符號作為分隔符號,/t是tab,/s是一格空白,或是可以直接打你要做為分隔的符號
-E quote=n 匯出的檔案每個資料需要有引號包住資料嗎,d是雙引號,s是單引號,n是不用引號,預設是n
-E occurrence=f 選擇欄位如果有多值的話要以哪個為準,f是第一個值,l是最後一個值,a則是所有值都列出,預設值是a>
output.csv 匯出的檔案路徑及檔名
補充一下,關於-e的參數,如果想看所有欄位的列表的話可以到官網查詢(網址:https://www.wireshark.org/docs/dfref/ )。
確認要收流量的網路介面後,我們就可以下「tshark -i 3 -w test.pcap」這個指令,而tshark就會知道要從第3張網路介面收封包,並且把檔案存成test.pcap。開始執行後,cmd會顯示你收的是哪個網路介面的封包,以及目前收到第幾個封包,而當你想要結束時,按下Ctrl+v就可以跳出。
從上面的圖可以看到,剛剛的測試中總共收了438個封包,而實際打開test.pcap後如下圖,也可以發現的確是收到了438個封包。
如果不想把收的封包存成pcap,而是想存成文字檔的話,可以把剛剛的-w指令改成>,如「tshark -i 3 >test.txt」,這樣就會存成單純的文字格式,用wireshark就無法開啟這個檔案,只能用文字編輯工具開啟。
從上圖可以看到我們用這個方式收了64個封包,而實際用文字編輯器打開檔案後,發現的確也是收了64個封包,如下圖。請注意上圖雖然我把檔案命名為test.pcap,但他內容的格式並不是真的pcap,所以是無法用Wireshark打開的喔。
如果想在收封包的時候一併下過濾條件也是可以的,只要加上-f的指令就可以,例如「tshark -i 3 -w test.pcap –f "port 443"」,就可以只收到流經port 443的封包。
此外,如果想一邊收封包,一邊在CMD介面看到收到封包的資料,可以多下一個-V的指令,例如「tshark -i 3 -w test.pcap –V」,所收到封包的內容除了會存成TEST.PCAP外,也會顯示在畫面上,不過因為封包數量一多,畫面也會跑得很快,可能也很難看清楚內容就是。
tshark還有很多好用的功能跟參數,但因為族繁不及備載,如果還需要更多功能的話可以參考參數的說明來下指令,或是也歡迎留言一起討論要怎樣下指令比較好喔~