日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网络/命令行抓包工具tcpdump详解

發(fā)布時(shí)間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络/命令行抓包工具tcpdump详解 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

用簡單的話來定義tcpdump,就是:dump the traffic on a network,根據(jù)使用者的定義對(duì)網(wǎng)絡(luò)上的數(shù)據(jù)包進(jìn)行截獲的包分析工具。

tcpdump可以將網(wǎng)絡(luò)中傳送的數(shù)據(jù)包的“頭”完全截獲下來提供分析。它支持針對(duì)網(wǎng)絡(luò)層、協(xié)議、主機(jī)、網(wǎng)絡(luò)或端口的過濾,并提供and、or、not等邏輯語句來幫助你去掉無用的信息。

tcpdump基于底層libpcap庫開發(fā),運(yùn)行需要root權(quán)限。

一、tcpdump安裝

  • 環(huán)境 虛擬機(jī):vmware 15.5.2 os: ubuntu 12.04

  • 安裝tcpdump

  • sudo?apt-get?install?tcpdump

    3. 版本查看

    tcpdump?--h

    tcpdump version 4.0。

    libpcap version 1.1.1 ? ?表示libpcap的版本。

    二、tcpdump參數(shù)

    常用參數(shù)選項(xiàng)說明:

    參數(shù)含義
    -a將網(wǎng)絡(luò)地址和廣播地址轉(zhuǎn)變成名字
    -c在收到指定的包的數(shù)目后,tcpdump就會(huì)停止;
    -d將匹配信息包的代碼以人們能夠理解的匯編格式給出;以可閱讀的格式輸出。
    -dd將匹配信息包的代碼以c語言程序段的格式給出;
    -ddd將匹配信息包的代碼以十進(jìn)制的形式給出;
    -e在輸出行打印出數(shù)據(jù)鏈路層的頭部信息;
    -f將外部的Internet地址以數(shù)字的形式打印出來;
    -l使標(biāo)準(zhǔn)輸出變?yōu)榫彌_行形式;
    -n直接顯示IP地址,不顯示名稱;
    -nn端口名稱顯示為數(shù)字形式,不顯示名稱;
    -t在輸出的每一行不打印時(shí)間戳;
    -v輸出一個(gè)稍微詳細(xì)的信息,例如在ip包中可以包括ttl和服務(wù)類型的信息;
    -vv輸出詳細(xì)的報(bào)文信息;
    -F從指定的文件中讀取表達(dá)式,忽略其它的表達(dá)式;
    -i指定監(jiān)聽的網(wǎng)絡(luò)接口;
    -r從指定的文件中讀取包(這些包一般通過-w選項(xiàng)產(chǎn)生);
    -w直接將包寫入文件中,并不分析和打印出來;
    -T將監(jiān)聽到的包直接解釋為指定的類型的報(bào)文,常見的類型有rpc (遠(yuǎn)程過程調(diào)用)和snmp(簡單 網(wǎng)絡(luò)管理協(xié)議;)

    三、命令選項(xiàng)使用舉例

    1. 截獲主機(jī)收到和發(fā)出的所有數(shù)據(jù)包。

    命令:

    tcpdump

    說明:

    tcpdump截取包默認(rèn)顯示數(shù)據(jù)包的頭部。

    普通情況下,直接啟動(dòng)tcpdump將監(jiān)視第一個(gè)網(wǎng)絡(luò)接口上所有流過的數(shù)據(jù)包。

    基礎(chǔ)格式:時(shí)間 數(shù)據(jù)包類型 源IP 端口/協(xié)議 > 目標(biāo)IP 端口/協(xié)議 協(xié)議詳細(xì)信息

    按下Ctrl+C會(huì)終止tcpdump命令。且會(huì)在結(jié)尾處生成統(tǒng)計(jì)信息。

    終止tcpdump

    2. 指定抓包數(shù)量 -c

    指定抓取2個(gè)數(shù)據(jù)包。

    命令:

    tcpdump?-c?2

    說明:

    最后會(huì)自動(dòng)生成統(tǒng)計(jì)信息。【注意,已經(jīng)切換到管理員了,虛擬機(jī)中要產(chǎn)生數(shù)據(jù)包,可以另外開一個(gè)窗口ping baidu.com后面不再提示】

    ping baidu.com

    3. 將抓包信息寫入文件 -w

    使用-w選項(xiàng)指定記錄文件。

    命令:

    tcpdump?-c?10?-w?tcpdump_test.log

    說明:

    保存的文件不是文本格式,不能直接查看。tcpdump保存的文件的格式是幾乎所有主流的抓包工具軟件都可以讀取。所以可以使用更易讀的圖形界面工具來查看記錄文件。

    4. 讀取記錄文件 -r

    使用-r選項(xiàng)讀取文件。

    命令:

    tcpdump?-r?tcpdump_test.log

    ![讀取記錄文件

    5. 打印出所有可工作的接口 -D

    命令:

    tcpdump?-D

    其中網(wǎng)卡為eth0。

    6. 指定監(jiān)控的網(wǎng)卡 -i

    命令:

    tcpdump?-i?eth0

    如果不指定網(wǎng)卡,默認(rèn)tcpdump只會(huì)監(jiān)視第一個(gè)網(wǎng)絡(luò)接口,一般是eth0。

    7. 顯示更詳細(xì)的數(shù)據(jù)包信息 -v ?-vv

    選項(xiàng)-v,-vv可以顯示更詳細(xì)的抓包信息。

    tcpdump -vtcpdump -vv

    8. 不使用域名反解 -n

    使用-n后,tcpdump會(huì)直接顯示IP地址,不會(huì)顯示域名(與netstat命令相似)。

    9. 增加抓包時(shí)間戳 -tttt選項(xiàng)

    tcpdump的所有輸出打印行中都會(huì)默認(rèn)包含時(shí)間戳信息;時(shí)間戳信息的顯示格式如下

    hh:mm:ss.frac?(nt:?小時(shí):分鐘:秒.)

    此時(shí)間戳的精度與內(nèi)核時(shí)間精度一致, 反映的是內(nèi)核第一次看到對(duì)應(yīng)數(shù)據(jù)包的時(shí)間;

    而數(shù)據(jù)包從物理線路傳遞到內(nèi)核的時(shí)間, 以及內(nèi)核花費(fèi)在此包上的中斷處理時(shí)間都沒有算進(jìn)來;

    使用-tttt選項(xiàng),抓包結(jié)果中將包含抓包日期:

    命令:

    tcpdump?-tttt 增加抓包時(shí)間戳

    四、條件過濾

    1. 過濾:指定需要抓取的協(xié)議

    tcpdump可以只抓某種協(xié)議的包,支持指定以下協(xié)議:「ip,ip6,arp,tcp,udp,wlan」等。

    命令:

    tcpdump?udptcpdump?icmptcpdump?tcptcpdump?arp

    2. 過濾:指定協(xié)議的端口號(hào)

    使用port參數(shù),用于指定端口號(hào)。

    命令:tcpdump tcp port 80

    使用portrange參數(shù),用于指定端口范圍。

    命令:tcpdump tcp portrange 1-1024

    3. 過濾:指定源與目標(biāo)

    src 表示源。

    dst 表示目標(biāo)。

    命令:

    tcpdump src port 8080

    tcpdump dst port 80

    4. 過濾:指定特定主機(jī)的消息包

    使用host指定需要監(jiān)聽的主機(jī)。

    命令:

    tcpdump?host?192.168.1.113

    注意:若使用了host參數(shù)使用了計(jì)算機(jī)名或域名。例tcpdump host shi-pc ,則無法再使用-n選項(xiàng)。

    5. 過濾:指定數(shù)據(jù)包大小

    使用greater(大于)與less(小于)可以指定數(shù)據(jù)包大小的范圍。

    「例:只抓取大于1000字節(jié)的數(shù)據(jù)包。」

    命令:

    tcpdump?greater?1000

    「例:只抓取小于10字節(jié)的數(shù)據(jù)包。」

    命令:

    tcpdump?less?10

    五、 邏輯表達(dá)式

    使用基本邏輯組合拼裝出更精細(xì)的過濾條件。

    1. 邏輯與

    邏輯與關(guān)系,使用and。

    命令:

    tcpdump?tcp?and?host?192.168.1.112tcpdump?tcp?and?src?192.168.1.112?and?port?8080

    2. 邏輯或

    邏輯或關(guān)系,使用or。

    命令:

    tcpdump?host?192.168.1.112?or?192.168.1.113

    3. 邏輯非

    邏輯非關(guān)系,使用not,也可以使用 ! 。

    若使用 ! 必須與其后面的字符隔開一個(gè)空格。

    例:當(dāng)通過ssh協(xié)議遠(yuǎn)程使用tcpdump時(shí),為了避免ssh的數(shù)據(jù)包的輸出,所以一般需要禁止ssh數(shù)據(jù)包的輸出。

    命令:

    tcpdump?not?tcp?port?22tcpdump?!?tcp?port?22

    4. 括號(hào)

    括號(hào)需要使用在引號(hào)內(nèi),或轉(zhuǎn)意使用。否則會(huì)報(bào)錯(cuò)。

    例:抓取非22端口,且主機(jī)為192.168.1.112 和 192.168.1.113的TCP數(shù)據(jù)包。

    命令:

    tcpdump?not?tcp?port?22?and?host?192.168.1.112or192.168.1.113tcpdump?"not?tcp?port?22?and?host?(192.168.1.112?or?192.168.1.113)"tcpdump?not?tcp?port?22?and?host?"(192.168.1.112?or?192.168.1.113)"

    六、其他實(shí)例

    1. 打印所有進(jìn)入或離開sundown的數(shù)據(jù)包.

    tcpdump?host?sundown

    2. 截獲主機(jī)210.27.48.1 和主機(jī)210.27.48.2 或210.27.48.3的通信

    tcpdump?host?210.27.48.1?and?\?(210.27.48.2?or?210.27.48.3?\)??

    3. 如果想要獲取主機(jī)210.27.48.1除了和主機(jī)210.27.48.2之外所有主機(jī)通信的ip包,使用命令:

    tcpdump?ip?host?210.27.48.1?and?!?210.27.48.2

    4. 監(jiān)視所有送到主機(jī)hostname的數(shù)據(jù)包

    tcpdump?-i?eth0?dst?host?hostname

    5. 獲取主機(jī)210.27.48.1接收或發(fā)出的telnet包

    23為telnet的端口

    tcpdump?tcp?port?23?and?host?210.27.48.1

    6. 監(jiān)視本機(jī)的udp 123 端口

    123 為ntp的服務(wù)端口

    tcpdump?udp?port?123?

    7. 使用tcpdump抓取HTTP包

    tcpdump??-XvvennSs?0?-i?eth0?tcp[20:2]=0x4745?or?tcp[20:2]=0x4854
    • 0x4745 為"GET"前兩個(gè)字母"GE",

    • 0x4854 為"HTTP"前兩個(gè)字母"HT"。

    tcpdump 對(duì)截獲的數(shù)據(jù)并沒有進(jìn)行徹底解碼,數(shù)據(jù)包內(nèi)的大部分內(nèi)容是使用十六進(jìn)制的形式直接打印輸出的。

    顯然這不利于分析網(wǎng)絡(luò)故障,通常的解決辦法是先使用帶**-w參數(shù)的tcpdump 截獲數(shù)據(jù)并保存到文件中**,然后再使用其他程序(如Wireshark)進(jìn)行解碼分析。當(dāng)然也應(yīng)該定義過濾規(guī)則,以避免捕獲的數(shù)據(jù)包填滿整個(gè)硬盤。

    六、查看數(shù)據(jù)包完整內(nèi)容

    tcpdump默認(rèn)不顯示數(shù)據(jù)包的詳細(xì)內(nèi)容。

    方法一:

    使用-A參數(shù)能以ASCII碼顯示數(shù)據(jù)包。

    例:只抓取1個(gè)數(shù)據(jù)包,并顯示其內(nèi)容。

    命令:

    tcpdump?-c?1?-A

    方法二:

    使用-X參數(shù)能16進(jìn)制數(shù)與ASCII碼共同顯示數(shù)據(jù)包。

    例:只抓取1個(gè)數(shù)據(jù)包,并顯示其內(nèi)容。

    命令:

    tcpdump?-c?1?-X

    七、tcpdump 與wireshark

    Wireshark(以前是ethereal)是Windows下非常簡單易用的抓包工具,現(xiàn)在也有Linux版本。

    通過Tcpdump抓取的數(shù)據(jù)包分析比較麻煩,要想很方便的分析數(shù)據(jù)包, 我們可以用Tcpdump + Wireshark 的完美組合實(shí)現(xiàn):在 Linux 里抓包,然后在Windows 里分析包。

    保存數(shù)據(jù)包為wireshark能識(shí)別的文件:

    tcpdump?tcp?-i?eth1?-t?-s?0?-c?100?and?dst?port?!?22?and?src?net?192.168.1.0/24?-w?./target.cap

    參數(shù)含義
    tcpip icmp arp rarp 和 tcp、udp、icmp這些選項(xiàng)等都要放到第一個(gè)參數(shù)的位置,用來過濾數(shù)據(jù)報(bào)的類型
    -i eth1只抓經(jīng)過接口eth1的包
    -t不顯示時(shí)間戳
    -s 0抓取數(shù)據(jù)包時(shí)默認(rèn)抓取長度為68字節(jié)。加上-S 0 后可以抓到完整的數(shù)據(jù)包
    -c 100只抓取100個(gè)數(shù)據(jù)包
    dst port ! 22不抓取目標(biāo)端口是22的數(shù)據(jù)包
    src net 192.168.1.0/24數(shù)據(jù)包的源網(wǎng)絡(luò)地址為192.168.1.0/24
    -w ./target.cap保存成cap文件,方便用ethereal(即wireshark)分析

    免責(zé)聲明:本文素材來源網(wǎng)絡(luò),版權(quán)歸原作者所有。如涉及作品版權(quán)問題,請(qǐng)與我聯(lián)系刪除。

    ------------?END?------------


    ●嵌入式專欄精選教程

    ●精選匯總 | ST工具、下載編程工具

    ●精選匯總 | 嵌入式軟件設(shè)計(jì)與開發(fā)

    ●精選匯總 | STM32、MCU、單片機(jī)

    歡迎關(guān)注我的公眾號(hào)回復(fù)“加群”按規(guī)則加入技術(shù)交流群,回復(fù)“1024”查看更多內(nèi)容。

    歡迎關(guān)注我的視頻號(hào):

    點(diǎn)擊“閱讀原文”查看更多分享,歡迎點(diǎn)分享、收藏、點(diǎn)贊、在看。

    總結(jié)

    以上是生活随笔為你收集整理的网络/命令行抓包工具tcpdump详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。