您好,登錄后才能下訂單哦!
tcpdump(dump the traffic on a network)是一款在Unix下一款比較實用的一款用于分析數據包的工具,它支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句、布爾表達式對報文的報頭匹配,在linux系統下如果未安裝可以通過yum來安裝,不過要注意的是在使用需要相應的權限:
對于SunOS 的nit或bpf界面: 要運行tcpdump , 必須有/dev/nit或/dev/bpf* 的讀訪問權限; 對于Solaris的dlpi: 必須有網絡仿真設備 (network pseudo device), 如 /dev/le的讀訪問權限; 對于HP-UX的dlpi、IRIX的snoop、Linux: 必須是root, 或者把它安裝成 root 的設置uid 程序; 對于 Ultrix和Digital UNIX: 一旦超級用戶使用promiscuous 操作模式 (promiscuous-mode), 任何用戶 都可以 運行 tcpdump; 對于BSD: 必須有/dev/bpf*的讀訪問權限。
而tcpdump的常用選項參數如下:
-A 數據包內容以ASCII顯示,通常用來抓取網頁的數據包數據. -a 試著 把 網絡和廣播地址轉換成名稱. -c 監聽數據包數,如果沒有帶這個參數tcpdump會不斷的監聽,當收到count報文后退出. -d 把編譯過的數據包編碼轉換成可閱讀的格式,并傾倒到標準輸出. -dd 把編譯過的數據包編碼轉換成C語言的格式,并傾倒到標準輸出. -ddd 把編譯過的數據包編碼轉換成十進制數字的格式,并傾倒到標準輸出. -e 顯示數據鏈路層的數據包. -f 用數字顯示網際網絡地址. -F 指定內含表達方式的文件. -i 監聽的網絡接口. -l 使用標準輸出列的緩沖區. -n 不把主機的網絡地址轉換成ip -N 不列出域名. -O 不將數據包編碼最佳化,這個選項只有當你懷疑優化器有bug時才有用. -p 不讓網絡界面進入混雜模式. -q 快速輸出,僅列出少數的傳輸協議信息. -r 從指定的文件讀取數據包數據. -s 設置每個數據包的大小. -T 強制將表達方式所指定的數據包轉譯成設置的數據包類型.目前已知的類型有: rpc (遠程過程調用 Remote Procedure Call), rtp (實時應用協議 Real-Time Applications protocol), rtcp (實時應用控制協議 Real-Time Applications control protocol), vat (可視音頻工具 Visual Audio Tool), 和 wb (分布式白板 distributed White Board). -S 用絕對而非相對數值列出TCP關聯數. -t 禁止顯示時戳標志. -tt 顯示未格式化的時戳標志. -v 詳細顯示指令執行過程. 例如, 顯示IP數據報中的生存周期和服務類型. -vv 更詳細顯示指令執行過程. 例如,顯示NFS應答報文的附加域. -w 把數據包數據寫入指定的文件. -x 以 16進制數形式顯示每一個報文(去掉鏈路層報頭后).可以顯示較小的完整報文,否則只顯示snaplen個字節. expression表達式: 用來選擇要轉儲的數據報.如果沒有指定expression , 就轉儲網絡的全部報文.否則, 只轉儲相對expression為邏輯為真的數據包報文. expression 由一個或多個原語(primitive)組成.原語通常由一個標識(id,名稱或數字),和標識前面的一個或多個修飾子(qualifier)組成.修飾子有三種不同的類型: type 類型修飾子指出標識名稱或標識數字代表什么類型的東西.可以使用的類型有host,net和port.例如,`host foo', `net128.3', `port 20'.如果不指定類型修飾子, 就使用缺省的host . dir 方向修飾子 指出 相對于 標識 的 傳輸方向 (數據是 傳入還是傳出 標識). 可以使用的 方向 有 src, dst, src or dst 和 src and dst. 例如, `src foo', `dst net 128.3', `src or dst port ftp-data'. 如果 不指定 方向修飾子, 就使用 缺省的 src or dst . 對于 `null' 鏈路層 (就是說 象 slip 之類的 點到點 協議), 用 inbound 和 outbound 修飾子 指定 所需的 傳輸方向. proto 協議修飾子 要求 匹配 指定的協議. 可以使用的 協議 有: ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp 和 udp. 例如, `ether src foo', `arp net 128.3', `tcp port 21'. 如果 不指定 協議修飾子, 就使用 所有 符合 類型 的 協議. 例如, `src foo' 指 `(ip 或 arp 或 rarp) src foo' (注意后者不符合語法), `net bar' 指 `(ip 或 arp 或 rarp) net bar', `port 53' 指 `(tcp 或 udp) port 53'. 更復雜的過濾器表達式可以通過 and, or 和 not 連接原語來組建. 例如, `host foo and not port ftp and not port ftp-data'. 允許的 原語 有: 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當做網關, 則邏輯為真. dst net net 如果報文的IP目的地址屬于網絡號net,則邏輯為真. src net net 如果報文的IP源地址屬于網絡號net,則邏輯為真. net net 如果報文的IP源地址或目的地址屬于網絡號net, 則邏輯為真. net net mask mask 如果IP地址匹配指定網絡掩碼(netmask)的net,則邏輯為真.本原語可以用src或dst修飾. net net/len 如果IP地址匹配指定網絡掩碼的net, 則邏輯為真. dst port port 如果報文是ip/tcp或ip/udp, 并且目的端口是port, 則邏輯為真. src port port 如果報文的源端口號是port,則邏輯為真. port port 如果報文的源端口或目的端口是port,則邏輯為真. less length 如果報文的長度小于等于length,則邏輯為真. 它等同于:len <= length. greater length 如果報文的長度大于等于length,則邏輯為真. 它等同于:len >= length. ip proto protocol 如果報文是IP數據報, 其內容的協議類型是protocol,則邏輯為真. ether broadcast 如果報文是以太廣播報文,則邏輯為真.關鍵字ether是可選的. ip broadcast 如果報文是IP廣播報文,則邏輯為真.Tcpdump檢查全0和全1廣播約定,并且檢查本地的子網掩碼. ether multicast 如果報文是以太多目傳送報文(multicast),則邏輯為真. 關鍵字ether是可選的. ip multicast 如果報文是IP多目傳送報文,則邏輯為真.
總之tcpdump的使用還是可以滿足日常的數據包分析使用的,如下以下一些例子:
監聽來自eth0網卡且通信協議為ssh(缺省22端口)來源于192.168.2.100的數據包數據
[root@localhost ~]# tcpdump -i eth0 -nn 'port 22 and src host 192.168.2.100'
截獲主機192.168.1.100和主機192.168.2.100或192.168.0.100的通信
[root@localhost ~]# tcpdump host 192.168.1.100 and \(192.168.1.100 or 192.168.0.100\)
截取本機的udp協議的ntp(缺省123端口)
[root@localhost ~]# tcpdump udp port 123
總之,在日常可以使用tcpdump來對各種數據包進行分析,在這里就不做過多的說明,需要更多tcpdump的使用可以看相關的man幫助手冊,當然是用tcpdump對七層上數據沒有做比較徹底的解碼,所以平時也可把抓取的數據包寫入文件后使用wireshark來進行進一步的分析
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。