平時需要對資料報進行分析和統計,儘管使用python scapy庫來開發很方便,但若是熟悉tshark(wireshark的命令列),tcpdump 等工具,含editcap,mergecap 等,寫個簡單的shell分析指令碼,那會更加方便!tcpdump
tshark
# 過濾出 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) # 獲取檔案中資料報的個數
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
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
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
過濾速度最快,而且是實時輸出!
tcpdump -z root -r src.pcap "tcp port 22" -w dst.pcap
tcpdump -z root -r src.pcap "tcp port 22 and (tcp[tcpflags] & tcp-fin != 0)" -w dst.pcap
## 示例: 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
一些簡單的指令碼
很棒的參考
資料報過濾
一 osi網路模型 最低層為物理層,是第一層,最高層是應用層是第七層。如三層交換機指的就是第三層,也就是網路層。物理層被傳輸介質佔據,例如電纜規格和相關的訊號協議,換言之,它們傳輸位元。資料鏈路層在給定的物理介質上傳輸資料,並負責傳輸過程中的錯誤檢測和恢復。物理硬體位址的定義也在這一層,例如乙太網卡...
WinPcap程式設計 6 過濾 分析資料報
winpcap和libpcap的最強大的特性之一,是擁有過濾資料報的引擎。它提供了有效的方法去獲取網路中的某些資料報,這也是winpcap捕獲機制中的乙個組成部分。用來過濾資料報的函式是 pcap compile 和 pcap setfilter pcap compile 它將乙個高層的布林過濾表示...
IP資料報的分析例項
我們知道,使用 ethereal軟體可以方便地幫助我們進行抓取網路中的資料報,具體怎樣利用它分析乙個特定的包呢?我在網上找了半天,發現相關的分析ip包的文章很少,在此,我將自己在學習使用該軟體抓取ip包並分析的過程描述如下,供初學者入門之用,有分析不對的地方歡迎指正。最後附上簡單介紹ethereal...