Linux網絡抓包

1. tshark

1.1 安裝

Centos

yum install -y wireshark

Ubuntu

apt-get install -y tshark

1.2 使用

1.2.1 抓包參數說明

常用 -i-f參數

  • -i設置抓包的網絡接口,不設置則默認爲第一個非自環接口。
  • -f 設定抓包過濾表達式(capture filter expression)。抓包過濾表達式的寫法雷同於tcpdump,可參考tcpdump man page的有關部分。
  • -D 列出當前存在的網絡接口。在不瞭解OS所控制的網絡設備時,一般先用“tshark -D”查看網絡接口的編號以供-i參數使用。
  • -s 設置每個抓包的大小,默認爲65535,多於這個大小的數據將不會被程序記入內存、寫入文件。(這個參數相當於tcpdump的-s,tcpdump默認抓包的大小僅爲68)
  • -p 設置網絡接口以非混合模式工作,即只關心和本機有關的流量。
  • -B 設置內核緩衝區大小,僅對windows有效。
  • -y 設置抓包的數據鏈路層協議,不設置則默認爲-L找到的第一個協議,局域網一般是EN10MB等。
  • -L 列出本機支持的數據鏈路層協議,供-y參數使用。

-f參數詳解

  • 設置監聽的協議類型: -f udp/tcp/http 必須爲小寫
  • 設置源ip:-f "src host x.x.x.x"
  • 設置源端口:-f "src port 80"
  • 設置源ip和源端口: -f "src host x.x.x.x and src port xx"
  • 設置目的ip: -f "dst host x.x.x.x"
  • 設置目的端口: -f "dst port xx"
  • 設置目的ip和端口: -f "dsthost x.x.x.x and port xx"

1.2.2 輸出參數說明

常用 -T-l 參數

  • -w 設置raw數據的輸出文件
  • -F 設置輸出raw數據的格式,默認爲libpcap。
  • -V 設置將解碼結果的細節輸出,否則解碼結果僅顯示一個packet一行的summary。
  • -x 設置在解碼輸出結果中,每個packet後面以HEX dump的方式顯示具體數據。
  • -T 設置解碼結果輸出的格式,包括text,ps,psml和pdml,默認爲text。
  • -t設置解碼結果的時間格式。“ad”表示帶日期的絕對時間,“a”表示不帶日期的絕對時間,“r”表示從第一個包到現在的相對時間,“d”表示兩個相鄰包之間的增量時間
  • -S 在向raw文件輸出的同時,將解碼結果打印到控制檯。
  • -l 在處理每個包時即時刷新輸出。
  • -X 擴展項。
  • -q 設置安靜的stdout輸出(例如做統計時)
  • -z 設置統計參數。

1.3 示例

  1. 實時打印當前http請求的url
tshark -i eth0 -n -f "tcp dst port 80" -T fields -e http.host -e http.request.uri -l
  1. 實時打印當前mysql查詢語句
 tshark -i eth0 -n -f "tcp dst port 3306" -T fields -e mysql.query

2. tcpdump

這也是一個抓包工具,不過沒tshark好用,簡單介紹一下吧。。

2.1 安裝

Centos

yum install -y tcpdump

Ubuntu

apt-get install -y tcpdump

2.2 使用

  1. 截獲從網口eth0出去或接收到的包
tcpdum -i eth0
  1. 截獲所有與主機 xx.xx.xx.xx 相關的包
tcpdump host xx.xx.xx.xx
  1. 截獲tpc協議的80端口的包
tcpdump tcp port 80
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章