tcpdump抓取TCP標識位

2021-09-06 08:19:55 字數 1765 閱讀 8219

tcpdump抓取

tcp標識位按每8

位組算,

tcp的標誌位位於第13個

8位組中,如下,第一行一共

32位是

0 - 3個8

位組,第二行是

4-7八位組,第三行是

8-11

八位組,

data offset +reserved

的前四個是第12個

8位組,

reserved

中的後2位+6

個標誌位是第

13個八位組。

以下tcp

報頭

因此第13個八位組結構為

- - + + + + + +前面2

個是保留的,都為

0,後面的

6個根據不同情況有不同值,例如

syn

包 則為

00 0 0 0 0 1 0

這是二進位制轉化為十進位制就是

2因此

tcpdump -ni eth0 tcp[13]==2

就表示syn

包。同理,

syn+ack

包為00 0 1 0 0 1 0

化為十進位制就是

18,因此

tcpdump -ni eth0 tcp[13]==18

表示syn+ack

包。如果想同時抓

syn和

syn+ack

包,則進行

tcp[13]

位值與掩碼進行與運算:

tcp[13] & 2 == 2

此外,還可以利用

tcp[tcpflags]=tcp-syn

這種格式來寫,後面的值可以為

tcp-fin, tcp-syn, tcp-rst, tcppush, tcp-ack, tcp-urg

任意一種。

示例1、列印

tcp會話中的的開始和結束資料報,並且資料報的源或目的不是本地網路上的主機。

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

localnet

, 實際使用時要真正替換成本地網路的名字

2、列印所有源或目的埠是

80,網路層協議為

ipv4

,並且含有資料,而不是

syn,fin

以及ack-only

等不含資料的資料報。

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

ip[2:2]表示整個

ip資料報的長度;

(ip[0]&0xf)<<2)

表示ip

資料報包頭的長度

(ip[0]&0xf

代表包中的

ihl域,而此域的單位為

32bit

,要換算成位元組數需要乘以

4,即左移2);

(tcp[12]&0xf0)>>4

表示tcp

頭的長度,此域的單位也是

32bit

,換算成位元數為

((tcp[12]&0xf0) >> 4)<<2

,即 (tcp[12]&0xf0)>>2)

原文[1]

[2][3]

tcp協議的六個標識位

6個標識位 urg 緊急指標,告訴接收tcp模組緊要指標域指著緊要資料。ack 置1時表示確認號 為合法,為0的時候表示資料段不包含確認資訊,確認號被忽略。psh 置1時請求的資料段在接收方得到後就可直接送到應用程式,而不必等到緩衝區滿時才傳送。rst 置1時重建連線。如果接收到rst位時候,通常發...

Linux使用tcpdump抓取網路資料報示例

tcpdump是linux命令列下常用的的乙個抓包工具,記錄一下平時常用的方式,測試機器系統是ubuntu 12.04。tcpdump的命令格式 tcpdump的引數眾多,通過man tcpdump可以檢視tcpdump的詳細說明,這邊只列一些筆者自己常用的引數 tcpdump i 網絡卡 nnax...

Linux使用tcpdump抓取網路資料報示例

tcpdump是linux命令列下常用的的乙個抓包工具,記錄一下平時常用的方式,測試機器系統是ubuntu 12.04。tcpdump的命令格式 tcpdump的引數眾多,通過man tcpdump可以檢視tcpdump的詳細說明,這邊只列一些筆者自己常用的引數 tcpdump i 網絡卡 nnax...