1樓:
我理解是快與詳細的區別。簡單來說,簡單排障以及要在指令碼中呼叫(比如說錄製一段資料)用tcpdump較好,要深入的協議分析排障用tshark
2樓:地球的外星人君
平時需要對資料報進行分析和統計,儘管使用python scapy庫來開發很方便,但若是熟悉tshark(wireshark的命令列),tcpdump 等工具,含editcap,mergecap 等,寫個簡單的shell分析指令碼,那會更加方便!tcpdump
man tcpdump
tshark
tshark 是一次性將整個資料報讀入記憶體的,分析好後再統一輸出,所以針對超大檔案的分析,需要注意!但是和wireshark相比,tshark能分析的檔案已經很大了,具體和系統配置有關!
同tshark一起的還有其他工具,是一套的,如 editcap, mergecap, capinfos
man tshark, man wireshark-filter, man editcap, man mergecap
乙個很棒的網頁,自己一直收藏著
This is a place for scripts and tools related to Wireshark / TShark that users may like to share, and for links to related NetworkTroubleshooting tools.
過濾出特定時間段的資料報
# 過濾出 src.pcap 中 2017-06-17 10:40:
00 到 2017-06-17 10:50:00 之間的資料報,其中 -F 引數表示檔案格式,即 the file format of the output capture file!
留意 pcapng 格式的資料報
editcap -A "2017-06-17 10:40:00" -B "2017-06-17 10:
50:00" src.pcap -F pcap dst.
pcap
統計重傳資料報的個數
# -n 不進行網域名稱解析, 其他引數的意思 man tshark
tshark -n -r src.pcap -Y "tcp.analysis.retransmission" -T fields -e tcp.stream | wc -l
echo -e "The number of retransmission packets"
# 通過 -z 引數
tshark -z io,stat,0,"tcp.analysis.retransmission" -n -q -r src.pcap
檢視抓包檔案的資訊
# -c 顯示檔案中資料報的個數
capinfos -c -M src.pcap
content=$(capinfos -c -M src.pcap)
total=$(echo $content | grep packet | cut -d : -f 3) # 獲取檔案中資料報的個數
以5秒為單位,統計不同方向上的資料報個數
tshark -z io,stat,5,"ip.addr==180.153.
15.118","ip.src==180.
153.15.118","ip.
dst==180.153.15.
118" -n -q -r 1030_1038_8300.pcap > five_second.csv
以5秒為單位,不同方向上的重傳資料報的個數, 含位元組數 (注意:,後不能有空格)
tshark -z io,stat,5,"ip.addr==180.153.15.118 && tcp.analysis.retransmission",\
"ip.src==180.153.15.118 && tcp.analysis.retransmission",\
"ip.dst==180.153.15.118 && tcp.analysis.retransmission" \
-n -q -r src.pcap > dst.csv
以5秒為單位,統計不同方向上的含SYN, FIN, RST等標記的資料報個數 (注意:,後不能有空格)
tshark -z io,stat,5,\
"FRAMES()ip.src==$ && tcp.flags.syn==1 && !(tcp.flags.ack==1)",\
"FRAMES()ip.dst==$ && tcp.flags.syn==1 && !(tcp.flags.ack==1)",\
"FRAMES()ip.src==$ && tcp.flags.fin==1",\
"FRAMES()ip.dst==$ && tcp.flags.fin==1",\
"FRAMES()ip.src==$ && tcp.flags.reset==1",\
"FRAMES()ip.dst==$ && tcp.flags.reset==1",\
"FRAMES()ip.src==$ && tcp.flags.
syn==1 && !(tcp.flags.
ack==1) && (!tcp.analysis.
retransmission)",\
"FRAMES()ip.dst==$ && tcp.flags.
syn==1 && !(tcp.flags.
ack==1) && (!tcp.analysis.
retransmission)",\
"FRAMES()ip.src==$ && tcp.flags.fin==1 && (!tcp.analysis.retransmission)",\
"FRAMES()ip.dst==$ && tcp.flags.fin==1 && (!tcp.analysis.retransmission)",\
"FRAMES()ip.src==$ && tcp.flags.reset==1 && (!tcp.analysis.retransmission)",\
"FRAMES()ip.dst==$ && tcp.flags.reset==1 && (!tcp.analysis.retransmission)" \
-n -q -r src.pcap > dst.csv
過濾速度最快,而且是實時輸出!
最簡單的--過濾出 src.pcap 中埠號為 22 的資料報
tcpdump -Z root -r src.pcap "tcp port 22" -w dst.pcap
過濾出埠為22, 且含有 FIN 標記的資料報
tcpdump -Z root -r src.pcap "tcp port 22 and (tcp[tcpflags] & tcp-fin != 0)" -w dst.pcap
根據應用層資料進行過濾,如HTTP GET的請求路徑, 注意tcp[xx:offset]中的偏移最多為4
## 示例: GET /bidimg/hello
# tcp[24:4]==0x2f626964 匹配 /bid; tcp[28:4]==696d67ef 匹配 img/ 字段; 至於GET欄位的匹配,可以自己去嘗試!
tcpdump -Z root -r src.pcap "((tcp[24:4]==0x2f626964 and tcp[28:
4]==696d67ef) and dst port 80)" -w dst.pcap
【超全整理】《Linux雲計算從入門到精通》linux學習入門教程系列實戰筆記全放送
為什麼使用tcpdump觀察三次握手的過程,最後一次握手後,ack變為1而不是y 1?
車小胖 網路協議解析軟體,有乙個宗旨,就是將枯燥乏味的0 1二進位製流解析成使用者友好的顯示,讓協議分析盡量簡單 直白。TCPDUMP第三個ACK顯示的偏移值 Offeset 即相對於初始序列號 原點 的偏移值,但需要明確的是,TCPDUMP捕獲的原始報文裡是絕對值 應該是長長的一串數字 只是顯示成...
Python 的 map 和 reduce 和 Hadoop 的 MapReduce 有什麼關係?
FRANK MapReduce是乙個計算模型,它的思想是從函式式程式設計裡借鑑的。MapRuduce就是把對於資料的操作轉換為對映和歸約。map和reduce兩個函式是用來操作集合的函式,因為Python寫起來非常彆扭,這裡用F 示範,map相當於為集合的每乙個元素應用函式f,map的定義是 let...
Vue和React和Angular的缺點是什麼?
張國鈺 Angular 太龐大了,三者中,整合度最高,引入了對框架來說很好的但是對前端不太友好的概念,容易勸退 React 太散了,整合度三者最低,如果從0搭建專案,得東拼西湊,不過現在好很多了,感謝社群 Vue挺好的,恩,是挺好的 AaronJin Vue用的不多,要說缺點的話,我覺得最大的問題是...