在網絡上轉儲流量ios
tcpdump [ -a ] [ -A ] [ -B buffer_size ] [ -d ] [ -D ] [ -e ] [ -f ] [ -l ] [ -K ] [ -L ] [ -M secret ] [ -r file ]][ -n ] [ -N ] [ -O ] [ -p ][ -q ] [ -Q [ -V ] ] [ -R ] [ -S ] [ -t ] [ -T ][ -u ] [ -U ] [ -v ] [ -x ] [ -X ] [ -c count ][ -C file_size ] [ -F file ] [ -G rotate_seconds ] [ -i interface ] [ -s snaplen ] [ -w file ][ -E addr ] [ -y datalinktype ] [-z command ] [-Z user ] [ expression ]算法
tcpdump 命令將打印網絡接口上與布爾表達式相匹配的信息包的頭部分。能夠在運行此命令時附帶 -w 標誌以將信息包數據保存在文件中,以便進一步進行分析。還能夠在運行此命令時附帶 -r 標誌,以從所保存的信息包文件中讀取數據,而不是從網絡接口中讀取信息包。在全部狀況下,tcpdump 命令將只處理與表達式相匹配的信息包。shell
若是運行此命令時未帶 -c 標誌,那麼 tcpdump 將繼續捕獲信息包,直到它被 SIGINT 信號(一般爲 control-C)或者 SIGTERM 信號(一般爲 kill(1) 命令)中斷爲止。若是運行 tcpdump 時帶有-c 標誌,那麼它將捕獲信息包,直到它被 SIGINT 或 SIGTERM 信號中斷,或者直到已經處理了指定數目的信息包爲止。數據庫
容許的原語express
ether proto \ip and host host
若是已在其中完成了捕獲的接口的子網掩碼不可用,例如,由於已在其中完成了捕獲的接口沒有網絡掩碼,那麼沒法正確執行此檢查。c#
縮略語:緩存
ether proto p
lat、moprc 和 mopdl安全
ip proto p or ip6 proto p
proto [ expr : size ]
例如,ether[0] & 1 != 0 捕獲全部多點廣播流量。表達式 ip[0] & 0xf !=5 捕獲帶有選項的全部 IP 信息包。表達式 ip[6:2] & 0x1fff = 0 僅捕獲未分段的信息包和分段信息包的片斷零。此檢查隱式適用於 tcp 和 udp 索引操做。例如,tcp[0] 始終表示 TCP 標題的第一個字節,而從不表示插入片斷的第一個字節。服務器
某些偏移量和字段值能夠表達爲名稱而不是數字值。如下協議標題字段偏移量可用:icmptype(ICMP 類型字段)、icmpcode(ICMP 代碼字段)和 tcpflags(TCP 標誌字段)。網絡
如下 ICMP 類型字段值可用:icmp-echoreply、icmp-unreach、icmp-sourcequench、icmp-redirect、icmp-echo、icmp-routeradvert、 icmp-routersolicit、icmp-timxceed、icmp-paramprob、icmp-tstamp、icmp-tstampreply、icmp-ireq、icmp-ireqreply、icmp-maskreq 和 icmp-maskreply。
如下 TCP 標誌字段值可用:tcp-fin、tcp-syn、tcp-rst、tcp-push、tcp-ack 和 tcp-urg。
組合原語
非(「!」或「not」)。 並置(「&&」或「and」)。 或(「||」或「or」)。
若是給出了不帶關鍵字的標識,那麼假定使用最新的關鍵字。例如,not host vs and ace 是 not host vs and host ace 的縮略語,不該與 not ( host vs or ace ) 混淆。
表達式自變量可做爲單自變量或多自變量(選擇二者中較方便的一種)傳遞給 tcpdump。一般,若是表達式包含 Shell 元字符,將其做爲單個的、加引號的自變量來傳遞會更容易。多自變量在語法分析以前以空格並置。
fddi 是 ether 的別名。解析器將其理解爲:「在指定網絡接口上使用的數據鏈路級」。FDDI 頭部分包含相似以太網的源地址和目標地址,並常常包含相似以太網的信息包類型,所以能夠在這些 FDDI 字段上進行過濾,此操做與對相似以太網字段的操做相同。FDDI 頭部分還包含其餘字段,可是沒法在過濾表達式中對其進行命名。
與 fddi 相似,tr 和 wlan 是 ether 的別名。上一段有關 FDDI 頭部分的論述還適用於令牌環和 802.11 無線 LAN 頭部分。對於 802.11 頭部分,目標地址爲 DA 字段,源地址爲 SA 字段;不測試 BSSID、RA 和 TA 字段。
除以上所述以外,還有一些特殊的「原語」關鍵字不遵循這種模式:網關、廣播、小於、大於和算術表達式。全部這些關鍵字描述以下。
經過使用單詞 and、or 和 not 組合原語來構建更復雜的過濾表達式。
項目 | 描述 |
---|---|
0 | 成功。 |
非零 | 錯誤。 |
從網絡接口讀取信息包須要對 /dev/bpf* 的讀訪問權,一般僅限於 root 用戶。從文件讀取信息包除了文件讀許可權以外,不須要任何特殊權限。
tcpdump host sundown
tcpdump host helios and \( hot or ace \)
tcpdump ip host ace and not helios
tcpdump net ucb-ether
tcpdump 'gateway snup and (port ftp or ftp-data)'
tcpdump ip and not net localnet
tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and d dst net localnet'
tcpdump 'gateway snup and ip[2:2] > 576'
tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
tcpdump 'icmp[icmptype] != icmp-echo and icmp[icmptype] != icmp-e choreply'
全部的錯誤和警告都發送到 stderr。
跟蹤信息包時,若是跨越了夏令時變動,那麼提供的時間戳記會有誤差(將忽略時間變動)。
在除了令牌環頭部分中的那些字段以外的字段中的過濾表達式會錯誤地處理源路由令牌環信息包。
在 802.11 頭部分中的那些字段以外的字段中的過濾表達式會錯誤地處理帶有 To DS 和 From DS 集合的 802.11 數據包。
ip6 proto 應該追蹤標題鏈,但在此時它未進行此操做。爲此工做狀況提供了 ip6 protochain。
傳輸層頭部分的算術表達式相似於 tcp[0],對 IPv6 信息包不起做用。它僅查看 IPv4 信息包。
包跟蹤在 WPAR 環境中不起做用,由於底層 BPF 驅動程序沒法識別 WPAR。
項目 | 描述 |
---|---|
/usr/sbin/tcpdump | tcpdump 命令的位置。 |
/usr/lib/libpcap.a | |
/dev/bpf* | |
/opt/freeware/lib/libcrypto.a(libcrypto.so) | 可選 |