前端必會計算機基礎之TCP抓包的工具tcpdump的安裝和使用

前言

tcpdump是一個最基本重要的網絡分析工具, 掌握好這個工具, 對於學習tcp/ip協議也是頗有幫助的. 理解了tcp/ip協議棧的知識, 分析調優網絡的能力纔會更高. 因此使用tcpdump相比其它的工具, 更能幫咱們理解協議.html

用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據使用者的定義對網絡上的數據包進行截獲的包分析工具。 tcpdump能夠將網絡中傳送的數據包的「頭」徹底截獲 下來提供分析。它支持針對網絡層、協議、主機、網絡或端口的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。linux

瞭解如何使用Tcpdump來捕獲感興趣的數據包是一項必須掌控的基本功。web

tcpdump 安裝

可到「www.tcpdump.org」下載最新的Tcpdump源碼包。bash

注意⚠️:網絡

tcpdump的運行須要pcap的支持,因此最好先行安裝pcap軟件包,另外還要注意軟件的版本問題,建議按照網站上匹配的軟件包tcpdumppcap一同下載。tcp

咱們以最新版本tcpdump-4.9.2,libpcap-1.9.0爲例:工具

在編譯Tcpdump以前,應先肯定pcap庫(libpcap)已安裝完畢。這個庫是編譯Tcpdump時所必需的。學習

安裝過程很是簡單:網站

tar -zxvf libpcap-1.9.0.tar.gz 

 cd libpcap-1.9.0

./configure

make 

make install
複製代碼

該庫已安裝完畢,下面執行下面的命令來編譯並安裝Tcpdump:ui

tar -zxvf tcpdump-4.9.2.tar.gz 

cd tcpdump-4.9.2

 ./configure

make

make install
複製代碼

Tcpdump的命令行選項

Tcpdump是個命令行方式的網絡嗅探器。他經過使用命令選項來過濾網卡截獲的數據包,假如不進行過濾,過多數量的包會使網絡管理員很難理清頭緒。Tcpdump的命令格式以下:

tcpdump [ -adeflnNOpqRStuvxX ] [ -c 數量 ] [ -C 文檔尺寸 ] [ -F 文檔名 ] [ -i 網絡接口 ] [ -m 文檔名 ] [ -r 文檔名 ] [ -s 長度 ] [ -T 類型 ] [ -w 文檔名 ] [ -E algo:secret ] [ 表達式 ]

表1 Tcpdump經常使用命令行選項

命令行 描述
-a 將網絡地址和廣播地址轉變成容易識別的名字
-d 將已截獲的數據包的代碼以人容易理解的格式輸出;
-dd 將已截獲的數據包的代碼以C程式的格式輸出;
-ddd 將已截獲的數據包的代碼以十進制格式輸出;
-e 輸出數據鏈路層的頭部信息;
-f 將internet地址以數字形式輸出;
-l 將標準輸出變爲行緩衝方式;
-n 不將網絡地址轉換成易識別的主機名,只以數字形式列出主機地址(如IP地址),這樣可以避免DNS查詢;
-t 不輸出時間戳;
-v 輸出較周詳的信息,例如IP包中的TTL和服務類型信息;
-vv 輸出詳盡的報文信息;
-c 在捕獲指定個數的數據包後退出;
-F 從指定的文檔中讀取過濾規則,忽略命令行中指定的其餘過濾規則;
-i 指定監聽的網絡接口;
-r 從指定的文檔中讀取數據包(該文檔通常經過-w選項產生);
-w 將截獲的數據包直接寫入指定的文檔中,不對其進行分析和輸出;
-T 將截獲的數據包直接解釋爲指定類型的報文,如今支持的類型有cnfp、rpc、rtp、snmp、vat和wb。

表1給出了一些經常使用的Tcpdump命令行選項,使用這些選項可以過濾出真正感興趣的數據包。

默認啓動

sudo tcpdump
複製代碼

普通狀況下,直接啓動 tcpdump將監視第一個網絡接口上全部流過的數據包。

監視指定網絡接口的數據包

查看網卡名稱:

tcpdump -i lo0 
複製代碼

指定ip

例如截獲全部192.168.131.131 的主機收到的和發出的全部的數據包

tcpdump host 192.168.131.131 -i lo0 (必須加上網卡名稱)
複製代碼

抓取數據,保存爲pcap文件(可用wireshark軟件打開)

tcpdump tcp -i lo0  -t -s 0 -c 100  -w /tmp/target.pcap
複製代碼

監聽指定的主機

tcpdump -i eth0 -nn 'host 192.168.168.2'
複製代碼

這樣的話,192.168.168.2這臺主機接收到的包和發送的包都會被抓取.

tcpdump -i eth0 -nn 'src host 192.168.168.2'
複製代碼

這樣只有192.168.168.2這臺主機發送的包纔會被抓取。

tcpdump -i eth0 -nn 'dst host 192.168.168.2'
複製代碼

這樣只有192.168.168.2這臺主機接收到的包纔會被抓取。

監聽指定端口

tcpdump -i eth0 -nnA 'port 80'
複製代碼

上例是用來監聽主機的80端口收到和發送的全部數據包,結合-A參數,在web開發中,真是很是有用。

監聽指定主機和端口

tcpdump -i eth0 -nnA 'port 80 and src host 192.168.168.2'
複製代碼

多個條件能夠用and,or鏈接。上例表示監聽192.168.168.2主機經過80端口發送的數據包。

抓取特定目標ip和端口的包

tcpdump host 192.168.168.2 and tcp port 8000
複製代碼

使用tcpdump抓取HTTP包

tcpdump  -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
複製代碼

0x4745 爲"GET"前兩個字母"GE",0x4854 爲"HTTP"前兩個字母"HT"。

tcpdump 對截獲的數據並無進行完全解碼,數據包內的大部份內容是使用十六進制的形式直接打印輸出的。顯然這不利於分析網絡故障,一般的解決辦法是先使用帶-w參數的tcpdump 截獲數據並保存到文件中,而後再使用其餘程序(如Wireshark)進行解碼分析。固然也應該定義過濾規則,以免捕獲的數據包填滿整個硬盤。

Wireshark

下載地址:www.wireshark.org/download/

使用

使用方法:jingyan.baidu.com/article/156…

打開咱們以前保存的文件。

一些經常使用的使用方法:經常使用語法規則

參考: 各類工具使用手冊

linux抓包工具tcpdump

使用wireshark經常使用的過濾命令

Wireshark數據抓包教程之認識捕獲分析數據包

Wireshark抓包工具使用以及數據包分析

而後咱們就能夠愉快的抓包了。

相關文章
相關標籤/搜索