歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下tcpdump使用

Linux下tcpdump使用

日期:2017/2/28 16:20:23   编辑:Linux教程

雖然man上寫的很詳細,但有時用的時候可能並不想去man,還是寫些筆記,方便以後使用。

基本命令格式如下tcpdump [- 包顯示格式參數] [- 捕獲控制參數] '過濾匹配條件'

tcpdump可以以一定的顯示格式來打印滿足過濾條件的包信息,包的來源可以是網絡接口,也可以是文件。

通常僅僅鍵入tcpdump就可以開始包的捕獲,但這時由於缺少捕獲條件,你想要的包會淹沒在一大批無用的數據中,而且缺少顯示格式參數的控制,tcpdump只會打印IP包頭信息,有時你需要更精確的捕獲控制和更詳細的包信息,那麼就需要更多的參數。

1 捕獲控制參數

-s pkt-size 每個包的最小緩沖區,默認為98,超過的包內容會被截斷

-c count 當捕獲到count個包後,停止捕獲,否則進行連繼捕獲,當然你可以通過SIGINT或SIGTERM信息來終止捕獲

-w file-name 將捕獲的包寫入的文件而非標准輸出,供以後分析

-r file-name 從文件中讀取包的內容,並根據過濾條件顯示到標准輸出上

-C p-f-size 當使用-w參數時,當把包寫入文件時,如果文件大於size MB,則關閉當前文件,打開新的文件進行保存

-F file-match 使用文件中的過濾表達式

-i interface 捕獲特定的接口

-T type 將捕獲的包解釋為type,支持的type列表為aodv,rtp,rtcp,rpc,snmp,tftp...

-W file-count 保存捕獲包的文件個數

-y dl-type 設置鏈路層類型

-Z user

-l 使得tcpdump的輸出為行緩沖的,以便為其他管道處理

-E spi@ipaddr algo:secret 使用指定信息解密IPSEC數據,算法可以是des-cbc等,secret為ASCII的密鑰

-D 顯示系統當前可用接口1

-L 顯示當前系統的鏈路層信息並退出

2 包顯示參數

-x 以十六進制格式打印包的內容,IP頭開始

-xx 包括鏈路層頭信息

-X 同時以十

-A 以ASCII文本方式顯示包內容,html等比較方便

-e 打包頭的印鏈路層信息

-C

-n 不將ip址轉換為域名

-nn 同時不把端口轉換為服務

-S 顯示TCP絕對序號,而非相對序號

-t 不打印時間

-tt 打印未格式化的時間

-v 顯示IP頭的詳細信息如TTL,ID,Length

3 過濾表達式

[協議] [方向] [目標]

關鍵字

目標指定:host , net, port,portrange

net 192.168.1.1/24

portrange 1-1024

方向指定:src,dst 可以用 or and連接

協議指定:ether,wlan,ip,ip6,arp,tcp,udp

ip proto tcp

ip6 proto udp

ip6 protochain type 頭中包含類型type的頭

其他: gateway,broadcast,less,greater或算法表達式

less length

這些關鍵詞可能通過not !,and &&及 or ||來進行邏輯疊加

4 DPI

可以訪問數據包的任意位置的數值並進行過濾

一般格式為:proto[算術表達式:size] [運算符] [值]

算術表達式中可以使用+ - * / & | << >>,,如udp[4:2]&0xffff>256

運行符可以是> < >= <= != =

一個示例:tcpdump -x -c 10 -s 300 'dst port 8080 and udp[4:2]&0xffff>200'

Copyright © Linux教程網 All Rights Reserved