Tcpdump抓包工具是一款非常經典的系統工具軟件,Tcpdump數據抓包正版占用內存小,操作非常的便捷,你可以通過該軟件來輕松抓取需要的數據,有需要的就來Tcpdump抓包工具最新版下載!
Tcpdump是Linux平臺下一款非常知名的強大的網絡數據抓包的分析工具,它可以將網絡中傳送的數據包完全截獲下來提供分析。支持針對網絡層、協議、主機、網絡或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。其總的輸出格式為:系統時間 來源主機.端口 > 目標主機.端口 數據包參數。作為互聯網上經典的的系統管理員必備工具,tcpdump以其強大的功能,靈活的截取策略,成為每個高級的系統管理員分析網絡,排查問題等所必備的工具之一。
參數
tcpdump支持相當多的不同參數,如使用-i參數指定tcpdump監聽的網絡接口,這在計算機具有多個網絡接口時非常有用,使用-c參數指定要監聽的數據包數量,使用-w參數指定將監聽到的數據包寫入文件中保存,等等。
然而更復雜的tcpdump參數是用于過濾目的,這是因為網絡中流量很大,如果不加分辨將所有的數據包都截留下來,數據量太大,反而不容易發現需要的數據包。使用這些參數定義的過濾規則可以截留特定的數據包,以縮小目標,才能更好的分析網絡中存在的問題。tcpdump使用參數指定要監視數據包的類型、地址、端口等,根據具體的網絡問題,充分利用這些過濾規則就能達到迅速定位故障的目的。請使用man tcpdump查看這些過濾規則的具體用法。
安全
顯然為了安全起見,不用作網絡管理用途的計算機上不應該運行這一類的網絡分析軟件,為了屏蔽它們,可以屏蔽內核中的bpfilter偽設備。一般情況下網絡硬件和TCP/IP堆棧不支持接收或發送與本計算機無關的數據包,為了接收這些數據包,就必須使用網卡的混雜模式,并繞過標準的TCP/IP 堆棧才行。在FreeBSD下,這就需要內核支持偽設備bpfilter。因此,在內核中取消bpfilter支持,就能屏蔽tcpdump之類的網絡分析工具。
并且當網卡被設置為混雜模式時,系統會在控制臺和日志文件中留下記錄,提醒管理員留意這臺系統是否被用作攻擊同網絡的其他計算機的跳板。
May 15 16:27:20 host1 /kernel: fxp0: promiscuous mode enabled
雖然網絡分析工具能將網絡中傳送的數據記錄下來,但是網絡中的數據流量相當大,如何對這些數據進行分析、分類統計、發現并報告錯誤卻是更關鍵的問題。網絡中的數據包屬于不同的協議,而不同協議數據包的格式也不同。因此對捕獲的數據進行解碼,將包中的信息盡可能的展示出來,對于協議分析工具來講更為重要。昂貴的商業分析工具的優勢就在于它們能支持很多種類的應用層協議,而不僅僅只支持tcp、udp等低層協議。
解碼
從上面tcpdump的輸出可以看出,tcpdump對截獲的數據并沒有進行徹底解碼,數據包內的大部分內容是使用十六進制的形式直接打印輸出的。顯然這不利于分析網絡故障,通常的解決辦法是先使用帶-w參數的tcpdump 截獲數據并保存到文件中,然后再使用其他程序進行解碼分析。當然也應該定義過濾規則,以避免捕獲的數據包填滿整個硬盤。
1、默認系統里邊沒有安裝有tcpdump的,無法直接使用
2、里我們可以使用yum來直接安裝它
yum install -y tcpdump
3、如果忘記了軟件的用法,可以使用 tcpdump --help 來查看一下使用方法
4、一般我們的服務器里邊只有一個網卡,使用tcpdump可以直接抓取數據包,但是這樣查看太麻煩了,所以都會添加參數來進行獲取的。
例如我截取本機(192.168.31.147)和主機114.114.114.114之間的數據
tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114
5、還有截取全部進入服務器的數據可以使用以下的格式
tcpdump -n -i eth0 dst 192.168.31.147
或者服務器有多個IP 可以使用參數
tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157
6、抓取全部進入服務器的TCP數據包使用以下的格式,大家可以參考下
tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp
從本機出去的數據包
tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157
tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157 and port ! 22 and tcp
或者可以條件可以是or 和 and 配合使用即可篩選出更好的結果。
一、抓取特定網卡 80端口的鏈接情況:
1、我們先用ifconfig查看網卡名稱:
2、輸入下來命令后,打開百度網頁:
可以捕獲到如下信息,截取一部分:
關于上面輸出的內容,格式注釋如下:
第二列:網絡協議 IP
第三列:發送方的ip地址+端口號,其中 221.5.75.35是 ip,而 http是端口號,即80
第四列:箭頭 >, 表示數據流向
第五列:接收方的ip地址+端口號,其中 localhost.localdomain.是 ip,本機,而 42884是端口號。
第六列:冒號
第七列:數據包內容,包括Flags 標識符,seq 號,ack 號,win 窗口,數據長度 length,其中 [P.] 表示 PUSH 標志位為 1。
其中Flags 標識符有以下幾種:
[S] : SYN(開始連接)
[P] : PSH(推送數據)
[F] : FIN (結束連接)
[R] : RST(重置連接)
[.] : 沒有 Flag,由于除了 SYN 包外所有的數據包都有ACK,所以一般這個標志也可表示 ACK
二、如果你覺得命令行不習慣,還是喜歡用wireshark來查看數據包,那么你還可以使用tcpdump來保存.cap文件,然后導出cap文件,就可以用wireshark軟件來打開查看了。
tcpdump-i ens33 port80-w ./20210616.cap(左右滑動一下)
注釋:
-w:參數指定將監聽到的數據包寫入文件中保存,file.cap就是該文件。
./:保存的路徑。
通過ls,可以看到該文件已生成:
輸入linux服務器ip地址(即我虛擬機的ip地址)、賬號、密碼
下載cap文件:
下載到window物理機上:
雙擊,我們就可以使用wireshark來查看數據包了
三、基于協議進行過濾,比如就只抓起icmp報文。
tcpdump icmp
輸完上述命令后,我打開網頁,又進行了ping測試,先ping8.8.8.8,然后中止了,再ping 114.114.114.114.
來看看,命令輸出的結果:
23:05:28.009283 IP http://public1.114dns.com > localhost.localdomain: ICMP echo reply, id 24125, seq 3, length 64
四、-n參數
上面我們看到了,ping 114.114.114.114,tcpdump輸出顯示是域名形式,如果我們希望顯示ip地址,可以加一個參數:-n (即不把ip轉化成域名,直接顯示 ip,避免執行 DNS lookups 的過程,速度會快很多)
tcpdump icmp -n
五、捕獲特定的目的IP地址的數據包。
我在linux服務器上進行ping多個地址(114.114.114.114、223.5.5.5、223.6.6.6),然后我tcpdump只需114.114.114.114的。
tcpdumpicmp-nanddsthost114.114.114.114(左右滑動一下)
and:后面就是加了限制條件,只捕獲指定的目的ip地址為114.114.114.114的報文。
TcpDump最新版是一款優秀的網絡數數分析軟件。TcpDump提供了足夠的參數來讓我們選擇如何處理得到的數據,同時不帶任何參數的TcpDump將搜索系統中第一個網絡接口,并顯示它截獲的所有數據。TcpDump最新版可以根據使用者的定義對網絡上的數據包進行截獲的包進行分析,軟件以其強大的功能,靈活的截取策略,成為每個高級的系統管理員分析網絡,排查問題等所必備的工具之一。