WireShark过滤解析HTTP/TCP

 

过滤器的使用:

  可利用“&&”(表示“与”)和“||”(表示“或”)来组合使用多个限制规则,

比如“(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上传的文件

 

HTTP分析

  TCP协议规定HTTP进程的服务器端口号为80,通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。(注意这里指的是服务器开发的端口80)HTTP服务器则在那个端口监听客户端发送过来的请求。

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包,包括请求和响应

  

 参考这里  十六进制截取 

TCP完整分析:

  在连个连接建立的时候,SYN包里面会把彼此TCP最大的报文段长度,在局域网内一般都是1460.如果发送的包比最大的报文段长度长的话就要分片了,
被分片出来的包,就会被标记了“TCP segment of a reassembled PDU”,可以参考下图,看一下,被标记了的包的SEQ和ACK都和原来的包一致。

捕捉断开连接的数据包
tcp.window_size == 0 && tcp.flags.reset != 1

TCP三次握手:创建TCP连接
1、A端SYN=1,ACK=0 SequenceNumber=XXX
2、B端SYN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
3、A端SYN=0,ACK=1 SequenceNumber=XXX+1 Acknowledgement=YYY+1 这个TCP负载中已经可以包含业务数据了。

TCP链接撤销:
1、A端FIN=1,ACK=1 SequenceNumber=XXX Acknowledgement=YYY
2、B端FIN=1,ACK=1 SequenceNumber=YYY Acknowledgement=XXX+1
3、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 第一次握手 第二次握手 第1、3次挥手 第三次握手

  

转载于:https://www.cnblogs.com/kxdblog/p/4203924.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值