WireShark過濾解析HTTP/TCP

 

過濾器的使用:html

  可利用「&&」(表示「與」)和「||」(表示「或」)來組合使用多個限制規則,python

好比「(http && ip.dst == 64.233.189.104) || dns」和ip.src != 10.1.2.3 or ip.dst != 10.4.5.6緩存

若是須要將某次捕獲記錄保存下來方便之後再分析的話則可保存爲記錄文件,有時候咱們只想將通過過濾的記錄保存下來,只要選中「Displayed」便可服務器

 

技巧:File–Export Objects–HTTP 選擇須要導出的包,而後點擊save As按鈕,用於查看後臺上傳和下載的文件:wireshark導出http下載或post上傳的文件cookie

 

HTTP分析tcp

  TCP協議規定HTTP進程的服務器端口號爲80,一般,由HTTP客戶端發起一個請求,創建一個到服務器指定端口(默認是80端口)的TCP鏈接。(注意這裏指的是服務器開發的端口80)HTTP服務器則在那個端口監聽客戶端發送過來的請求。post

http——Packet Counter      http總的統計

http.request.method == "GET" http GET請求
http.response==1  http全部的響應包 
http.response==1 && http.response.code==200 響應請求成功的包
http.response==1 && http.response.code==201 201 created 提示知道新文件的URL,成功請求並建立了新的資源
http.response==1 && http.response.code==304 客戶端已經緩存,不帶響應體
http.response==1 && http.response.code==302 客戶端繼續使用原有URI

http.request==1 //過濾全部的http請求,貌似也可使用http.reques
http.request.method == "GET"
http.request.method == "POST"
http.request.uri == "/img/logo-edu.gif"
http contains "GET"
http contains "HTTP/1."
// GET包
http.request.method == "GET" && http contains "Host: "
http.request.method == "GET" && http contains "User-Agent: "
// POST包
http.request.method == "POST" && http contains "Host: "
http.request.method == "POST" && http contains "User-Agent: "
// 響應包
http contains "HTTP/1.1 200 OK" && http contains "Content-Type: "
http contains "HTTP/1.0 200 OK" && http contains "Content-Type: "
必定包含以下
Content-Type:

http.host==magentonotes.com 或者http.host contains magentonotes.com //過濾通過指定域名的http數據包,這裏的host值不必定是請求中的域名
http.request.method==POST過濾全部請求方式爲POST的http請求包,注意POST爲大寫

http.cookie contains guid //過濾含有指定cookie的http數據包
http.request.full_uri==」 http://task.browser.360.cn/online/setpoint」 //過濾含域名的整個url則須要使用http.request.full_uri
http.content_type == 「text/html」 //過濾content_type是text/html的http響應、post包,即根據文件類型過濾http數據包
http.server //過濾全部含有http頭中含有server字段的數據包
http.request.version == "HTTP/1.1" //過濾HTTP/1.1版本的http包,包括請求和響應

  

 參考這裏  十六進制截取 ui

TCP完整分析:url

  在連個鏈接創建的時候,SYN包裏面會把彼此TCP最大的報文段長度,在局域網內通常都是1460.若是發送的包比最大的報文段長度長的話就要分片了,
被分片出來的包,就會被標記了「TCP segment of a reassembled PDU」,能夠參考下圖,看一下,被標記了的包的SEQ和ACK都和原來的包一致。spa

捕捉斷開鏈接的數據包
tcp.window_size == 0 && tcp.flags.reset != 1

TCP三次握手:建立TCP鏈接
一、A端SYN=1,ACK=0 SequenceNumber=XXX
二、B端SYN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
三、A端SYN=0,ACK=1 SequenceNumber=XXX+1 Acknowledgement=YYY+1 這個TCP負載中已經能夠包含業務數據了。

TCP連接撤銷:
一、A端FIN=1,ACK=1 SequenceNumber=XXX Acknowledgement=YYY
二、B端FIN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
三、A端FIN=0,ACK=1 SequenceNumber=XXX+1 Acknowledgement=YYY+1

這裏是Github做爲Client主動發起關閉鏈接的請求,這裏的FIN=FINish

Github 發Fin(x=6831)包; ——FIN(X)
本機收到上面的包後,作出ACK(x+1=6832)響應,跟Github說我收到了~,你別再發了; ——ACK(X+1)
你要關了,那我也準備關吧~ 因而發Fin(y=1054)包,你準備好了麼?; ——FIN(Y)
Github準備好了,給出響應ACK(y+1=1055),告訴本機準備好了; ——ACK(Y+1)

 

TCP完整分析:

第一次握手 102
tcp.flags.syn == 1 and tcp.flags.ack == 0
第二次握手 103 重傳一次 403
tcp.flags.syn == 1 and tcp.flags.ack == 1

第三次握手 ACK=1 seq=1 109-4
tcp.flags.ack == 1
&& tcp.seq==1&&tcp.ack==1&&!tcp.flags.fin==1&&!http&&tcp.len==0
不能只抓取第三次握手的數據包。

客戶端發起關閉請求 104
tcp.flags.fin==1 && tcp.flags.ack==1&&ip.src==102.168.0.120
服務器響應關閉鏈接 94
tcp.flags.fin==1 && tcp.flags.ack==1&&ip.src!=102.168.0.120
TCP傳輸數據量:
!http&&!(tcp.flags.syn == 1 and tcp.flags.ack == 0)&&!(tcp.flags.syn == 1 and tcp.flags.ack == 1)&&!(tcp.flags.fin==1 && tcp.flags.ack==1)&&!(tcp.flags.ack == 1&& tcp.seq==1&&tcp.ack==1&&!tcp.flags.fin==1&&!http&&tcp.len==0)
http 第一次握手 第二次握手 第一、3次揮手 第三次握手
相關文章
相關標籤/搜索