基於ubuntu的tcpdump抓包總結

2021-07-30 07:16:18 字數 3710 閱讀 4043

1、基礎講解

在使用tcpdump之前,需要了解到兩條命令

iwconfig:檢視所有無線網絡卡

ifconfig:檢視所有網絡卡

可以看到,ifconfig得到的結果比iwconfig多乙個,而且iwconfig側重得到無線資訊,而ifconfig側重展示介面資訊。

sudo apt-get install tcpdump

3、基本語法

tcpdump有自己的語法規則,利用這個規則,我們可以很快掌握tcpdump的基本用法。在命令列下輸入

tcpdump -h

會出現諸如下面的資訊

tcpdump version 4.2.1

libpcap version 1.1.1

usage: tcpdump [-aabddefhhikllnnopqrstuuvxx] [ -b size ] [ -c count ]

[ -c file_size ] [ -e algo:secret ] [ -f file ] [ -g seconds ]

[ -i inte***ce ] [ -m secret ]

[ -r file ] [ -s snaplen ] [ -t type ] [ -w file ]

[ -w filecount ] [ -y datalinktype ] [ -z command ]

[ -z user ] [ expression ]

由上面的資訊可以發現,tcpdump的語法可以分為基本選項和表達部分。

4、選項介紹

-a 以ascii格式列印出所有分組,並將鏈路層的頭最小化。 

-c 在收到指定的數量的分組後,tcpdump就會停止。 

-c 在將乙個原始分組寫入檔案之前,檢查檔案當前的大小是否超過了引數file_size 中指定的大小。如果超過了指定大小,則關閉當前檔案,然後在開啟乙個新的檔案。引數 file_size 的單位是兆位元組(是1,000,000位元組,而不是1,048,576位元組)。

-d 將匹配資訊包的**以人們能夠理解的彙編格式給出。 

-dd 將匹配資訊包的**以c語言程式段的格式給出。 

-ddd 將匹配資訊包的**以十進位制的形式給出。 

-d 列印出系統中所有可以用tcpdump截包的網路介面。 

-e 在輸出行列印出資料鏈路層的頭部資訊。 

-e 用spi@ipaddr algo:secret解密那些以addr作為位址,並且包含了安全引數索引值spi的ipsec esp分組。 

-f 將外部的internet位址以數字的形式列印出來。 

-f 從指定的檔案中讀取表示式,忽略命令列中給出的表示式。 

-i 指定監聽的網路介面。 

-l 使標準輸出變為緩衝行形式,可以把資料匯出到檔案。 

-l 列出網路介面的已知資料鏈路。 

-m 從檔案module中匯入smi mib模組定義。該引數可以被使用多次,以匯入多個mib模組。 

-m 如果tcp報文中存在tcp-md5選項,則需要用secret作為共享的驗證碼用於驗證tcp-md5選選項摘要(詳情可參考rfc 2385)。 

-b 在資料-鏈路層上選擇協議,包括ip、arp、rarp、ipx都是這一層的。

-n 不把網路位址轉換成名字。

-nn 不進行埠名稱的轉換。

-n 不輸出主機名中的網域名稱部分。例如,『nic.ddn.mil『只輸出』nic『。 

-t 在輸出的每一行不列印時間戳。 

-o 不執行分組分組匹配(packet-matching)**優化程式。 

-p 不將網路介面設定成混雜模式。 

-q 快速輸出。只輸出較少的協議資訊。 

-r 從指定的檔案中讀取包(這些包一般通過-w選項產生)。 

-s 將tcp的序列號以絕對值形式輸出,而不是相對值。 

-s 從每個分組中讀取最開始的snaplen個位元組,而不是預設的68個位元組。 

-t 將監聽到的包直接解釋為指定的型別的報文,常見的型別有rpc遠端過程呼叫)和snmp(簡單網路管理協議;)。 

-t 不在每一行中輸出時間戳。 

-tt 在每一行中輸出非格式化的時間戳。 

-ttt 輸出本行和前面一行之間的時間差。 

-tttt 在每一行中輸出由date處理的預設格式的時間戳。 

-u 輸出未解碼的nfs控制代碼。 

-v 輸出乙個稍微詳細的資訊,例如在ip包中可以包括ttl和服務型別的資訊。 

-vv 輸出詳細的報文資訊。 

-w 直接將分組寫入檔案中,而不是不分析並列印出來。

-x 輸出資料報資訊

常用選項舉例

監聽指定wlan0介面資訊

tcpdump -i wlan0  

監聽3個包後停止

tcpdump -i  wlan0 -c 3

不進行網路位址轉換

tcpdump -i wlan0 -c 3 -n

不進行埠號轉換

tcpdump -i wlan0 -c 3 -n -nn

輸出詳細報文資訊

tcpdump -i wlan0 -c 3 -n -nn -vv

將資料報資訊也輸出

tcpdump -i wlan0 -c 3 -n -nn -vv -x

需要輸出全部的報文資訊而不是擷取的預設68位元組

tcpdump -i wlan0 -c 3 -n -nn -vv -x -s0

當然,可以簡單的這麼寫tcpdump -i wlan0 -c 3 -nnnvvxs0

5、表示式

tcpdump支援正規表示式過濾。

第一種是關於型別的關鍵字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主機,net 202.0.0.0 指明 202.0.0.0是乙個網路位址,net可以表示乙個子網,比如 net 192.168.1,port 23 指明埠號是23。如果沒有指定型別,預設的型別host.

第二種是確定傳輸方向的關鍵字,主要包括src , dst ,dst or src, dst and src ,這些關鍵字指明了傳輸的方向。舉例說明,src 210.27.48.2 ,指明ip包中源位址是210.27.48.2 , dst net 202.0.0.0 指明目的網路位址是202.0.0.0 。如果沒有指明方向關鍵字,則預設是src or dst關鍵字。

第三種是協議的關鍵字,主要包括fddi,ip,arp,rarp,tcp,udp等型別。fddi指明是在fddi(分布式光纖資料介面網路)上的特定 的網路協議,實際上它是"ether"的別名,fddi和ether具有類似的源位址和目的位址,所以可以將fddi協議包當作ether的包進行處理和 分析。其他的幾個關鍵字就是指明了監聽的包的協議內容。如果沒有指定任何協議,則tcpdump將會監聽所有協議的資訊包。

除了這三種型別的關鍵字之外,其他重要的關鍵字如下:gateway, broadcast,less,greater,還有三種邏輯運算,取非運算是 'not ' '! ', 與運算是'and','&&;或運算 是'or' ,'||';這些關鍵字可以組合起來構成強大的組合條件來滿足人們的需要。

舉例來說,想要監聽目標主機為192.168.1.1ip的udp協議或者埠號為80的資訊頭

tcpdump -i wlan0 -nn -vv dst 192.168.1.1 and ud

porp

ort80

在需要使用括號的地方,需要加反斜槓轉義。

Android的網路抓包工具Tcpdump

網路抓包,windows下可以用wireshark,linux和android下可以使用tcpdump.詳細使用請參考官方文件 你需要android裝置的root許可權,將tcpdump二進位制檔案push到android裝置目錄下如 system bin目錄下 抓包命令 adb shell tcp...

基於Ubuntu的Redis的安裝

方法二 手動安裝 step2 解壓 step3 移動 step4 生成 step5 測試 step6 安裝 開啟ubuntu終端,依次輸入下面兩行 即可 sudo apt get update sudo apt get install redis server 判斷是否安裝成功 使用tar解壓安裝包...

基於virtualbox學習ubuntu 基礎知識

一 環境搭建 二 一些基礎命令 1 儲存退出vim編輯 vim命令進入編輯文件,按i進入編輯模式。按esc鍵跳到命令模式,該模式下 q 回車鍵退出vim編輯,更多見 2 stat和fstat函式返回包含所有檔案屬性的乙個資訊結構 3 可用man 1 ls或man s1 ls命令檢視ls命令手冊頁。4...