網路包分析利器tcpdump

2021-09-01 23:06:29 字數 4215 閱讀 8410

tcpdump [ -addefllnnopqrstuuvxx ] [ -c count ]

[ -c file_size ] [ -f file ]

[ -i inte***ce ] [ -m module ] [ -m secret ]

[ -r file ] [ -s snaplen ] [ -t type ] [ -w file ]

[ -w filecount ]

[ -e spi@ipaddr algo:secret,...  ]

[ -y datalinktype ] [ -z user ]

[ expression ]

-w file,將分析寫進檔案

-r file,從檔案中讀出資料進行分析

expression,只有滿足這個表示式的網路包才會被tcpdump處理

-f file,從file讀入expression,並覆蓋命令列中的值

-c count,在不被中斷的情況下,tcpdump將抓到count個網路包才會停

-a,以ascii格式列印網路包

-d,檢視有什麼網路介面可以抓取

$ sudo /usr/sbin/tcpdump -d

1.eth0

2.any (pseudo-device that captures on all inte***ces)

3.lo

-i inte***ce,只處理指定介面的包,any表示所有,預設選-d中的第乙個

-e,列印連線層頭

-n,不把ip轉成網域名稱

-nn,不把埠轉成名字,例如把80埠轉成http

-s,列印序列號的絕對值,而不是相對值

-s snaplen,取包的前snaplen位元組,預設值夠ip,  icmp, tcp and udp使用,

這個設定太長,將加大處理時間,並可能提高丟包率,設定0,表示

抓取整個包

-v,-vv,-vvv,完整列印協議頭,越多v列印的資訊越多

proto:  ether, fddi, tr, wlan, ip, ip6, arp, rarp,  decnet, tcp, udp.

dir:    src, dst, src or dst, src and dst

type:   host, net, port, portrange

連線符:and(&&), or(||), not(!),compare

expression = proto dir type 引數 + [連線符 proto dir type 引數]

兩個例子:

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

tcpdump 'gateway snup and ip[2:2] > 576'

tcpdump  -l   > dat  &  tail  -f  dat

將分析持續寫入檔案dat,並用tail檢視

$ sudo /usr/sbin/tcpdump -i any -c 100 'tcp port 60530' -nn

tcpdump: warning: promiscuous mode not supported on the "any" device

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on any, link-type linux_sll (linux cooked), capture size 96 bytes

16:19:00.561084 ip 127.0.0.1.49488 > 127.0.0.1.60530: s 89286447:89286447(0) win 32792

16:19:00.561103 ip 127.0.0.1.60530 > 127.0.0.1.49488: s 335804188:335804188(0) ack 89286448 win 32768

16:19:00.561114 ip 127.0.0.1.49488 > 127.0.0.1.60530: . ack 1 win 257

三次握手結束

16:19:00.561312 ip 127.0.0.1.49488 > 127.0.0.1.60530: p 1:4025(4024) ack 1 win 257

16:19:00.561320 ip 127.0.0.1.60530 > 127.0.0.1.49488: . ack 4025 win 386

16:19:04.691569 ip 127.0.0.1.60530 > 127.0.0.1.49488: p 1:6(5) ack 4025 win 386

四次揮手開始,但是這裡意外關閉發出乙個reset包,

所以只有三次揮手,不用進入time_wait狀態,這也是避免time_wait狀態的乙個辦法。

16:19:04.691591 ip 127.0.0.1.60530 > 127.0.0.1.49488: r 6:6(0) ack 4025 win 386

16:19:04.692180 ip 127.0.0.1.49488 > 127.0.0.1.60530: . ack 6 win 257

16:19:04.692199 ip 127.0.0.1.60530 > 127.0.0.1.49488: r 335804194:335804194(0) win 0

^c9 packets captured

18 packets received by filter

0 packets dropped by kernel

發生異常關閉的情況包括:

1、應用層還沒有把tcp緩衝區內的資料讀完就發起close

2、在讀寫的時候發生了異常,比如記憶體踩空了。

$ sudo /usr/sbin/tcpdump -i any -c 100 'tcp port 60530' -nn

tcpdump: warning: promiscuous mode not supported on the "any" device

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode

listening on any, link-type linux_sll (linux cooked), capture size 96 bytes

22:25:48.571911 ip 127.0.0.1.49525 > 127.0.0.1.60530: s 2056888219:2056888219(0) win 32792

22:25:48.571929 ip 127.0.0.1.60530 > 127.0.0.1.49525: s 2331439954:2331439954(0) ack 2056888220 win 32768

22:25:48.571941 ip 127.0.0.1.49525 > 127.0.0.1.60530: . ack 1 win 257

三次握手結束

22:25:48.572145 ip 127.0.0.1.49525 > 127.0.0.1.60530: p 1:4025(4024) ack 1 win 257

22:25:48.572153 ip 127.0.0.1.60530 > 127.0.0.1.49525: . ack 4025 win 386

22:25:52.408552 ip 127.0.0.1.60530 > 127.0.0.1.49525: p 1:6(5) ack 4025 win 386

四次揮手開始

具體見tcpdump的幫助文件

tcpdump抓包分析利器 wireshark

wireshark有mac版和win版,fiddler有win版。下面看下wireshark怎麼用 先抓點包 zjy ubuntu sudo tcpdump iany w dump.pcap tcpdump listening on any,link type linux sll linux coo...

快速上手tcpdump進行網路抓包分析

簡介 tcpdump是linux中強大的網路資料採集分析工具之一。mannal手冊的簡介 dump the traffic on a network,根據使用者的定義對網路上的資料報進行截獲的包分析工具,支援針對網路層 協議 主機 網路或埠的過濾,並提供and or not等邏輯語句進行篩選過濾。基...

tcpdump 抓包與分析

tcpdump 抓包與分析 tcpdump抓的包內容可以用wireshark進行解析,如 tcpdump c1000 w tmp tcpdump.test.cap wireshark是開源軟體windows和linux下都可以執行,我在windows下測試的,用wireshark開啟 tcpdump...