1、ngrep
ngrep工具是grep命令的網絡版,ngrep用於抓包,並可以通過正則表達式,過濾、獲取指定樣式的數據包。能識別TCP、UDP和ICMP協議,理解bpf的過濾機制。
可以用來分析、定位服務中的問題。
因為如果包含多個服務的大型服務出現問題,需要逐步分析定位問題到具體的服務。使用ngrep抓包可以確定數據包是否已經到了某個服務模塊,從而定位是哪個部分的問題。
1.1 安裝
- Mac:
brew install ngrep
- 其它平台
1.2 語法
ngrep <-LhNXViwqpevxlDtTRM> <-IO pcap_dump> <-n num> <-d dev> <-A num> <-s snaplen> <-S limitlen> <-w normal|byline|single|none> <-c cols> <-P char> <-F file>
1.3 選項
- -q :不顯示包的詳情,都以‘#’ 號代替現實
- -e :顯示空數據包
- -i :忽略大小寫
- -v :反轉匹配
- -R :don't do privilege revocation logic
- -x :以16進制格式顯示
- -X :以16進制格式匹配
- -w :整字匹配
- -p :不使用混雜模式
- -l :make stdout line buffered
- -D :replay pcap_dumps with their recorded time intervals
- -t :在每個匹配的包之前顯示時間戳
- -T :顯示上一個匹配的數據包之間的時間間隔
- -M :僅進行單行匹配
- -I :從文件中讀取數據進行匹配
- -O :將匹配的數據保存到文件
- -n :僅捕獲指定數目的數據包進行查看
- -A :匹配到數據包后dump隨后的指定數目的數據包
- -s :set the bpf caplen
- -S :set the limitlen on matched packets
- -W :設置顯示格式byline將解析包中的換行符
- -c :強制顯示列的寬度
- -P :set the non-printable display char to what is specified
- -F :使用文件中定義的bpf(Berkeley Packet Filter)
- -N :顯示由IANA定義的子協議號
- -d :使用哪個網卡,可以用-L選項查詢
- -L :查詢網卡接口
2、使用實例
注意:需要以超級管理員身份執行該命令
-
ngrep host 192.168.1.8 udp
:抓udp包 -
ngrep -W byline -qd any '.event' udp port 1514
:抓取1514端口udp包,過濾正則匹配包含‘event’字段的包 -
ngrep -W byline 'GET /' 'tcp and dst port 80' -d eth1 | awk -v RS="#+" -v FS="\n" 'length() > 1000'
:查詢大於1k的請求頭 -
ngrep -d en0 -W byline host 192.168.1.9
:抓取本地 en0 和 61.135.169.125(百度ip)的通信信息,並以行打印出來