女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

超詳細的網絡抓包神器tcpdump使用指南

Linux愛好者 ? 來源:Linux愛好者 ? 2023-01-09 14:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

tcpdump 是一款強大的網絡抓包工具,它使用 libpcap 庫來抓取網絡數據包,這個庫在幾乎在所有的 Linux/Unix 中都有。熟悉 tcpdump 的使用能夠幫助你分析調試網絡數據,本文將通過一個個具體的示例來介紹它在不同場景下的使用方法。不管你是系統管理員,程序員,云原生工程師還是 yaml 工程師,掌握 tcpdump 的使用都能讓你如虎添翼,升職加薪。

1. 基本語法和使用方法

tcpdump 的常用參數如下:

$tcpdump-ieth0-nn-s0-vport80
  • -i : 選擇要捕獲的接口,通常是以太網卡或無線網卡,也可以是 vlan 或其他特殊接口。如果該系統上只有一個網絡接口,則無需指定。
  • -nn : 單個 n 表示不解析域名,直接顯示 IP;兩個 n 表示不解析域名和端口。這樣不僅方便查看 IP 和端口號,而且在抓取大量數據時非常高效,因為域名解析會降低抓取速度。
  • -s0 : tcpdump 默認只會截取前 96 字節的內容,要想截取所有的報文內容,可以使用 -s numbernumber 就是你要截取的報文字節數,如果是 0 的話,表示截取報文全部內容。
  • -v : 使用 -v-vv-vvv 來顯示更多的詳細信息,通常會顯示更多與特定協議相關的信息。
  • port 80 : 這是一個常見的端口過濾器,表示僅抓取 80 端口上的流量,通常是 HTTP。

額外再介紹幾個常用參數:

  • -p : 不讓網絡接口進入混雜模式。默認情況下使用 tcpdump 抓包時,會讓網絡接口進入混雜模式。一般計算機網卡都工作在非混雜模式下,此時網卡只接受來自網絡端口的目的地址指向自己的數據。當網卡工作在混雜模式下時,網卡將來自接口的所有數據都捕獲并交給相應的驅動程序。如果設備接入的交換機開啟了混雜模式,使用 -p 選項可以有效地過濾噪聲。
  • -e : 顯示數據鏈路層信息。默認情況下 tcpdump 不會顯示數據鏈路層信息,使用 -e 選項可以顯示源和目的 MAC 地址,以及 VLAN tag 信息。例如:
$tcpdump-n-e-c5notip6

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonbr-lan,link-typeEN10MB(Ethernet),capturesize262144bytes
18:27:53.61986524:5e0c:17:af>0069:233b,ethertypeIPv4(0x0800),length1162:192.168.100.20.51410>180.176.26.193.58695:Flags[.],seq2045333376:2045334484,ack3398690514,win751,length1108
18:27:53.6264900069:233b>24:5e0c:17:af,ethertypeIPv4(0x0800),length68:220.173.179.66.36017>192.168.100.20.51410:UDP,length26
18:27:53.62689324:5e0c:17:af>0069:233b,ethertypeIPv4(0x0800),length1444:192.168.100.20.51410>220.173.179.66.36017:UDP,length1402
18:27:53.6288370069:233b>24:5e0c:17:af,ethertypeIPv4(0x0800),length1324:46.97.169.182.6881>192.168.100.20.59145:Flags[P.],seq3058450381:3058451651,ack14349180,win502,length1270
18:27:53.62909624:5e0c:17:af>0069:233b,ethertypeIPv4(0x0800),length54:192.168.100.20.59145>192.168.100.1.12345:Flags[.],ack3058451651,win6350,length0
5packetscaptured

顯示 ASCII 字符串

-A 表示使用 ASCII 字符串打印報文的全部數據,這樣可以使讀取更加簡單,方便使用 grep 等工具解析輸出內容。-X 表示同時使用十六進制和 ASCII 字符串打印報文的全部數據。這兩個參數不能一起使用。例如:

$tcpdump-A-s0port80

抓取特定協議的數據

后面可以跟上協議名稱來過濾特定協議的流量,以 UDP 為例,可以加上參數 udp 或 protocol 17,這兩個命令意思相同。

$tcpdump-ieth0udp
$tcpdump-ieth0proto17

同理,tcp 與 protocol 6 意思相同。

抓取特定主機的數據

使用過濾器 host 可以抓取特定目的地和源 IP 地址的流量。

$tcpdump-ieth0host10.10.1.1

也可以使用 srcdst 只抓取源或目的地:

$tcpdump-ieth0dst10.10.1.20

將抓取的數據寫入文件

使用 tcpdump 截取數據報文的時候,默認會打印到屏幕的默認輸出,你會看到按照順序和格式,很多的數據一行行快速閃過,根本來不及看清楚所有的內容。不過,tcpdump 提供了把截取的數據保存到文件的功能,以便后面使用其他圖形工具(比如 wireshark,Snort)來分析。

-w 選項用來把數據報文輸出到文件:

$tcpdump-ieth0-s0-wtest.pcap

行緩沖模式

如果想實時將抓取到的數據通過管道傳遞給其他工具來處理,需要使用 -l 選項來開啟行緩沖模式(或使用 -c 選項來開啟數據包緩沖模式)。使用 -l 選項可以將輸出通過立即發送給其他命令,其他命令會立即響應。

$tcpdump-ieth0-s0-lport80|grep'Server:'

組合過濾器

過濾的真正強大之處在于你可以隨意組合它們,而連接它們的邏輯就是常用的 與/AND/&&或/OR/||非/not/!

andor&&
oror||
notor!

2. 過濾器

關于 tcpdump 的過濾器,這里有必要單獨介紹一下。

機器上的網絡報文數量異常的多,很多時候我們只關系和具體問題有關的數據報(比如訪問某個網站的數據,或者 icmp 超時的報文等等),而這些數據只占到很小的一部分。把所有的數據截取下來,從里面找到想要的信息無疑是一件很費時費力的工作。而 tcpdump 提供了靈活的語法可以精確地截取關心的數據報,簡化分析的工作量。這些選擇數據包的語句就是過濾器(filter)!

Host 過濾器

Host 過濾器用來過濾某個主機的數據報文。例如:

$tcpdumphost1.2.3.4

該命令會抓取所有發往主機 1.2.3.4 或者從主機 1.2.3.4 發出的流量。如果想只抓取從該主機發出的流量,可以使用下面的命令:

$tcpdumpsrchost1.2.3.4

Network 過濾器

Network 過濾器用來過濾某個網段的數據,使用的是 CIDR 模式。可以使用四元組(x.x.x.x)、三元組(x.x.x)、二元組(x.x)和一元組(x)。四元組就是指定某個主機,三元組表示子網掩碼為 255.255.255.0,二元組表示子網掩碼為 255.255.0.0,一元組表示子網掩碼為 255.0.0.0。例如,

抓取所有發往網段 192.168.1.x 或從網段 192.168.1.x 發出的流量:

$tcpdumpnet192.168.1

抓取所有發往網段 10.x.x.x 或從網段 10.x.x.x 發出的流量:

$tcpdumpnet10

和 Host 過濾器一樣,這里也可以指定源和目的:

$tcpdumpsrcnet10

也可以使用 CIDR 格式:

$tcpdumpsrcnet172.16.0.0/12

Proto 過濾器

Proto 過濾器用來過濾某個協議的數據,關鍵字為 proto,可省略。proto 后面可以跟上協議號或協議名稱,支持 icmp, igmp, igrp, pim, ah, esp, carp, vrrp, udptcp。因為通常的協議名稱是保留字段,所以在于 proto 指令一起使用時,必須根據 shell 類型使用一個或兩個反斜杠(/)來轉義。Linux 中的 shell 需要使用兩個反斜杠來轉義,MacOS 只需要一個。

例如,抓取 icmp 協議的報文:

$tcpdump-nproto\icmp
#或者
$tcpdump-nicmp

Port 過濾器

Port 過濾器用來過濾通過某個端口的數據報文,關鍵字為 port。例如:

$tcpdumpport389

3. 理解 tcpdump 的輸出

截取數據只是第一步,第二步就是理解這些數據,下面就解釋一下 tcpdump 命令輸出各部分的意義。

2106.995846IP(tos0x0,ttl64,id45646,offset0,flags[DF],protoTCP(6),length64)
192.168.1.106.56166>124.192.132.54.80:Flags[S],cksum0xa730(correct),seq992042666,win65535,options[mss1460,nop,wscale4,nop,nop,TSval663433143ecr0,sackOK,eol],length0

2107.030487IP(tos0x0,ttl51,id0,offset0,flags[DF],protoTCP(6),length44)
124.192.132.54.80>192.168.1.106.56166:Flags[S.],cksum0xedc0(correct),seq2147006684,ack992042667,win14600,options[mss1440],length0

2107.030527IP(tos0x0,ttl64,id59119,offset0,flags[DF],protoTCP(6),length40)
192.168.1.106.56166>124.192.132.54.80:Flags[.],cksum0x3e72(correct),ack2147006685,win65535,length0

最基本也是最重要的信息就是數據報的源地址/端口和目的地址/端口,上面的例子第一條數據報中,源地址 ip 是 192.168.1.106,源端口是 56166,目的地址是 124.192.132.54,目的端口是 80> 符號代表數據的方向。

此外,上面的三條數據還是 tcp 協議的三次握手過程,第一條就是 SYN 報文,這個可以通過 Flags [S] 看出。下面是常見的 TCP 報文的 Flags:

  • [S] : SYN(開始連接)
  • [.] : 沒有 Flag
  • [P] : PSH(推送數據)
  • [F] : FIN (結束連接)
  • [R] : RST(重置連接)

而第二條數據的 [S.] 表示 SYN-ACK,就是 SYN 報文的應答報文。

4. 例子

下面給出一些具體的例子,每個例子都可以使用多種方法來獲得相同的輸出,你使用的方法取決于所需的輸出和網絡上的流量。我們在排障時,通常只想獲取自己想要的內容,可以通過過濾器和 ASCII 輸出并結合管道與 grep、cut、awk 等工具來實現此目的。

例如,在抓取 HTTP 請求和響應數據包時,可以通過刪除標志 SYN/ACK/FIN 來過濾噪聲,但還有更簡單的方法,那就是通過管道傳遞給 grep。在達到目的的同時,我們要選擇最簡單最高效的方法。下面來看例子。

提取 HTTP 用戶代理

從 HTTP 請求頭中提取 HTTP 用戶代理:

$tcpdump-nn-A-s1500-l|grep"User-Agent:"

通過 egrep 可以同時提取用戶代理和主機名(或其他頭文件):

$tcpdump-nn-A-s1500-l|egrep-i'User-Agent:|Host:'

只抓取 HTTP GET 和 POST 流量

抓取 HTTP GET 流量:

$tcpdump-s0-A-vv'tcp[((tcp[12:1]&0xf0)>>2):4]=0x47455420'

也可以抓取 HTTP POST 請求流量:

$tcpdump-s0-A-vv'tcp[((tcp[12:1]&0xf0)>>2):4]=0x504f5354'

注意:該方法不能保證抓取到 HTTP POST 有效數據流量,因為一個 POST 請求會被分割為多個 TCP 數據包。

上述兩個表達式中的十六進制將會與 GET 和 POST 請求的 ASCII 字符串匹配。例如,tcp[((tcp[12:1] & 0xf0) >> 2):4] 首先會確定我們感興趣的字節的位置(在 TCP header 之后),然后選擇我們希望匹配的 4 個字節。

提取 HTTP 請求的 URL

提取 HTTP 請求的主機名和路徑:

$ tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:"

tcpdump: listening on enp7s0, link-type EN10MB (Ethernet), capture size 262144 bytes
    POST /wp-login.php HTTP/1.1
    Host: dev.example.com
    GET /wp-login.php HTTP/1.1
    Host: dev.example.com
    GET /favicon.ico HTTP/1.1
    Host: dev.example.com
    GET / HTTP/1.1
    Host: dev.example.com

提取 HTTP POST 請求中的密碼

從 HTTP POST 請求中提取密碼和主機名:

$tcpdump-s0-A-n-l|egrep-i"POST/|pwd=|passwd=|password=|Host:"

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonenp7s0,link-typeEN10MB(Ethernet),capturesize262144bytes
11:25:54.799014IP10.10.1.30.39224>10.10.1.125.80:Flags[P.],seq1458768667:1458770008,ack2440130792,win704,options[nop,nop,TSval461552632ecr208900561],length1341:HTTP:POST/wp-login.phpHTTP/1.1
.....s..POST/wp-login.phpHTTP/1.1
Host:dev.example.com
.....s..log=admin&pwd=notmypassword&wp-submit=Log+In&redirect_to=http%3A%2F%2Fdev.example.com%2Fwp-admin%2F&testcookie=1

提取 Cookies

提取 Set-Cookie(服務端的 Cookie)和 Cookie(客戶端的 Cookie):

$tcpdump-nn-A-s0-l|egrep-i'Set-Cookie|Host:|Cookie:'

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonwlp58s0,link-typeEN10MB(Ethernet),capturesize262144bytes
Host:dev.example.com
Cookie:wordpress_86be02xxxxxxxxxxxxxxxxxxxc43=admin%7C152xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxfb3e15c744fdd6;_ga=GA1.2.21343434343421934;_gid=GA1.2.927343434349426;wordpress_test_cookie=WP+Cookie+check;wordpress_logged_in_86be654654645645645654645653fc43=admin%7C15275102testtesttesttestab7a61e;wp-settings-time-1=1527337439

抓取 ICMP 數據包

查看網絡上的所有 ICMP 數據包:

$tcpdump-nicmp

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonenp7s0,link-typeEN10MB(Ethernet),capturesize262144bytes
1121.590380IP10.10.1.217>10.10.1.30:ICMPechorequest,id27948,seq1,length64
1121.590434IP10.10.1.30>10.10.1.217:ICMPechoreply,id27948,seq1,length64
1127.680307IP10.10.1.159>10.10.1.1:ICMP10.10.1.189udpport59619unreachable,length115

抓取非 ECHO/REPLY 類型的 ICMP 數據包

通過排除 echo 和 reply 類型的數據包使抓取到的數據包不包括標準的 ping 包:

$tcpdump'icmp[icmptype]!=icmp-echoandicmp[icmptype]!=icmp-echoreply'

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonenp7s0,link-typeEN10MB(Ethernet),capturesize262144bytes
11:37:04.041037IP10.10.1.189>10.10.1.20:ICMP10.10.1.189udpport36078unreachable,length156

抓取 SMTP/POP3 協議的郵件

可以提取電子郵件的正文和其他數據。例如,只提取電子郵件的收件人:

$tcpdump-nn-lport25|grep-i'MAILFROM|RCPTTO'

抓取 NTP 服務的查詢和響應

$tcpdumpdstport123

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningoneth0,link-typeEN10MB(Ethernet),capturesize65535bytes
21:02:19.112502IPtest33.ntp>199.30.140.74.ntp:NTPv4,Client,length48
21:02:19.113888IP216.239.35.0.ntp>test33.ntp:NTPv4,Server,length48
21:02:20.150347IPtest33.ntp>216.239.35.0.ntp:NTPv4,Client,length48
21:02:20.150991IP216.239.35.0.ntp>test33.ntp:NTPv4,Server,length48

抓取 SNMP 服務的查詢和響應

通過 SNMP 服務,滲透測試人員可以獲取大量的設備和系統信息。在這些信息中,系統信息最為關鍵,如操作系統版本、內核版本等。使用 SNMP 協議快速掃描程序 onesixtyone,可以看到目標系統的信息:

$onesixtyone10.10.1.10public

Scanning1hosts,1communities
10.10.1.10[public]Linuxtest334.15.0-20-generic#21-UbuntuSMPTueApr240615UTC2018x86_64

可以通過 tcpdump 抓取 GetRequestGetResponse

$ tcpdump -n -s0  port 161 and udp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
2313.725522 IP 10.10.1.159.36826 > 10.10.1.20.161:  GetRequest(28)  .1.3.6.1.2.1.1.1.0
2313.728789 IP 10.10.1.20.161 > 10.10.1.159.36826:  GetResponse(109)  .1.3.6.1.2.1.1.1.0="Linux testmachine 4.15.0-20-generic #21-Ubuntu SMP Tue Apr 24 0615 UTC 2018 x86_64"

切割 pcap 文件

當抓取大量數據并寫入文件時,可以自動切割為多個大小相同的文件。例如,下面的命令表示每 3600 秒創建一個新文件 capture-(hour).pcap,每個文件大小不超過 200*1000000 字節:

$tcpdump-w/tmp/capture-%H.pcap-G3600-C200

這些文件的命名為 capture-{1-24}.pcap,24 小時之后,之前的文件就會被覆蓋。

抓取 IPv6 流量

可以通過過濾器 ip6 來抓取 IPv6 流量,同時可以指定協議如 TCP:

$tcpdump-nnip6proto6

從之前保存的文件中讀取 IPv6 UDP 數據報文:

$tcpdump-nripv6-test.pcapip6proto17

檢測端口掃描

在下面的例子中,你會發現抓取到的報文的源和目的一直不變,且帶有標志位 [S][R],它們與一系列看似隨機的目標端口進行匹配。當發送 SYN 之后,如果目標主機的端口沒有打開,就會返回一個 RESET。這是 Nmap 等端口掃描工具的標準做法。

$ tcpdump -nn

2119.693601 IP 10.10.1.10.60460 > 10.10.1.199.5432: Flags [S], seq 116466344, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
2119.693626 IP 10.10.1.10.35470 > 10.10.1.199.513: Flags [S], seq 3400074709, win 29200, options [mss 1460,sackOK,TS val 3547090332 ecr 0,nop,wscale 7], length 0
2119.693762 IP 10.10.1.10.44244 > 10.10.1.199.389: Flags [S], seq 2214070267, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
2119.693772 IP 10.10.1.199.389 > 10.10.1.10.44244: Flags [R.], seq 0, ack 2214070268, win 0, length 0
2119.693783 IP 10.10.1.10.35172 > 10.10.1.199.1433: Flags [S], seq 2358257571, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
2119.693826 IP 10.10.1.10.33022 > 10.10.1.199.49153: Flags [S], seq 2406028551, win 29200, options [mss 1460,sackOK,TS val 3547090333 ecr 0,nop,wscale 7], length 0
2119.695567 IP 10.10.1.10.55130 > 10.10.1.199.49154: Flags [S], seq 3230403372, win 29200, options [mss 1460,sackOK,TS val 3547090334 ecr 0,nop,wscale 7], length 0
2119.695590 IP 10.10.1.199.49154 > 10.10.1.10.55130: Flags [R.], seq 0, ack 3230403373, win 0, length 0
2119.695608 IP 10.10.1.10.33460 > 10.10.1.199.49152: Flags [S], seq 3289070068, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
2119.695622 IP 10.10.1.199.49152 > 10.10.1.10.33460: Flags [R.], seq 0, ack 3289070069, win 0, length 0
2119.695637 IP 10.10.1.10.34940 > 10.10.1.199.1029: Flags [S], seq 140319147, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
2119.695650 IP 10.10.1.199.1029 > 10.10.1.10.34940: Flags [R.], seq 0, ack 140319148, win 0, length 0
2119.695664 IP 10.10.1.10.45648 > 10.10.1.199.5060: Flags [S], seq 2203629201, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
2119.695775 IP 10.10.1.10.49028 > 10.10.1.199.2000: Flags [S], seq 635990431, win 29200, options [mss 1460,sackOK,TS val 3547090335 ecr 0,nop,wscale 7], length 0
2119.695790 IP 10.10.1.199.2000 > 10.10.1.10.49028: Flags [R.], seq 0, ack 635990432, win 0, length 0

過濾 Nmap NSE 腳本測試結果

本例中 Nmap NSE 測試腳本 http-enum.nse 用來檢測 HTTP 服務的合法 URL。

在執行腳本測試的主機上:

$nmap-p80--script=http-enum.nsetargetip

在目標主機上:

$tcpdump-nnport80|grep"GET/"

GET/w3perl/HTTP/1.1
GET/w-agora/HTTP/1.1
GET/way-board/HTTP/1.1
GET/web800fo/HTTP/1.1
GET/webaccess/HTTP/1.1
GET/webadmin/HTTP/1.1
GET/webAdmin/HTTP/1.1

抓取 DNS 請求和響應

向 Google 公共 DNS 發起的出站 DNS 請求和 A 記錄響應可以通過 tcpdump 抓取到:

$ tcpdump -i wlp58s0 -s0 port 53

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlp58s0, link-type EN10MB (Ethernet), capture size 262144 bytes
1406.879799 IP test.53852 > google-public-dns-a.google.com.domain: 26977+ [1au] A? play.google.com. (44)
1407.022618 IP google-public-dns-a.google.com.domain > test.53852: 26977 1/0/1 A 216.58.203.110 (60)

抓取 HTTP 有效數據包

抓取 80 端口的 HTTP 有效數據包,排除 TCP 連接建立過程的數據包(SYN / FIN / ACK):

$tcpdump'tcpport80and(((ip[2:2]-((ip[0]&0xf)<<2))?-((tcp[12]&0xf0)>>2))!=0)'

將輸出內容重定向到 Wireshark

通常 Wireshark(或 tshark)比 tcpdump 更容易分析應用層協議。一般的做法是在遠程服務器上先使用 tcpdump 抓取數據并寫入文件,然后再將文件拷貝到本地工作站上用 Wireshark 分析。

還有一種更高效的方法,可以通過 ssh 連接將抓取到的數據實時發送給 Wireshark 進行分析。以 MacOS 系統為例,可以通過 brew cask install wireshark 來安裝,然后通過下面的命令來分析:

$sshroot@remotesystem'tcpdump-s0-c1000-nn-w-notport22'|/Applications/Wireshark.app/Contents/MacOS/Wireshark-k-i-

例如,如果想分析 DNS 協議,可以使用下面的命令:

$sshroot@remotesystem'tcpdump-s0-c1000-nn-w-port53'|/Applications/Wireshark.app/Contents/MacOS/Wireshark-k-i-

抓取到的數據:

50964dc8-8fd4-11ed-bfe3-dac502259ad0.pngimg

-c 選項用來限制抓取數據的大小。如果不限制大小,就只能通過 ctrl-c 來停止抓取,這樣一來不僅關閉了 tcpdump,也關閉了 wireshark。

找出發包最多的 IP

找出一段時間內發包最多的 IP,或者從一堆報文中找出發包最多的 IP,可以使用下面的命令:

$tcpdump-nnn-t-c200|cut-f1,2,3,4-d'.'|sort|uniq-c|sort-nr|head-n20

tcpdump:verboseoutputsuppressed,use-vor-vvforfullprotocoldecode
listeningonenp7s0,link-typeEN10MB(Ethernet),capturesize262144bytes
200packetscaptured
261packetsreceivedbyfilter
0packetsdroppedbykernel
108IP10.10.211.181
91IP10.10.1.30
1IP10.10.1.50
  • cut -f 1,2,3,4 -d '.' : 以 . 為分隔符,打印出每行的前四列。即 IP 地址。
  • sort | uniq -c : 排序并計數
  • sort -nr : 按照數值大小逆向排序

抓取用戶名和密碼

本例將重點放在標準純文本協議上,過濾出于用戶名和密碼相關的報文:

$tcpdumpporthttporportftporportsmtporportimaporportpop3orporttelnet-l-A|egrep-i-B5'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|username:|password:|login:|pass|user'

抓取 DHCP 報文

最后一個例子,抓取 DHCP 服務的請求和響應報文,67 為 DHCP 端口,68 為客戶機端口。

$tcpdump-v-nport67or68

tcpdump:listeningonenp7s0,link-typeEN10MB(Ethernet),capturesize262144bytes
1450.059662IP(tos0x10,ttl128,id0,offset0,flags[none],protoUDP(17),length328)
0.0.0.0.68>255.255.255.255.67:BOOTP/DHCP,Requestfrom00xxxx:d5,length300,xid0xc9779c2a,Flags[none]
Client-Ethernet-Address00xxxx:d5
Vendor-rfc1048Extensions
MagicCookie0x63825363
DHCP-MessageOption53,length1:Request
Requested-IPOption50,length4:10.10.1.163
HostnameOption12,length14:"test-ubuntu"
Parameter-RequestOption55,length16:
Subnet-Mask,BR,Time-Zone,Default-Gateway
Domain-Name,Domain-Name-Server,Option119,Hostname
Netbios-Name-Server,Netbios-Scope,MTU,Classless-Static-Route
NTP,Classless-Static-Route-Microsoft,Static-Route,Option252
1450.059667IP(tos0x10,ttl128,id0,offset0,flags[none],protoUDP(17),length328)
0.0.0.0.68>255.255.255.255.67:BOOTP/DHCP,Requestfrom00xxxx:d5,length300,xid0xc9779c2a,Flags[none]
Client-Ethernet-Address00xxxx:d5
Vendor-rfc1048Extensions
MagicCookie0x63825363
DHCP-MessageOption53,length1:Request
Requested-IPOption50,length4:10.10.1.163
HostnameOption12,length14:"test-ubuntu"
Parameter-RequestOption55,length16:
Subnet-Mask,BR,Time-Zone,Default-Gateway
Domain-Name,Domain-Name-Server,Option119,Hostname
Netbios-Name-Server,Netbios-Scope,MTU,Classless-Static-Route
NTP,Classless-Static-Route-Microsoft,Static-Route,Option252
1450.060780IP(tos0x0,ttl64,id53564,offset0,flags[none],protoUDP(17),length339)
10.10.1.1.67>10.10.1.163.68:BOOTP/DHCP,Reply,length311,xid0xc9779c2a,Flags[none]
Your-IP10.10.1.163
Server-IP10.10.1.1
Client-Ethernet-Address00xxxx:d5
Vendor-rfc1048Extensions
MagicCookie0x63825363
DHCP-MessageOption53,length1:ACK
Server-IDOption54,length4:10.10.1.1
Lease-TimeOption51,length4:86400
RNOption58,length4:43200
RBOption59,length4:75600
Subnet-MaskOption1,length4:255.255.255.0
BROption28,length4:10.10.1.255
Domain-Name-ServerOption6,length4:10.10.1.1
HostnameOption12,length14:"test-ubuntu"
T252Option252,length1:10
Default-GatewayOption3,length4:10.10.1.1

5. 總結

本文主要介紹了 tcpdump 的基本語法和使用方法,并通過一些示例來展示它強大的過濾功能。將 tcpdump 與 wireshark 進行組合可以發揮更強大的功效,本文也展示了如何優雅順滑地結合 tcpdump 和 wireshark。如果你想了解更多的細節,可以查看 tcpdump 的 man 手冊。

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據包
    +關注

    關注

    0

    文章

    269

    瀏覽量

    24947
  • 網絡數據
    +關注

    關注

    1

    文章

    44

    瀏覽量

    10252

原文標題:超詳細的網絡抓包神器 tcpdump 使用指南

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    瑞薩電子RA系列微控制器的可擴展性強的配置軟件 (FSP)安裝下載與使用指南

    瑞薩電子RA系列微控制器的可擴展性強的配置軟件 (FSP)安裝下載與使用指南
    的頭像 發表于 06-11 17:21 ?498次閱讀

    TwinCAT3 EtherCAT | 技術集結

    在使用TwinCAT測試EtherCATEOE功能時,我們會發現正常是無法使用Wireshark去進行網絡抓取EtherCAT報文的,今天這篇文章就帶大家來上手EtherCAT
    的頭像 發表于 05-15 18:04 ?2578次閱讀
    TwinCAT3 EtherCAT<b class='flag-5'>抓</b><b class='flag-5'>包</b> | 技術集結

    GaN HEMT的SPICE模型使用指南及示例

    GaN HEMT的SPICE模型使用指南及示例總結 本文檔基于GaN HEMT的實測特性描述了當前版本的模型。該模型專為與PSpice和LTspice配合使用而開發。本文檔首先介紹該模型,然后提供將
    的頭像 發表于 03-11 17:43 ?926次閱讀
    GaN HEMT的SPICE模型<b class='flag-5'>使用指南</b>及示例

    Nexperia SiC MOSFET LTspice模型使用指南

    電子發燒友網站提供《Nexperia SiC MOSFET LTspice模型使用指南.pdf》資料免費下載
    發表于 02-13 17:21 ?1次下載
    Nexperia SiC MOSFET LTspice模型<b class='flag-5'>使用指南</b>

    GD32H7xx電源旁路模式使用指南

    電子發燒友網站提供《GD32H7xx電源旁路模式使用指南.pdf》資料免費下載
    發表于 01-22 17:34 ?0次下載
    GD32H7xx電源旁路模式<b class='flag-5'>使用指南</b>

    tcpdump使用示例

    tcpdump -i eth0 -nn -s0 -v port 80 -i :進行的接口,通常是以太網卡或無線適配器,
    的頭像 發表于 01-06 09:33 ?632次閱讀

    Linux運維必備技能:手把手教你用tcpdump精準

    簡介 網絡數據截獲分析工具。支持針對網絡層、協議、主機、網絡或端口的過濾。并提供and、or、not等邏輯語句幫助去除無用的信息。 tcpdump
    的頭像 發表于 12-24 11:20 ?1140次閱讀

    RTC時鐘使用指南:簡單步驟,實用成果

    今天展示的是RTC時鐘使用指南,輕松學習,完美成果。
    的頭像 發表于 11-08 11:40 ?988次閱讀
    RTC時鐘<b class='flag-5'>使用指南</b>:簡單步驟,實用成果

    CentOS中使用tcpdump

    CentOS中使用tcpdump
    的頭像 發表于 10-28 14:48 ?689次閱讀

    技術指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南

    技術指南 | 深視智能SCI系列光譜共焦位移傳感器快速使用指南
    的頭像 發表于 10-22 08:06 ?538次閱讀
    技術<b class='flag-5'>指南</b> | 深視智能SCI系列光譜共焦位移傳感器快速<b class='flag-5'>使用指南</b>

    一種利用wireshark對遠程服務器/路由器網絡方法

    一種利用wireshark對遠程服務器/路由器網絡方法
    的頭像 發表于 09-21 08:03 ?4771次閱讀
    一種利用wireshark對遠程服務器/路由器<b class='flag-5'>網絡</b><b class='flag-5'>抓</b><b class='flag-5'>包</b>方法

    深視智能SGI系列激光位移傳感器快速使用指南

    深視智能SGI系列激光位移傳感器快速使用指南
    的頭像 發表于 07-27 08:45 ?677次閱讀
    深視智能SGI系列激光位移傳感器快速<b class='flag-5'>使用指南</b>

    深視智能SD33系列小型激光位移傳感器使用指南

    深視智能SD33系列小型激光位移傳感器使用指南
    的頭像 發表于 07-27 08:44 ?855次閱讀
    深視智能SD33系列小型激光位移傳感器<b class='flag-5'>使用指南</b>

    經典藍牙解析說明

    我們更便捷地定位和解決各種技術難題。對于藍牙技術而言,器的作用同樣不可小覷。它強大的捕獲功能讓我們能夠輕松獲取空中傳輸的詳細信息,包括頻率、頻率偏差、長度、信號強度以及具體傳輸
    的頭像 發表于 07-24 09:04 ?3284次閱讀
    經典藍牙<b class='flag-5'>抓</b><b class='flag-5'>包</b>解析說明

    AirKiss配網完成后,向10000端口發送UDP廣播的長度疑問求解

    參考微信 [AirKiss 庫文件使用指南]-Page7,使用AirKiss配網 接收到SSID及PWD完成后設備需要向10000端口發送UDP廣播,其數據長度為1,內容為ack->
    發表于 07-19 07:47