wireshark分兩種表示式,一種是捕獲表示式,這個是在捕獲時用的,根據表示式判斷是否捕獲;
另一種是顯示表示式,是針對捕獲後的包進行過濾。
二者支援的語法不完全一致。
1、埠號為8080或9080,或ip為a或b
tcp port 8080 or tcp port 9080 or host 10.45.4.46 or host 192.168.19.1202、tcp包,主機為a
src or dst host 10.15.4.46 and tcp3、捕獲兩個ip主機間的通訊
一開始我是這麼寫的,分別捕獲兩個方向上的流量,後面感覺這也太冗餘了:
(src host 192.168.17.1 and dst host 192.168.17.128) and (dst host 192.168.17.1 and src host 192.168.17.128 and tcp port 6379) and tcp port 6379於是嘗試了以下的表示式,證明是沒問題的:
host 192.168.17.1 and host 192.168.17.128 and tcp port 63794、乙個重要發現
在本地虛擬機器搭建redis-sentinel集群後,想抓取三颱linux主機間的流量,想著 wireshark 只能抓本機的包,沒想到其實可以用下面的方法來抓包:
抓虛擬機器虛擬出來的網絡卡上的流量即可。
3、抓http post包
tcp[20:2]=0x504f其實,捕獲表示式預設支援的協議裡,是不支援http這種應用層協議的。
好了,如果說,我想抓post請求的http,應該怎麼辦呢,只要捕獲表示式裡面指定tcp頭結束後的前兩個位元組為50 4f(對應「po」)
則可以知道,這個就是post請求。
那這個怎麼用表示式來表達呢?
interesting parts of a tcp header我對照著抓包理解了下,******************************===
tcp[0:2] source port
tcp[2:2] destination port
tcp[4:4] sequence number
tcp[8:4] acknowledgement number
tcp[12] header length
tcp[13] tcp flags
tcp[14:2] window size
tcp[16:2] checksum
tcp[18:2] urgent pointer
tcp[20..60] options or data
tcp[startindex:length],應該就是startindex表示tcp頭的第幾個位元組,從0開始。
後面冒號後面的是長度。
比如tcp[2:2] destination port 意思是從陣列索引2開始,長度為2個位元組的部分,就對應了目的埠。
所以,抓http的post,就應該是:
tcp[20:2]=0x504f4、抓http get請求
tcp[20:2]=0x47455、http響應
發現個問題。上面的只能抓請求,卻不能抓響應內容。
只能看看響應包的特徵了:
原來,響應包的頭兩個位元組為ht啊,(0x4854)。
那麼,表示式看來可以這樣寫:
tcp[20:2]=0x48546、抓取http請求和響應(get和post方法)
tcp[20:2]=0x4745 or tcp[20:2]=0x504f or tcp[20:2]=0x4854表示式這個,可以參考:
以上第二章,3,4,5,6點,都是假設tcp的首部固定為20位元組。那麼20位元組以後,肯定就是資料部分了。
但是,請看下圖:
看完上面,再看下面,首部欄位只佔了高4位,從下圖看出來,整個位元組的十六進製制為「50」,換成二進位制為01010000:
01010000,我們將其右移4位,變成0101.(換成十進位制為5)。
因為該處記錄的是tcp報名頭的長度,是乙個偏移量,單位為4位元組(1段),所以我們用長度×4,就能計數出整個個tcp頭的位元組了。
所以就是5*4=20位元組。
那麼,我們表示式可以這麼寫:
( tcp[12] >> 4 ) << 2,左移四位,右移兩位,最後就是左移兩位。就獲取到資料開始的位置。
彙總下,
tcp[(tcp[12]>>2)]= 0x4745
tcp[(tcp[12]>>2)]= 0x504ftcp[(tcp[12]>>2):2]=0x4745 or tcp[(tcp[12]>>2):2]=0x504f or tcp[(tcp[12]>>2):2]=0x4854
如果你和我一樣,拿著上面第三點的表示式去抓包,可能會發現下面的情況:
先說我們期待的正確的結果是什麼樣的:
但是,我發現結果是下面這樣的:
意思就是,第7個包,即上圖,雖然顯示為tcp,但是實際上,它的tcp首部後,跟著的內容就是http的內容。
這又是怎麼回事?
這裡長話短說,因為這裡,http協議採用了chunk傳輸。
具體的內容可以參考:
1、http請求且ip位址為a或者b
http &&( ip.addr == 10.15.4.46 or ip.addr == 192.168.19.120)1.1 請求源位址為a
ip.src == 10.15.4.462、http請求且埠號為9080
備忘錄 cron表示式詳解
乙個cron表示式有至少6個 也可能7個 有空格分隔的時間元素。按順序依次為 秒 0 59 分鐘 0 59 小時 0 23 天 0 31 月 0 11 星期 1 7 1 sun 或 sun,mon,tue,wed,thu,fri,sat 年份 1970 2099 其中每個元素可以是乙個值 如6 乙個...
正規表示式備忘錄
1 匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 s 匹配任意的空白符 d 匹配任意的數字,例如 d表示前面的數字連續出現2次,即2個數字。b 匹配單詞的開始或結束,也就是單詞的分界處,它只匹配乙個字元位置。匹配字串的開始 匹配字串的結束 2 表匹配次數的符號。重複零次或更多次 它代...
正規表示式備忘錄
說明 匹配除換行符以外的任意字元 w 匹配字母或數字或下劃線或漢字 s 匹配任意的空白符 d 匹配數字 b 匹配單詞的開始或結束 匹配字串的開始 匹配字串的結束 重複零次或更多次 重複一次或更多次 重複零次或一次 重複n次 重複n次或更多次 重複n到m次 語法 說明 w 匹配任意不是字母,數字,下劃...