tshark抓包小結

tshark命令詳解
網絡抓包,分析工具。wireshark 的 Linux命令行工具。

tshark option

-i 設置抓包的網絡接口,不設置則默認爲第一個非自環接口。
-D 列出當前存在的網絡接口。在不瞭解OS所控制的網絡設備時,一般先用“tshark -D”查看網絡接口的編號以供-i參數使用。
-f 設定抓包過濾表達式(capture filter expression)。抓包過濾表達式的寫法雷同於tcpdump,可參考tcpdump man page的有關部分。
-s 設置每個抓包的大小,默認爲65535,多於這個大小的數據將不會被程序記入內存、寫入文件。(這個參數相當於tcpdump的-s,tcpdump默認抓包的大小僅爲68)
-c 抓指定個包後終止
-a 終止條件 duration:NUM - stop after NUM seconds
          filesize:NUM - stop this file after NUM KB
          files:NUM - stop after NUM files
-w 設置raw數據的輸出文件。這個參數不設置,tshark將會把解碼結果輸出到stdout。“-w-”表示把raw輸出到stdout。如果要把解碼結果輸出到文件,使用重定向“>”而不要-w參數。 
-r 設置tshark分析的輸入文件。tshark既可以抓取分析即時的網絡流量,又可以分析dump在文件中的數據。-r不能是命名管道和標準輸入。
-R 設置讀取過濾表達式(read filter expression)。不符合此表達式的流量同樣不會被寫入文件。注意,讀取(顯示)過濾表達式的語法和底層相關的抓包過濾表達式語法不相同,它的語法表達要豐富得多,請參考http://www.ethereal.com/docs/dfref/和http://www.ethereal.com/docs/man-pages/ethereal-filter.4.html。類似於抓包過濾表達式,在命令行使用時最好將它們quote起來。-Y (顯示)過濾。
-T 設置解碼結果輸出的格式,包括fileds,text,ps,psml和pdml,默認爲text。
-E 配合-T使用,制定輸出格式,分隔符等。
-t 設置解碼結果的時間格式。“ad”表示帶日期的絕對時間,“a”表示不帶日期的絕對時間,“r”表示從第一個包到現在的相對時間,“d”表示兩個相鄰包之間的增量時間(delta)。
-q 設置安靜的stdout輸出(例如做統計時)
-z 設置統計參數。
-p 設置網絡接口以非混合模式工作,即只關心和本機有關的流量。
-B 設置內核緩衝區大小,僅對windows有效。
-y 設置抓包的數據鏈路層協議,不設置則默認爲-L找到的第一個協議,局域網一般是EN10MB等。
-L 列出本機支持的數據鏈路層協議,供-y參數使用。
-n 禁止所有地址名字解析(默認爲允許所有)。
-N 啓用某一層的地址名字解析。“m”代表MAC層,“n”代表網絡層,“t”代表傳輸層,“C”代表當前異步DNS查找。如果-n和-N參數同時存在,-n將被忽略。如果-n和-N參數都不寫,則默認打開所有地址名字解析。
-d 將指定的數據按有關協議解包輸出。如要將tcp 8888端口的流量按http解包,應該寫爲“-d tcp.port==8888,http”。注意解包協議之間不能留空格。
-F 設置輸出raw數據的格式,默認爲libpcap。“tshark -F”會列出所有支持的raw格式。
-V 設置將解碼結果的細節輸出,否則解碼結果僅顯示一個packet一行的summary。
-x 設置在解碼輸出結果中,每個packet後面以HEX dump的方式顯示具體數據。
-S 在向raw文件輸出的同時,將解碼結果打印到控制檯。
-l 在處理每個包時即時刷新輸出。
-X 擴展項。
-h 顯示命令行幫助。
-v 顯示tshark的版本信息。
-o 重載選項。

ip 報文

在這裏插入圖片描述
在這裏插入圖片描述

more example

port 53:抓取發到/來自端口53的UDP/TCP數據流(典型是DNS數據流)
not port 53:抓取除了發到/來自端口53以外的UDP/TCP數據流
port 80:抓取發到/來自端口80的UDP/TCP數據流(典型是HTTP數據流)
udp port 67:抓取發到/來自端口67的UDP數據流(典型是DHCP據流)
tcp port 21:抓取發到/來自端口21的TCP數據流(典型是FTP命令通道)
portrange 1-80:抓取發到/來自端口1-80的所有UDP/TCP數據流
tcp portrange 1-80:抓取發到/來自端口1-80的所有TCP數據流
ip broadcast:抓取廣播報文
ip multicast:抓取多播報文
dst host ff02::1:抓取到IPv6多播地址所有主機的數據流
dst host ff02::2:抓取到IPv6多播地址所有路由器的數據流
net 10.3.0.0/16:抓取網絡10.3.0.0上發到/來自所有主機的數據流(16表示長度)
net 10.3.0.0 mask 255.255.0.0:與之前的過濾結果相同
ip[2:2]:ip報文大小
ip[8]
:TTL(Time to Live)值
ip[9]==:協議值
src host 10.3.1.1:抓取來自10.3.1.1的數據流
dst host 10.3.1.1:抓取發到10.3.1.1的數據流
host 10.3.1.1:抓取發到/來自10.3.1.1的數據流
ether dst 02:0A:42:23:41:AC:抓取發到02:0A:42:23:41:AC的數據流
not ether host 00:08:15:00:08:15:抓取除了發到/來自00:08:15:00:08:15以外的所有數據流
ether broadcast或ether dst ff:ff:ff:ff:ff:ff:抓取廣播報文
ether multicast:多播報文

tshark statistic

tshark -i enp0s31f6 -qz http,stat, #統計http信息
tshark -i enp0s31f6 -t ad -z io,stat,1,ip.addr1.2.3.4 #生成一個與 host 1.2.3.4.一秒內的統計信息
tshark -i enp0s31f6 -q -n -t ad -z io,stat,10,”COUNT(tcp.flags)tcp.flags
0x02”,”COUNT(tcp.flags)tcp.flags==0x12” #10秒爲週期過濾TCP三次握手的數據包信息
tshark -i enp0s31f6 -qz bootp,stat #DHCP 統計信息
tshark -i enp0s31f6 -qz endpoints,[ip,tcp…] 該協議的接收,傳輸信息統計
tshark -i enp0s31f6 -n -t ad -z follow,tcp,ascii,10.249.9.18:22,10.249.7.37:22 # 兩個節點間的具體 content
tshark -z # 提示 統計的具體用法 ,或 man tshark

Usages Example

  1. 實時打印當前http請求的url
    tshark -s 512 -i eth0 -n -f ‘tcp dst port 80’ -Y ‘http.host and http.request.uri’ -T fields -E separator=’#’ -E quote=d -e http.host -e http.request.uri -l | tr -d ‘\t’
  2. 實時打印當前mysql查詢語句 和 返回數據
    tshark -i eth0 -n -f ‘tcp dst port 3306 or tcp src port 23456’ -Y ‘mysql.query’ -T fields -e mysql.query -e mysql.row.text
  3. 實時打印當前memcached信息
    sudo tshark -i em1 -n -Y ‘memcache’
  4. 實時打印當前RabbitMQ信息
    sudo tshark -i em1 -n -Y ‘amqp’
  5. 實時打印當前MongoDB信息
    tshark -i em1 -n -f ‘port mongoDBPort’ -Y ‘mongo’
  6. 實時打印所有信息
    sudo tshark -i enp0s31f6 -f ‘dst host 10.249.7.99’ -s 0 -l -w - |strings

參考:https://blog.csdn.net/chen8238065/article/details/53714514

發佈了628 篇原創文章 · 獲贊 2834 · 訪問量 405萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章