Wireshark 與 Tcpdump

【1】Wireshark 與 Tcpdumpexpress

Wireshark是Windows下很是容易上手的抓包工具。但在Linux下很難找到一個好用的圖形界面抓包工具。還好有Tcpdump。
咱們能夠用Tcpdump + Wireshark完美組合實現:在Linux環境下抓包,而後導出抓包數據文件,在Windows環境下分析包內容。緩存

tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.11/24 -w ./2019-06-11.cap安全

(1)tcp:ip icmp arp rarp 和 tcp、udp、icmp等等這些選項都要放到第一個參數的位置,用來過濾數據報的類型
(2)-i eth1:只抓通過接口eth1的包
(3)-t: 不顯示時間戳
(4)-s 0:默認抓取數據包時抓取長度僅爲68字節。加上-S 0後能夠抓到完整的數據包
(5)-c 100:只抓取100個數據包
(6)dst port ! 22:不抓取目標端口是22的數據包
(7)src net 192.168.1.11/24:數據包的源網絡地址爲192.168.1.11/24
(8)-w ./2019-06-11.cap:保存成cap格式文件,方便在Windows環境下利用Wireshark分析數據包內容服務器

【2】Wireshark網絡

關於Windows環境下的Wireshark,主要內容請參見《Wireshark學習系列tcp

【3】Tcpdump工具

關於Linux環境下的Tcpdump,主要內容:oop

(1)啓動與關閉學習

啓動:tcpdump優化

關閉:只有將tcpdump進程終止才中止抓包

終止進程方法:ctrl + c 或 kill -9 pID

查詢pID:ps aux | grep tcpdump

(2)tcpdump -help 內容以下

tcpdump [-aAdDefIKlLnNOpqRStuUvxX] [ -B size ] [ -c count ]
        [ -C file_size ] [ -E algo:secret ] [ -F file ] [ -G seconds ]
        [ -i interface ] [ -M secret ] [ -r file ]
        [ -s snaplen ] [ -T type ] [ -w file ] [ -W filecount ]
        [ -y datalinktype ] [ -z command ] [ -Z user ]
        [ expression ]

2.1 抓包選項:

-a:嘗試將ip地址轉化爲名稱。如本機的ip轉化爲主機名進行顯示,tcpdump默認行爲是轉換爲名稱,若需顯示ip地址數字,須要指定-n參數。

-A:將抓取的數據包以ASCAII的形式打印出來(並將數據鏈路層頭部最小化)。

 通常抓取網頁數據時使用該參數,使用該參數能夠打印出human-readable的信息,便於分析包頭內容。

-d:將抓取的數據包按照彙編格式輸出。(暫不清楚用途)

-D:列出可用於抓包的接口。將會列出接口的數值編號和接口名,它們均可以用於"-i"後。

-e:打印數據鏈路層頭部信息(未最小化)。可與A、x、X配合使用。
 當使用-A參數和-X參數,或不指定參數時候,打印出的數據鏈路層信息爲簡化信息,使用此參數可打印鏈路層頭部完整信息。

-f:顯示外部的IPv4 地址時(nt: foreign IPv4 addresses, 可理解爲, 非本機ip地址), 採用數字方式而不是名字.(此選項是用來對付Sun公司的NIS服務器的缺陷(nt: NIS, 網絡信息服務, tcpdump 顯示外部地址的名字時會用到她提供的名稱服務): 此NIS服務器在查詢非本地地址名字時,經常會陷入無盡的查詢循環)。

-I:

-K:跳過TCP校驗和驗證

-l:對標準輸出進行行緩衝(nt: 使標準輸出設備遇到一個換行符就立刻把這行的內容打印出來).在須要同時觀察抓包打印以及保存抓包記錄的時候頗有用. 好比, 可經過如下命令組合來達到此目的:
 ``tcpdump -l | tee dat'' 或者 ``tcpdump -l > dat & tail -f dat''.(nt: 前者使用tee來把tcpdump 的輸出同時放到文件dat和標準輸出中, 然後者經過重定向操做'>', 把tcpdump的輸出放到dat 文件中, 同 時經過tail把dat文件中的內容放到標準輸出中)

-L:列出指定網絡接口所支持的數據鏈路層的類型後退出.(nt: 指定接口經過-i 來指定)

-n:對地址以數字方式顯示,不然顯示爲主機名。也就是說,-n選項強制展現ip、port等數值,而不作主機名解析。做用與-a相反。

-nn:除了-n的做用外,還會把端口顯示爲數值,不然會顯示端口服務名如https等。

-N:不打印出host的域名部分。例如:ip地址爲"192.168.1.100"時,tcpdump將只會打印"192"而不是"192.168.1.100"。

-O:不容許分組匹配代碼優化程序

-p:不將網絡接口設置爲混雜模式

-q:快速打印輸出。即打印不多的協議相關信息,從而輸出行都比較簡短。

-R:

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

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

-u:輸出未解碼的NFS句柄

-U:

-v:當分析和打印的時候,產生詳細的輸出。

-vv:產生比-v更詳細的輸出。

-vvv:產生比-vv更詳細的輸出。

-x:將抓取的數據包以16進制的形式展現出來(並將數據鏈路層頭部最小化)。

-X:將抓取的數據包同時以16進制(hex)和ASCAII的形式展現出來(並將數據鏈路層頭部最小化)。

-B:buffer_size:設置系統捕獲緩衝區大小

-c:計劃抓取的包數量。注意:是指最終要抓取這麼多個知足條件的包。例如:指定"-c 30"將獲取30個包,但可能已經遇到了500個包,只不過只有30個包是知足條件的包。

-C:在將一個原始分組寫入文件以前,檢查文件當前的大小是否超過了參數file_size 中指定的大小。若是超過了指定大小,則關閉當前文件,而後在打開一個新的文件。

 參數 file_size 的單位是兆字節(是1,000,000字節,而不是1,048,576字節)。

-E:用spi@ipaddr algo:secret解密那些以addr做爲地址,而且包含了安全參數索引值spi的IPsec ESP分組。

-F:從文件中讀取抓包的表達式。若使用該選項,則命令行中給定的其餘表達式都將失效。

-G second:選項後面接時間,單位爲秒。抓取報文後隔指定的時間保存一次。

-i:i指interface,指定須要監聽的網絡接口。若未指定該選項,默認爲eth0網絡接口。
 tcpdump命令默認將從系統接口列表中搜尋編號最小的正常通訊接口(不包括loopback接口,要抓取loopback接口使用tcpdump -i lo)
 監聽全部網絡接口,可使用'any'關鍵字

-M:若是tcp報文中存在TCP-MD5選項,則須要用secret做爲共享的驗證碼用於驗證TCP-MD5選選項摘要(詳情可參考RFC 2385)。

-r:從給定的數據包文件中讀取數據。使用"-"表示從標準輸入中讀取。

-s len:設置tcpdump的數據包抓取長度爲len,若是不設置默認將會是65535字節。對於要抓取的數據包較大時,長度設置不夠可能會產生包截斷,若出現包截斷,
    :輸出行中會出現"[|proto]"的標誌(proto實際會顯示爲協議名)。可是抓取len越長,包的處理時間越長,而且會減小tcpdump可緩存的數據包的數量,
    :從而會致使數據包的丟失,因此在能抓取咱們想要的包的前提下,抓取長度越小越好。

-T:將監聽到的包直接解析爲指定的類型的報文,常見的類型有rpc、cnfp、snmp

-w:將抓包數據輸出到文件中而不是標準輸出。能夠同時配合"-G time"選項使得輸出文件每time秒就自動切換到另外一個文件。可經過"-r"選項載入這些文件以進行分析和打印。

-W:限制文件的個數,達到個數後開始從最先的文件覆蓋。

-y type:設置data link type

-z:壓縮dump文件

-Z:改變運行時用戶

-P:指定要抓取的包是流入仍是流出的包。能夠給定的值爲"in"、"out"和"inout",默認爲"inout"。

2.2 輸出選項:

2.3 其餘選項:


Good Good Study, Day Day Up.
順序 選擇 循環 總結

相關文章
相關標籤/搜索