用法格式:html
tcpdump [-i 網卡] [選項] '表達式'linux
選項說明以下:web
舉例說明:apache
監聽網卡eth0ubuntu
$ tcpdump -i eth0
這個方式最簡單了,可是用處很少,由於基本上只能看到數據包的信息刷屏,壓根看不清,可使用ctrl+c中斷退出,若是真有需求,能夠將輸出內容重定向到一個文件,這樣也更方便查看。vim
監聽指定協議的數據服務器
$ tcpdump -i eth0 -nn 'icmp'
這個是用來監聽icmp協議的數據,就是ping命令使用的協議。相似的,若是要監聽tcp或者是udp協議,只須要修改上例的icmp就能夠了。ping下監聽的機器,輸出以下:app
linux使用tcpdump抓包示例tcp
每一行的各個數據表示的含義:學習
抓到包的時間 IP 發包的主機和端口 > 接收的主機和端口 數據包內容
監聽指定的主機
$ tcpdump -i eth0 -nn 'host 192.168.1.231'
這樣的話,192.168.1.231這臺主機接收到的包和發送的包都會被抓取。
$ tcpdump -i eth0 -nn 'src host 192.168.1.231'
這樣只有192.168.1.231這臺主機發送的包纔會被抓取。
$ tcpdump -i eth0 -nn 'dst host 192.168.1.231'
這樣只有192.168.1.231這臺主機接收到的包纔會被抓取。
監聽指定端口
$ tcpdump -i eth0 -nnA 'port 80'
上例是用來監聽主機的80端口收到和發送的全部數據包,結合-A參數,在web開發中,真是很是有用。
監聽指定主機和端口
$ tcpdump -i eth0 -nnA 'port 80 and src host 192.168.1.231'
多個條件能夠用and,or鏈接。上例表示監聽192.168.1.231主機經過80端口發送的數據包。
監聽除某個端口外的其它端口
$ tcpdump -i eth0 -nnA '!port 22'
若是須要排除某個端口或者主機,可使用「!」符號,上例表示監聽非22端口的數據包。
小結:
tcpdump這個功能參數不少,表達式的選項也很是多,很是強大,不過經常使用的功能確實很少。詳情能夠經過man查看系統手冊。
另外在抓取web包的時候,發送網頁內容都是很奇怪的字符,發現是apache開啓了gzip壓縮的緣故,關閉掉gzip壓縮就能夠了。在ubuntu 12.04下,編輯vim /etc/apache2/mods-enabled/deflate.load文件,將加載模塊deflate_module的語句註釋掉,而後重啓apache就OK了
操做:
分類: linux學習