压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  wireshark 數(shù)據(jù)包分析技巧總結(jié)

  wireshark 過濾表達(dá)式的比較運(yùn)算符一覽 (類 C 形式和對(duì)應(yīng)的英語形式)

  enighish           C-like           含義和實(shí)例

  eq                 ==               等于       ip.src == 10.0.0.5

  ne                 !=               不等于     ip.src != 10.0.0.5

  gt                 >                大于       frame.len > 10

  lt                 <                少于       frame.len < 128

  ge                 >=               大于等于    frame.len ge 0x100

  le                 <=               小于等于    frame.len <= 0x20

  注意, ip.len le 1500 這里的 "ip.len" 含義是,從網(wǎng)絡(luò)層分組的 IP 頭部算起,加上傳輸層分段頭部,加上應(yīng)用層數(shù)據(jù),

  總長度小于200字節(jié),同理,"frame.len"需要從鏈路層乙太網(wǎng)幀頭開始計(jì)算;

  默認(rèn)情況下,wireshark 主界面最上方的數(shù)據(jù)包概況的 length 字段,計(jì)算的是從鏈路層乙太網(wǎng)幀頭開始計(jì)算的大小,我們可以

  通過 ip.len , tcp.len , udp.len 等來指定從數(shù)據(jù)包的哪一層開始計(jì)算大小并顯示

  一個(gè)簡單的捕獲實(shí)例分析如下:

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  【常用的捕捉過濾表達(dá)式】

  僅捕獲來自或去往 192.168.1.0 網(wǎng)段中的數(shù)據(jù)包

  net 192.168.0.0/24

  注意,以 net 操作符開頭的過濾表達(dá)式不支持顯示過濾,僅支持捕獲時(shí)過濾,并且只要是用于捕捉過濾表達(dá)式的關(guān)鍵字,都不能用于顯示過濾表達(dá)式,反之亦然

  僅捕獲來自或去往 192.168.0.1 主機(jī)的數(shù)據(jù)包

  host 172.18.5.4

  僅捕獲來自 192.168.0.0.1 主機(jī)的數(shù)據(jù)包

  src host 192.168.0.1

  僅捕獲與  www.evil.com  的通信中,非 HTTP 協(xié)議以及非 SMTP 協(xié)議的數(shù)據(jù)包

  host www.evil.com and not (port 80 or port 25)

  僅捕獲 TCP 協(xié)議,并且端口在 1501~1549 的數(shù)據(jù)包

  tcp portrange 1501-1549

  注意,關(guān)鍵字“portrange”僅支持 libpcap 0.9.1 以及更新版本,如果是 0.9.1 以前的版本,使用下面過濾表達(dá)式:

  (tcp[0:2] > 1500 and tcp[0:2] < 1550) or (tcp[2:2] > 1500 and tcp[2:2] < 1550)

  其中,

  tcp[0:2] 表示從 TCP 分段頭部的第一個(gè)字節(jié)開始(0+1),總長度為2字節(jié)(2)的字節(jié)序列,而這就是源端口號(hào)

  tcp[2:2] 表示從 TCP 分段頭部的第三個(gè)字節(jié)開始(2+1),總長度為2字節(jié)(2)的字節(jié)序列,而這就是目的端口號(hào)

  上面這種語法:

  一,支持捕捉過濾與顯示過濾

  二,支持匹配 IP 分組頭部,TCP分段頭部,UDP 用戶數(shù)據(jù)報(bào)頭部,ICMP 網(wǎng)際控制消息協(xié)議數(shù)據(jù)包,以太網(wǎng)數(shù)據(jù)幀,以及其它多種格式的數(shù)據(jù)包頭部結(jié)構(gòu)中特定的字段(字節(jié)序列),

  考慮如下過濾表達(dá)式

  ip[8:1]==1

  僅顯示 IP 從分組頭部的第九個(gè)字節(jié)開始(8+1),總長度為1字節(jié)(1),其“值”為 10進(jìn)制1 的數(shù)據(jù)包

  查看相關(guān) RFC 文檔對(duì) IP 分組頭部結(jié)構(gòu)的定義,其第九個(gè)字節(jié)為 TTL(Time To Live),這將會(huì)顯示所有 IP 分組頭部的 TTL=1 的數(shù)據(jù)包

  為什么 TTL 的值如此重要?

  我們知道,UNIX / Linux 平臺(tái)的 traceroute 工具,以及 windows 平臺(tái)的 tracert 工具,用來檢測(cè)并輸出與指定目標(biāo)之間,經(jīng)過的所有網(wǎng)絡(luò)設(shè)備或主機(jī)節(jié)點(diǎn),

  每經(jīng)過一個(gè)節(jié)點(diǎn),計(jì)算為一跳(hop),正常情況下,源主機(jī)發(fā)出的數(shù)據(jù)包,為了保證能順利到達(dá)目的主機(jī),其 TTL 值應(yīng)該在 40 以上,因?yàn)橹虚g經(jīng)過的每個(gè)節(jié)點(diǎn)會(huì)將收到的數(shù)據(jù)包 TTL 值減 1,然后判斷其值是否為 0,如果不為 0,則轉(zhuǎn)發(fā)該數(shù)據(jù)包給下一跳,如果為 0,直接丟棄這個(gè)數(shù)據(jù)包,然后給源主機(jī)回送一個(gè) ICMP 類型為11(Time to live exceeded in transit,傳輸中 TTL 值耗盡)的數(shù)據(jù)包,

  注意,

  一,這個(gè)回送的 ICMP 包,其 IP 頭部的 TTL 值不可能為 1,至少也在40以上,否則當(dāng)它被“前一跳”接收時(shí),前一跳節(jié)點(diǎn)減去1后,判斷其為0,則直接丟棄,那么這個(gè)通知 TTL值耗盡的數(shù)據(jù)包就不可能正確的回傳給源主機(jī)

  二,這個(gè)回送的 ICMP 包,其 IP 頭部的源地址字段,就是這個(gè)節(jié)點(diǎn)自身的 IP 地址

  tracert / traceroute 工具正是利用了上述這兩個(gè)特性,向因特網(wǎng)上發(fā)出目標(biāo)地址相同,但是每次 TTL 值 遞增1 的數(shù)據(jù)包,它首先發(fā)出的數(shù)據(jù)包 TTL=1,然后接收到的第一個(gè)節(jié)點(diǎn)將其減 1 后判斷,發(fā)現(xiàn)其為 0,于是丟棄這個(gè)數(shù)據(jù)包,向源主機(jī)返回 TTL 耗盡的 ICMP包,這個(gè)數(shù)據(jù)包的源地址字段,泄漏了第一個(gè)節(jié)點(diǎn)的 IP 地址給源主機(jī)上的 tracert / traceroute 進(jìn)程,后者向屏幕輸出相關(guān) IP信息,

  同理,源主機(jī)發(fā)出的第二個(gè)數(shù)據(jù)包 TTL=2,第一個(gè)節(jié)點(diǎn)收到后減 1,判斷不為 0,于是轉(zhuǎn)發(fā)給“下一跳”,第二個(gè)節(jié)點(diǎn)收到后減 1,判斷為 0,丟棄,然后返回給源主機(jī)一個(gè) TTL耗盡的 ICMP 包,其中帶有第二個(gè)節(jié)點(diǎn)的 IP 地址,于是源主機(jī)上的 tracert / traceroute 進(jìn)程繼續(xù)向屏幕輸出相關(guān)信息。。。。

  多數(shù)情況下,地球上實(shí)際距離再遠(yuǎn)的兩個(gè)主機(jī),中間的節(jié)點(diǎn)數(shù)也不會(huì)超過 40,因此利用上述原理,tracert / traceroute 進(jìn)程只需發(fā)出 10 或 20 個(gè) TTL 分別為1~10 或者 1~20 的“探測(cè)”包,就可以向用戶展示中間經(jīng)過的所有設(shè)備列表

  試想,我們運(yùn)行 wireshark 的主機(jī)剛好位于第 5 個(gè)節(jié)點(diǎn),那么源主機(jī)發(fā)來的 TTL=5 的探測(cè)包,將在經(jīng)過前面 “4 跳”后,到達(dá)我們的主機(jī)上,其 TTL=1,于是 wireshark 的 ip[8:1]==1 表達(dá)式可以用來捕獲探測(cè)本機(jī)是否存在的數(shù)據(jù)包,并且我們可以從捕獲的這個(gè)探測(cè)包的源 IP 地址,查詢到發(fā)出探測(cè)包的源主機(jī)的物理地址

  當(dāng)我們運(yùn)行 wireshark 的 Linux 主機(jī)是作為源主機(jī)想要探測(cè)的目標(biāo)的前端網(wǎng)關(guān)防火墻時(shí),這點(diǎn)尤其重要:我們可以將 wireshark 捕獲的 TTL=1 數(shù)據(jù)包的源 IP ,加入到 iptables 的入站鏈中并丟棄,或者設(shè)置成轉(zhuǎn)發(fā)給我們后臺(tái)的服務(wù)器,但是不向源主機(jī)回送 TTL 耗盡的數(shù)據(jù)包,避免泄漏我們的網(wǎng)關(guān)防火墻 IP 地址

  回想一下你用使用 tracert / traceroute 的經(jīng)驗(yàn),是不是曾經(jīng)碰到過,中間“某一跳”的 IP 部分為     *       *        *

  就是這個(gè)道理

  下面的截圖驗(yàn)證了上面一堆廢話:

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  *****僅捕獲“單播”流量,如果你只想捕獲進(jìn)出本機(jī)的數(shù)據(jù)包,使用下面的表達(dá)式可以幫助你排除本地網(wǎng)絡(luò)中的“噪聲”———例如廣播和組播通告:

  not broadcast and not multicast

  *****不要被下面這個(gè)看起來很復(fù)雜的表達(dá)式嚇到,它的效果是僅捕捉使用 HTTP 的 GET 請(qǐng)求方法的數(shù)據(jù)包:

  port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420

  我們來分析一下這個(gè)表達(dá)式的語義,首先,port 80 指定 HTTP 協(xié)議,童鞋們應(yīng)該都知道,

  再來,HTTP 的請(qǐng)求方法是緊隨在 TCP 頭部后面的字段,其中,ASCII 字符的“G”,其16進(jìn)制為 0x47,字符“E”的16進(jìn)制為 0x45,字符“T”的16進(jìn)制為

  0x54,

  在 HTTP 1.1 標(biāo)準(zhǔn)中,要求在方法名稱后接一個(gè)“空格”字符,這個(gè)不可打印的空格字符,其16進(jìn)制為 0x20,

  于是我們知道,捕獲 TCP 頭部后面為 0x47455420 的4字節(jié)序列(GET加上空格字符共4字節(jié)),就等于捕獲了 HTTP GET 請(qǐng)求數(shù)據(jù)包,

  我們還需要知道 TCP 頭部的長度為多少字節(jié),這樣才能定位16進(jìn)制值的 “GET[space]” 字串的準(zhǔn)確位置,

  從每個(gè)數(shù)據(jù)包的 TCP 頭部的第十三個(gè)字節(jié)開始,長度為4位(bit,比特)的半個(gè)字節(jié)(1 byte = 8 bits),給出了該數(shù)據(jù)包的 TCP 頭部長度,因此,上面表達(dá)式中的 tcp[12:1] 部分,先獲取 TCP 頭部的第十三個(gè)字節(jié)(12+1=13),但是由于頭部長度信息只保存在該字節(jié)的前面4位中,因此 (tcp[12:1] & 0xf0) >> 2  的作用就是扣掉后面的4位(這4位屬于6位“保留位”中的前4位),計(jì)算出 TCP 頭部的“凈”長度,

  得出 TCP 頭部長度后,例如典型的20字節(jié),那么從第二十一個(gè)字節(jié)開始,長度為4字節(jié)的字節(jié)序列,就是 HTTP 的請(qǐng)求方法,對(duì)應(yīng)上面表達(dá)式的  tcp[((tcp[12:1] & 0xf0) >> 2):4]  部分

  綜上所述,

  port 80   指定 HTTP 協(xié)議

  tcp[((tcp[12:1] & 0xf0) >> 2):4]   定位 HTTP 請(qǐng)求方法 字段

  0x47455420   指定 HTTP 請(qǐng)求方法為  GET[space]

  對(duì)上面內(nèi)容感覺頭暈的童鞋,請(qǐng)參考下面的 TCP 頭部結(jié)構(gòu)示意圖,這樣就一目了然

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  *****下面這個(gè)表達(dá)式用來捕捉“沖擊波”蠕蟲病毒產(chǎn)生的網(wǎng)絡(luò)通信流量,它利用的是 RPC 協(xié)議的漏洞:

  dst port 135 and tcp port 135 and ip[2:2]==48

  Welchia 蠕蟲同樣利用 RPC 協(xié)議的漏洞,但是我們有更好的檢測(cè)這只蠕蟲的捕捉表達(dá)式:

  icmp[icmptype]==icmp-echo and ip[2:2]==92 and icmp[8:4]==0xAAAAAAAA

  我們來分析一下該表達(dá)式的語義,它搜索長度為92字節(jié)的 icmp echo request

  (ICMP 回顯請(qǐng)求)數(shù)據(jù)包,而且該ICMP數(shù)據(jù)包的有效載荷起始部分為連續(xù)4字節(jié)長的16進(jìn)制值0xAA,而這就是當(dāng)Welchia 蠕蟲嘗試危害一個(gè)系統(tǒng)前的特征

  *****許多蠕蟲嘗試通過與其它主機(jī)上的 135,445,1433 端口建立連接,來進(jìn)行傳播,

  下面這則捕捉過濾表達(dá)式,可以檢測(cè)絕大多數(shù)類型的蠕蟲,因?yàn)樗梢圆蹲侥切﹣碜员镜鼐钟蚓W(wǎng)中的目標(biāo)端口為 135,445,1433 的 TCP SYN 數(shù)據(jù)包(請(qǐng)求連接,SYN 標(biāo)識(shí)位的值不為 0 )

  dst port 135 or dst port 445 or dst port 1433  and tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0 and src net 192.168.0.0/24

  是系統(tǒng)管理員或運(yùn)維工程師的童鞋,可以用上面介紹的三則捕捉過濾表達(dá)式,來檢測(cè)你的局域網(wǎng)中是否有機(jī)器感染了蠕蟲病毒,而且正在嘗試進(jìn)行傳播,感染其它機(jī)器

  還有一件事需要注意,如果你用 SSH 遠(yuǎn)程連接到服務(wù)器(包括 Linux 下的 OpenSSH 以及 windows 下的 3389 終端),并且在服務(wù)器上運(yùn)行 wireshark ,那么 wireshark 會(huì)通過檢測(cè)“環(huán)境變量”來智能的過濾掉你與服務(wù)器通信的流量,這里過濾的意思是不顯示或不捕捉,而非防火墻那樣阻擋數(shù)據(jù)包;

  下面列出這些 wireshark 可能會(huì)探測(cè)的環(huán)境變量,并且給出相應(yīng)的“默認(rèn)過濾”表達(dá)式;如果你想要 wireshark 在服務(wù)器上捕捉或顯示你與服務(wù)器的遠(yuǎn)程通信流量,只需要將這些表達(dá)式中的 not 關(guān)鍵字移除即可,

  其中,

  *****粗體關(guān)鍵字   srcport    srchost   dstport   dsthost

  需要分別替換成你的 SSH 通信的源端口,源主機(jī) IP 地址,目標(biāo)端口,目標(biāo)主機(jī) IP 地址,注意,由于 TCP 通信管道是雙向的,這意味著,srcport 可能是你托管機(jī)房中的 SSH 服務(wù)器的端口 22;也可能是你的 SSH 客戶端的臨時(shí)動(dòng)態(tài)端口;需要根據(jù)具體情況賦值(取決于你要查看的是那個(gè)方向上的流量),其它三個(gè)關(guān)鍵字也是同理;

  *****粗體關(guān)鍵字  addr_family  的取值只能有2種: “ip” 或 “ip6”,分別對(duì)應(yīng) IPv4 與 IPv6

  Environment Variable

  Resultant Filter

  SSH_CONNECTION not (tcp port srcport and addr_family host srchost and tcp port dstport and addr_family host dsthost)

  SSH_CLIENT

  not (tcp port srcport and addr_family host srchost and tcp port dstport)

  REMOTEHOST

  not addr_family host host

  DISPLAY not addr_family host host

  CLIENTNAME

  not tcp port 3389

  上面內(nèi)容援引自

  http://wiki.wireshark.org/CaptureFilters#Further_Information

  【常用的顯示過濾表達(dá)式】

  僅顯示帶有目標(biāo)IP層廣播地址的數(shù)據(jù)包

  ip.dst==255.255.255.255

  僅顯示帶有目標(biāo)鏈路層廣播地址的數(shù)據(jù)包

  arp

  在顯示過濾表達(dá)式中,邏輯運(yùn)算符 == 等同于 eq

  但是需要注意,使用 eq 時(shí),前后的比較值必須有空格,而 == 不需要與前后的比較值留空格

  ( and 與 && 也是同理)

  例如

  ip.src eq 192.168.10.0/24 and ip.dst eq 192.168.10.0/24

  等同于

  ip.src==192.168.10.0/24&&ip.dst==192.168.10.0/24

  等同于

  ip.src == 192.168.10.0/24 && ip.dst == 192.168.10.0/24

  上面是僅顯示局域網(wǎng)中主機(jī)(工作站)與主機(jī)之間,或者主機(jī)與內(nèi)網(wǎng)服務(wù)器(以及網(wǎng)關(guān))之間的通信流量,不包含

  從內(nèi)網(wǎng)到外部網(wǎng)絡(luò)以及到Internet的通信流量,這對(duì)處在“混雜模式”工作狀態(tài)的網(wǎng)卡,用來檢測(cè)內(nèi)網(wǎng)主機(jī)之間的掃描,攻擊流量(例如ARP欺騙),有一定的幫助

  僅顯示“帶有特定的發(fā)送端建議接收端設(shè)置的接收窗口大小值的數(shù)據(jù)包”

  tcp.window_size == 64239

  這個(gè)表達(dá)式會(huì)匹配在數(shù)據(jù)包列表的 Info 字段的所有 Win=64239 的數(shù)據(jù)包

  參考下面這張截圖:

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  僅顯示TCP頭部中標(biāo)志字段中的SYN與ACK位被“置位”(設(shè)置為1)的數(shù)據(jù)包

  tcp.flags.syn == 1 and tcp.flags.ack ==1

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  僅顯示TCP頭部中標(biāo)志字段中的PSH與ACK位被“置位”(設(shè)置為1)的數(shù)據(jù)包

  tcp.flags.push eq 1&&tcp.flags.ack eq 1

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  一種標(biāo)識(shí)由 windows 主機(jī)發(fā)送和接收的數(shù)據(jù)包的辦法

  smb || nbns || dcerpc || nbss || dns

 生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  檢測(cè)本地或者內(nèi)網(wǎng)中是否存在沖擊波蠕蟲病毒(Sasser worm)的方法

  ls_ads.opnum==0x09

  僅顯示UDP(用戶數(shù)據(jù)報(bào))的有效載荷起始處包含 0x81 0x60 0x03 這3個(gè)字節(jié)序列的任意數(shù)據(jù)包,(每字節(jié),如0x81,占8位)

  并且跳過占8個(gè)字節(jié)的UDP頭部,也就是說,從第9個(gè)字節(jié)開始計(jì)算,總長度為3字節(jié)的 81 60 03 字節(jié)序列,

  注意這3個(gè)字節(jié)序列的值僅意味著16進(jìn)制表示法。(用于匹配本地的,非開放式的分組協(xié)議)

  udp[8:3]==81:60:03

  類似的還有

  eth.src[4:2]==78:e9

  在上面這個(gè)例子中,將從以太網(wǎng) MAC 源地址的第5位開始計(jì)算,總長度為2字節(jié),并且匹配 78  e9 字節(jié)序列的數(shù)據(jù)包,

  例如,源 MAC 地址為  00:00:29:4c:78:e9  的數(shù)據(jù)包將被顯示

  也可以通過使用匹配操作符,來搜索出現(xiàn)在一個(gè)字段或協(xié)議的任何位置的特征字符,例如,

  僅顯示在 udp 頭部,或者其有效載荷的任何位置處,包含3個(gè)特定的字符序列: 0x81,0x60,0x53 的數(shù)據(jù)包

  udp contains 81:60:03

  僅顯示 SMTP(端口25)與 ICMP 協(xié)議相關(guān)的流量(郵件交換,與收發(fā)電子郵件相關(guān)的流量)

  tcp.port eq 25 or icmp

  僅顯示“TCP 緩沖區(qū)已滿,發(fā)送方指示接收方停止發(fā)送數(shù)據(jù)”的數(shù)據(jù)包

  tcp.window_size == 0 && tcp.flags.reset != 1

  使用下面這個(gè)“分片“過濾表達(dá)式,可以僅顯示 MAC 地址的廠商標(biāo)識(shí)符部分(OUI),你可以通過指定特定 OUI 來顯示來自相關(guān)設(shè)備制造商的數(shù)據(jù)包,例如只顯示和

  DELL 機(jī)器相關(guān)的流量:

  eth.addr[0:3]==00:06:5B

  通過使用正則表達(dá)式,匹配操作符使得搜索數(shù)據(jù)包的應(yīng)用層文本字符串和字節(jié)序列成為可能,這需要使用 Perl 語言的正則表達(dá)式語法,

  注意,該功能依賴于 libpcre 庫,需要安裝

  僅顯示 HTTP 請(qǐng)求的 URI 中(完整 URI = GET請(qǐng)求頭的值 + HOST 請(qǐng)求頭的值),其字符串以 "gl=se" 結(jié)尾的數(shù)據(jù)包

  注意此處的美元符號(hào),不屬于請(qǐng)求 URI 的一部分,它是 PCRE 匹配的字符串結(jié)束標(biāo)記

  http.request.uri matches "gl=se$"

  常見的語法陷阱

  要過濾掉(來自或去往 10.43.54.65 的數(shù)據(jù)包) ,你可能會(huì)使用

  ip.addr != 10.43.54.65  ,但這個(gè)表達(dá)式不能達(dá)到你預(yù)期的效果

  應(yīng)該使用下面的過濾表達(dá)式:

  ! ( ip.addr == 10.43.54.65 )

  或者

  ! (ip.src == 10.43.54.65 or ip.dst == 10.43.54.65)

  注意,這個(gè)例子會(huì)“顯示”與 10.43.54.65 相關(guān)的 arp 廣播流量

  其它 IP 同樣道理,例如

  ! ( ip.addr == 192.168.1.30 ) && !arp

  將過濾掉與192.168.1.30相關(guān)的任何流量,并且過濾掉任何 IP 地址的 arp 廣播流量

  *****假設(shè)你要找出任何網(wǎng)頁在線播放 flash 視頻的數(shù)據(jù)包,使用下面的表達(dá)式,注意,該表達(dá)式僅適用于那些 swf 視頻地址直接曝露在瀏覽器請(qǐng)求的 URI 中的數(shù)據(jù)包,

  如果視頻地址通過 web 應(yīng)用程序根據(jù)提交的查詢字符串“動(dòng)態(tài)生成”,那么下面的表達(dá)式或許不能達(dá)到你預(yù)期的效果:

  http.request.uri contains "flv" or http.request.uri contains "swf" or http.content_type contains "flash" or http.content_type contains "video"

  對(duì)于那些在線播放的“流媒體”視頻,更常見的做法是服務(wù)器將視頻分成很多小“塊”傳送,每“塊”的大小不超過 1 MBytes,在一個(gè)前導(dǎo)的 HTTP 響應(yīng)中首先給出當(dāng)前要傳送的“視頻塊”大小信息,然后再將這個(gè)“視頻塊”劃分成多個(gè)長度為 1506 Bytes (這個(gè)大小已經(jīng)達(dá)到當(dāng)前鏈路層的 MTU 上限),的重新組裝的 TCP 分段,

  通過每發(fā)2~3個(gè)這種分段,客戶端回送一個(gè)長度 50 Bytes 的 ACK 分段,如此重復(fù)數(shù)十次,才能將一個(gè)“視頻塊”完整的傳遞到客戶端,此時(shí)客戶端的瀏覽器插件,

  例如 adobe shockwave flash 播放器,就可以播放(需要先解碼)這部分“已緩沖”的視頻塊,

  在用戶觀看這段視頻內(nèi)容的期間,瀏覽器繼續(xù)請(qǐng)求下一個(gè)視頻塊,

  當(dāng)然,對(duì)于總長度較小的視頻以及擁有較大出口帶寬的客戶端,也可能連續(xù)接收和緩存多個(gè)視頻塊,這就是我們看到播放器進(jìn)度條的緩沖部分一次就走到幾乎最右側(cè)的原因;

  由于視頻服務(wù)器上的 web server 會(huì)將這種“視頻塊”的 MIME 類型指定為  application/octet-stream  并包含在攜帶該視頻塊統(tǒng)計(jì)信息的前導(dǎo) HTTP Content-Type 響應(yīng)頭中發(fā)送,因此,我們只需在 wireshark 的顯示過濾表達(dá)式中添加這個(gè)關(guān)鍵字,就可以捕獲這種分塊傳輸?shù)牧髅襟w視頻的前導(dǎo) HTTP 響應(yīng)包:

  http.content_type contains "application/octet-stream"

  并且,由實(shí)際組成該視頻塊的后續(xù) “8位字節(jié)流”(octet-stream)格式的 TCP 分段,每一個(gè)都填滿了當(dāng)前鏈路層的 MTU 上限(1506 Bytes),因此,下面這個(gè)過濾表達(dá)式,可以捕捉到實(shí)際的流媒體數(shù)據(jù)包:

  frame.len==1506

  當(dāng)然,并非只有流媒體能填滿鏈路層 MTU 上限,所以,你可以通過 邏輯 AND 操作符,在后面添加視頻服務(wù)器的 IP 或域名來限定

  下面這些捕獲的數(shù)據(jù)包,就是“包含視頻塊大小信息的前導(dǎo) HTTP 響應(yīng)”與“組成視頻塊的 TCP 分段”:

  生產(chǎn)環(huán)境下的 wireshark 數(shù)據(jù)包捕獲,過濾,分析技巧與實(shí)戰(zhàn)

  僅顯示包含特定“緩存控制”風(fēng)格的 HTTP 響應(yīng):

  http.cache_control != "private, x-gzip-ok="""

  上面這個(gè)例子將顯示服務(wù)器發(fā)送的所有“非 google 風(fēng)格”緩存指示的 HTTP 響應(yīng),這個(gè)不太好理解,有興趣的童鞋可以自行測(cè)試,

  下面這個(gè)表達(dá)式有相同的效果,但是更加復(fù)雜:

  (((((http.cache_control != "private, x-gzip-ok=""") && !(http.cache_control == "no-cache, no-store, must-revalidate, max-age=0, proxy-revalidate, no-transform, private")) && !(http.cache_control == "max-age=0, no-store")) && !(http.cache_control == "private")) && !(http.cache_control == "no-cache")) && !(http.cache_control == "no-transform")

  先不論你是否熟悉 HTTP 協(xié)議中,和文檔的緩存策略相關(guān)的內(nèi)容,但至少通過這個(gè)例子可以看出,要通過 邏輯 AND(&&) 連接后續(xù)的否定表達(dá)式,則邏輯非(!)需要放在前面,且用括號(hào)將表達(dá)式括起來,不能使用類似  !=   的錯(cuò)誤語法

  包括這個(gè)例子在內(nèi)的后續(xù)表達(dá)式實(shí)例,都引用自

  http://www.askapache.com/software/sniff-http-to-debug-apache-htaccess-and-httpdconf.html

  有興趣的可以自行參考

  *****根據(jù) HTTP 響應(yīng)的狀態(tài)碼來過濾某些特定類型的數(shù)據(jù)包:

  1 #404: page not found

  2 http.response.code == 404

  3 #200: OK

  4 http.response.code == 200

  第一個(gè)過濾表達(dá)式僅顯示“404錯(cuò)誤,找不到頁面”的 HTTP 響應(yīng)包

  第二個(gè)過濾表達(dá)式僅顯示“200,OK”的 HTTP 響應(yīng)包

  *****根據(jù) HTTP 請(qǐng)求的方法類型來過濾某些特定類型的  HTTP 請(qǐng)求包

  http.request.method == "POST" || http.request.method == "PUT"

  上面這個(gè)例子中,僅顯示 HTTP POST 方法(用于提交用戶輸入的查詢字符串或者 HTML 表單數(shù)據(jù))或者 HTTP PUT 方法(用于向服務(wù)器上傳文檔資源)的 HTTP 請(qǐng)求包

  *****根據(jù) HTTP 請(qǐng)求或者響應(yīng)的“內(nèi)容類型”(Content Type)頭部,來過濾 HTTP 請(qǐng)求包

  http.content_type[0:4] == "text"

  上面這個(gè)例子中,僅顯示 HTTP Content Type 頭部,以字符串“text”開頭的數(shù)據(jù)包,注意,這里的 [0:4] 代表,從第0個(gè)字節(jié)開始計(jì)算,總長度為4字節(jié)的字符串

  http.content_type contains "javascript"

  上面這個(gè)例子中,僅顯示內(nèi)容類型為 javascript 的數(shù)據(jù)包,可以用來找出那些帶有 javascript 腳本,即將或者已經(jīng)被瀏覽器本地渲染和加載的 HTML 頁面

  *****僅顯示內(nèi)容類型以 “image” 開頭的 HTTP 請(qǐng)求或響應(yīng)包

  http.content_type[0:5] == "image"

  上面這個(gè)例子中,將會(huì)匹配 MIME 類型為 image/(gif|jepg|png|etc)  的數(shù)據(jù)包,實(shí)際上就是用來檢測(cè)瀏覽器是否收到包含這些圖片資源的 HTML 頁面。
    
    文章來源:http://shayi1983.blog.51cto.com/4681835/1558161

 

上一篇:安卓防火墻 PS DroidWall

下一篇:Kali linux 自學(xué)心得