博客專欄

        EEPW首頁 > 博客 > 簡單的tcpdump抓包使用總結:抓取指定ip、指定網卡、指定端口的包

        簡單的tcpdump抓包使用總結:抓取指定ip、指定網卡、指定端口的包

        發布人:電子禪石 時間:2022-03-01 來源:工程師 發布文章

        1.今天由于需要抓包研究網絡問題,所以研究了一下抓取指定ip、指定網卡、指定端口的包并且輸入到文件中


        2 tcpdump與Wireshark介紹


        在網絡問題的調試中,tcpdump應該說是一個必不可少的工具,和大部分linux下優秀工具一樣,它的特點就是簡單而強大。它是基于Unix系統的命令行式的數據包****工具,可以抓取流動在網卡上的數據包。


        默認情況下,tcpdump不會抓取本機內部通訊的報文。根據網絡協議棧的規定,對于報文,即使是目的地是本機,也需要經過本機的網絡協議層,所以本機通訊肯定是通過API進入了內核,并且完成了路由選擇。【比如本機的TCP通信,也必須要socket通信的基本要素:src ip port dst ip port】


        如果要使用tcpdump抓取其他主機MAC地址的數據包,必須開啟網卡混雜模式,所謂混雜模式,用最簡單的語言就是讓網卡抓取任何經過它的數據包,不管這個數據包是不是發給它或者是它發出的。一般而言,Unix不會讓普通用戶設置混雜模式,因為這樣可以看到別人的信息,比如telnet的用戶名和密碼,這樣會引起一些安全上的問題,所以只有root用戶可以開啟混雜模式,開啟混雜模式的命令是:ifconfig en0 promisc, en0是你要打開混雜模式的網卡。


        Linux抓包原理:


        Linux抓包是通過注冊一種虛擬的底層網絡協議來完成對網絡報文(準確的說是網絡設備)消息的處理權。當網卡接收到一個網絡報文之后,它會遍歷系統中所有已經注冊的網絡協議,例如以太網協議、x25協議處理模塊來嘗試進行報文的解析處理,這一點和一些文件系統的掛載相似,就是讓系統中所有的已經注冊的文件系統來進行嘗試掛載,如果哪一個認為自己可以處理,那么就完成掛載。


        當抓包模塊把自己偽裝成一個網絡協議的時候,系統在收到報文的時候就會給這個偽協議一次機會,讓它來對網卡收到的報文進行一次處理,此時該模塊就會趁機對報文進行窺探,也就是把這個報文完完整整的復制一份,假裝是自己接收到的報文,匯報給抓包模塊。


        Wireshark是一個網絡協議檢測工具,支持Windows平臺、Unix平臺、Mac平臺,一般只在圖形界面平臺下使用Wireshark,如果是Linux的話,直接使用tcpdump了,因為一般而言Linux都自帶的tcpdump,或者用tcpdump抓包以后用Wireshark打開分析。


        在Mac平臺下,Wireshark通過WinPcap進行抓包,封裝的很好,使用起來很方便,可以很容易的制定抓包過濾器或者顯示過濾器,具體簡單使用下面會介紹。Wireshark是一個免費的工具,只要google一下就能很容易找到下載的地方。


        所以,tcpdump是用來抓取數據非常方便,Wireshark則是用于分析抓取到的數據比較方便。


        3 tcpdump使用


        3.1 語法


        類型的關鍵字


        host(缺省類型): 指明一臺主機,如:host 210.27.48.2


        net: 指明一個網絡地址,如:net 202.0.0.0


        port: 指明端口號,如:port 23


        確定方向的關鍵字


        src: src 210.27.48.2, IP包源地址是210.27.48.2


        dst: dst net 202.0.0.0, 目標網絡地址是202.0.0.0


        dst or src(缺省值)


        dst and src


        協議的關鍵字:缺省值是監聽所有協議的信息包


        fddi


        ip


        arp


        rarp


        tcp


        udp


        其他關鍵字


        gateway


        broadcast


        less


        greater


        常用表達式:多條件時可以用括號,但是要用轉義


        非 : ! or “not” (去掉雙引號)


        且 : && or “and”


        或 : || or “or”


         


         


        例如我本次抓取指定ip、指定網卡、指定端口的包。語句如下:


        tcpdump -i eth3 tcp port 5236 and host 172.16.24.13 -w dm.cap

        tcpdump命令:


        -i 指定網卡,本次指定eth3


        port指定端口


        host指定ip


        -w dm.cap抓取到dm.cap文件中。

        ————————————————


        原文鏈接:https://blog.csdn.net/DHCliaozheng/article/details/105969016


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: 網絡

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 开化县| 连州市| 镇坪县| 安多县| 读书| 涟水县| 丰城市| 阳高县| 新巴尔虎右旗| 成都市| 阿鲁科尔沁旗| 筠连县| 涞源县| 临海市| 罗田县| 荆州市| 手机| 化德县| 灵寿县| 镇康县| 凤凰县| 望奎县| 郓城县| 五常市| 屯留县| 新竹县| 长白| 崇阳县| 新源县| 自贡市| 奈曼旗| 会理县| 河西区| 宁阳县| 洪雅县| 合水县| 桐乡市| 新田县| 曲周县| 阿尔山市| 蛟河市|