<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                tcpdump命令可以對網絡上的數據包進行截獲和分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。 **安裝命令:** yum install tcpdump -y **tcpdump 命令格式說明:** ``` Usage: tcpdump [-aAbdDefhHIJKlLnNOpqStuUvxX#] [ -B size ] [ -c count ] [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ] [ -i interface ] [ -j tstamptype ] [ -M secret ] [ --number ] [ -Q|-P in|out|inout ] [ -r file ] [ -s snaplen ] [ --time-stamp-precision precision ] [ --immediate-mode ] [ -T type ] [ --version ] [ -V file ] [ -w file ] [ -W filecount ] [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ] [ expression ] ``` > **option:** > * -a:試著 把 網絡和廣播地址 轉換成 名稱. > * -c:當 收到 count 報文 后 退出. > * -d:把 編譯好的 報文匹配代碼 (packet-matching code) 翻譯成 可讀形式, 傳往 標準輸出, 然后退出. > * -dd:把 報文匹配代碼 (packet-matching code) 以 C 程序片斷 的 形式 輸出. > * -ddd:把 報文匹配代碼 (packet-matching code) 以 十進制數 形式 輸出 (前面 加上 總數). > * -e:顯示 鏈路層報頭 > * -f: 以 數字形式 顯示 '外部的' 互聯網地址, 而不是 字符形式 > * -F:把 file 的內容 用作 過濾表達式. 忽略 命令行 上 的 表達式 > * -i: 監聽 interface. 如果不指定接口, tcpdump 在 系統 的 接口 清單 中, 尋找 號碼最小, 已經 配置好的 接口 (loopback 除外). 選中的時候會中斷連接. > * -l:行緩沖 標準輸出. 可用于 捕捉 數據 的 同時 查看 數據. 例如, `tcpdump -l | tee dat'' or ``tcpdump -l > dat & tail -f dat'` > * -n:不要把地址轉換成名字(指的是主機地址,端口號等) > * -N:不顯示主機名字中的域名部分. 例如, 如果使用這個選項, tcpdump 只顯示 `nic`,而不是`nic.ddn.mil` > * -O: 禁止運行報文匹配代碼的優化器. 這個選項只有當你懷疑優化器有bug時才有用. > * -p:禁止把接口置成 promiscuous(雜湊) 模式. 注意, 接口有可能因其他原因而處于 promiscuous 模式; 因此, '-p' 不能 作為 `ether host {local-hw-addr} 或 ether broadcast' 的 簡寫. > * -r: <數據包文件>從 file中讀入數據報 (文件 是用 -w 選項 創建的). 如果 file 是 ``-'', 就從標準輸入讀入. > * -s:<數據包大小> 設置每個數據包的大小 > * -S:用絕對而非相對數值列出TCP關聯數 > * -T:<數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型 > * -t:禁止顯示時戳標志 > * -tt:顯示未格式化的時戳標志 > * -v:詳細顯示指令執行過程 > * -vv:更詳細顯示指令執行過程 > * -w: <數據包文件>把數據包數據寫入指定的文件 > * -x:用十六進制字碼列出數據包資料 **expression 解析** <p style="text-indent:2em;">expression 是用來選擇要轉儲的數據報,如果沒有指定 expression , 就轉儲網絡的全部報文,否則,只轉儲相對 expression 為 `true' 的 數據報。</p> <p style="text-indent:2em;">expression s 由一個或多個 <span style="font-weight: bold;">原語 (primitive) </span>組成, 原語是通常由一個標識 (id, 名稱或數字), 和標識前面的一個或多個<span style="font-weight: bold;">修飾子(qualifier) </span>組成。修飾子有三種不同的類型:</p> 1. type?限定符顯示標識名稱或數字所指的原語類型。可能的類型為 host、net 和 port。例如,“host foo”、“net 128.3”和“port 20”。如果沒有類型限定符,那么將采用 host。 2. dir?限定符指定到標識和/或來自標識的特定傳輸方向。可能的方向為 src、dst、src 或 dst 和 src 以及 dst。如果沒有 dir 限定符,那么將采用 src 或 dst。對于某些鏈接層(例如,SLIP)和某些其他設備類型,入站和出站限定符可以用來指定希望的方向。 3. proto?限定符限制與特定協議相匹配。可能的協議為 fddi、tr、wlan、ip、ip6、arp、rarp、decnet、tcp 和 udp。如果沒有 proto 限定符,那么將采用與該類型一致的所有協議。 <p style="text-indent:2em;">`fddi` 實際上 是 `ether` 的 別名,分析器 把 它們 視為 "用在 指定 網絡接口 上的 數據鏈路層",FDDI報頭包含類似于以太協議的源目地址, 而且通常包含類似于以太協議的報文類型, 因此你可以過濾FDDI域, 就象分析以太協議 一樣,FDDI 報頭也包含其他域, 但是你不能在過濾器表達式里顯式描述。 </p> <p style="text-indent:2em;">作為上述的補充, 有一些特殊的'原語' 關鍵字: gateway, broadcast, less, greater和數學表達式。 它們不同于上面的模式,這些在后面有敘述。 </p> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;更復雜的 過濾器表達式 可以 通過 and, or 和 not 連接 原語 來 組建. 例如 `host foo and not port ftp and not port ftp-data `, 為了少敲點鍵鍵盤,可以忽略相同的修飾子。 例如, `tcp dst port ftp or ftp-data or domain` 實際上 就是 `tcp dst port ftp or tcp dst port ftp-data or tcp dst port domain` **允許的原語有:** * dst host host:如果報文中IP的目的地址域是host, 則邏輯為真。host既可以是地址, 也可以是主機名 * src host host :如果報文中IP的源地址域是host,則邏輯為真。 * host host:如果報文中IP的源地址域或者目的地址域是host,則邏輯為真,上面所有的host表達式都可以加上ip, arp, 或rarp關鍵字做前綴, 就象:`ip host host `,它等價于` ether proto ip and host host ` ,如果host是擁有多個IP地址 的, 它的每個地址都會被查驗 * ether dst ehost:如果報文的以太目的地址是 ehost,則邏輯為真, Ehost既可以是名字 (/etc/ethers 里有), 也可以是 數字 * ether src ehost:如果報文的以太源地址是ehost, 則邏輯為真 * ether host ehost:如果報文的以太源地址或以太目的地址是ehost, 則邏輯為真 * gateway host: 如果報文把host當做網關, 則邏輯為真。 也就是說,報文的以太源或目的地址是host, 但是IP的源目地址都不是host,host必須是個主機名,而且必須存在` /etc/hosts `和 `/etc/ethers` 中 (一個等價的表達式是`ether host ehost and not host host ` 。對于 host / ehost, 它既可以是 名字, 也可以是 數字.) * dst net net:如果報文的IP目的地址屬于網絡號net, 則邏輯為真。 net既可以是名字 (存在 `/etc/networks` 中), 也可以是網絡號 * src net net:如果報文的IP源地址屬于網絡號net, 則邏輯為真 * net net:如果報文的IP源地址或目的地址屬于網絡號net, 則邏輯為真 * net net mask mask:如果IP地址匹配指定網絡掩碼(netmask)的net,則邏輯為真。 本原語可以用src或dst修飾 * net net/len:如果IP地址匹配指定網絡掩碼的net,則邏輯為真。 掩碼的有效位寬為len, 本原語可以用src或dst修飾 * dst port port:如果報文是ip/tcp或ip/udp,并且目的端口是port, 則邏輯為真。 port是一個數字, 也可以是 `/etc/services` 中說明過的名字 (參看 tcp(4P) 和 udp(4P))。 如果使用名字, 則檢查端口號和協議。 如果使用數字或者有歧義的名字,則只檢查端口號 (例如, dst port 513 將顯示 tcp/login 的數據 和 udp/who 的數據, 而 port domain 將顯示 tcp/domain 和 udp/domain 的數據) * src port port:如果報文的源端口號是port,則邏輯為真 * port port:如果報文的源端口或目的端口是port, 則邏輯為真。 上述的任意一個端口表達式都可以用關鍵字tcp或 udp做前綴, 就象:`tcp src port port` ,它只匹配源端口是port的TCP報文 * less length:如果報文的長度小于等于length, 則邏輯為真。它等同于:len <= length * greater length:如果報文的長度大于等于length, 則邏輯為真。它等同于:len >= length * ip proto protocol:如果報文是IP數據報,其內容的協議類型是protocol, 則邏輯為真。 Protocol可以是數字, 也可以是下列名稱中的: icmp, igrp, udp, nd, 或 tcp。 注意 這些 標識符 tcp, udp, 和 icmp 也是 關鍵字, 所以 必須 用 反斜杠(\) 轉義, 在 C-shell 中 應該是 \\ * ether broadcast:如果報文是以太廣播報文, 則邏輯為真。 關鍵字ether是可選的 * ip broadcast:如果報文是IP廣播報文, 則邏輯為真。 Tcpdump檢查全0和全1廣播約定, 并且檢查本地的子網掩碼 * ether multicast:如果報文是以太多目傳送報文(multicast),則邏輯為真。 關鍵字ether是可選的。 這實際上 是 `ether[0] & 1 != 0` 的簡寫 * ip multicast:如果報文是IP多目傳送報文,則邏輯為真 * ether proto protocol:如果信息包為 ether 類型協議,那么為 True。protocol 可以為數字或以下名稱之一:ip、ip6、arp、rarp、atalk、aarp、decnet、sca、lat、mopdl、moprc、iso、stp、ipx 或 netbeui。請注意,這些標識也是關鍵字,并且必須通過反斜杠(\)進行轉義。[如果是 FDDI (例如, `fddi protocol arp'), 協議 標識 來自 802.2 邏輯鏈路控制(LLC)報頭, 它 通常 位于 FDDI 報頭 的 頂層. 當 根據 協議標識 過濾 報文 時, Tcpdump 假設 所有的 FDDI 報文 含有 LLC 報頭, 而且 LLC 報頭 用的是 SNAP 格式.] * decnet src host:如果DECNET的源地址是host, 則邏輯為真, 該主機地址的形式可能是 “10.123”, 或者是 DECNET主機名. [只有 配置成 運行 DECNET 的 Ultrix 系統 支持 DECNET 主機名.] * decnet dst host:如果 DECNET的目的地址是host, 則邏輯為真 * decnet host host:如果DECNET的源地址或目的地址是host, 則邏輯為真 * expr relop expr:如果關系成立,其中 relop 是 >、=、<=、= 和 != 中的一個,expr 是算術表達式,此算術表達式由整數常量(用標準 C 語法表示)、常規二目運算符 \[+、-、\*、/、& 和 |\]、長度運算符和特殊信息包數據存取器組成,那么為 true。要訪問信息包里的數據,請使用以下語法:`proto [ expr : size ]`。 * Proto 是 ether、fddi、tr、wlan、ppp、slip、link、ip、arp、rarp、tcp、udp、icmp 或 ip6 其中之一,并且表明索引操作的協議層。(ether、fddi、wlan、tr、ppp、slip 和 link 都稱為鏈接層。)請注意,tcp、udp 和其他上層協議類型僅適用于 IPv4,而不是 IPv6(以后將對其進行修訂)。與表明的協議層相關的字節偏移量由 expr 給定。size 為可選,它表明興趣字段里的字節數;它可以為 1、2 或 4,缺省值為 1。由關鍵字 len 表示的長度運算符給定信息包的長度。 * 例如,ether\[0\] & 1 != 0?捕獲所有多點廣播流量。表達式?ip\[0\] & 0xf !=5?捕獲帶有選項的所有 IP 信息包。表達式?ip\[6:2\] & 0x1fff = 0?僅捕獲未分段的信息包和分段信息包的片段零。此檢查隱式適用于 tcp 和 udp 索引操作。例如,tcp\[0\] 始終表示 TCP 標題的第一個字節,而從不表示插入片段的第一個字節 **原語可以用下述方法結合使用:** 1. 圓括弧括起來的原語和操作符 (圓括弧在Shell中有專用, 所以必須轉義). 2. 取反操作 (`! or not`). 3. 連結操作 (`&& or and`). 4. 或操作 (`|| or or`). <p style="text-indent:2em;">取反操作有最高優先級, 或操作和and操作有相同的優先級, 運算時從左到右結合, 注意and操作需要顯式的and算符,而不是并列放置。</p> <p style="text-indent:2em;">如果給出了不帶關鍵字的標識,那么假定使用最新的關鍵字。例如,not host vs and ace?是?not host vs and host ace?的縮略語,不應與?not ( host vs or ace )?混淆。表達式自變量可作為單自變量或多自變量(選擇兩者中較方便的一種)傳遞給?tcpdump。通常,如果表達式包含 Shell 元字符,將其作為單個的、加引號的自變量來傳遞會更容易。多自變量在語法分析之前以空格并置</p> | 命令 | 解釋 | | --- | ---- | |tcpdump -i eth1| 監視指定網絡接口的數據包 | |tcpdump tcp port 23 and host 210.27.48.1|監視指定主機和端口的數據包| |tcpdump net ucb-ether|監聽指定網絡的數據包| |tcpdump host 210.27.48.1|截獲所有210.27.48.1?的主機收到的和發出的所有的數據包| |tcpdump ip host ace and not helios|顯示 ace 和 除了 helios 以外的 所有 主機 的 IP報文| |tcpdump ip and not net localnet|顯示 既不是 來自 本地主機, 也不是 傳往 本地主機 的 網絡數據| |tcpdump 'tcp[13] & 3 != 0 and not src and dst net localnet'|顯示 每個 TCP會話 的 起始 和 結束 報文 (SYN 和 FIN 報文), 而且 會話方 中 有一個 遠程主機.| |tcpdump 'gateway snup and ip[2:2] > 576'|顯示 經過 網關 snup 中 大于 576 字節的 IP 數據報| ``` // 實例一: tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap (1)tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項等都要放到第一個參數的位置,用來過濾數據報的類型 (2)-i eth1 : 只抓經過接口eth1的包 (3)-t : 不顯示時間戳 (4)-s 0 : 抓取數據包時默認抓取長度為68字節。加上-S 0 后可以抓到完整的數據包 (5)-c 100 : 只抓取100個數據包 (6)dst port ! 22 : 不抓取目標端口是22的數據包 (7)src net 192.168.1.0/24 : 數據包的源網絡地址為192.168.1.0/24 (8)-w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析 // 實例二:使用tcpdump抓取HTTP包,0x4745 為"GET"前兩個字母"GE",0x4854 為"HTTP"前兩個字母"HT"。 tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看