图解用Wireshark进行Http协议分析

一 安装WireShark

    安装完成后,运行,如果出现NPF未运行的提示,如下图;说明可能是装的时候WinPcap未装上;一般安装Wireshark会同时自动安装Winpcap;

 

图解用Wireshark进行Http协议分析_第1张图片

 

如果装了Winpcap,在C:\Windows\System32\drivers下,会出现npf.sys;另外系统带有npfs.sys,不是一个东西;

图解用Wireshark进行Http协议分析_第2张图片

 

如果是npf服务未运行,在命令行执行net start npf启动服务。

 

从菜单中查看一下可用的连接,本机用网卡进行的本地连接,只有一个连接,不同的配置,或者无线连接,此处可能会出现多个连接;

图解用Wireshark进行Http协议分析_第3张图片

 

从菜单看一下捕获选项,Capture Filter按钮后的文本框为空,没有捕获过滤器;可以设置了过滤器再捕获,也可以先捕获,再过滤;此处采用后者;

图解用Wireshark进行Http协议分析_第4张图片

 

二 进行捕获分析

点击前面有个绿色标志的Start按钮开始捕获;

图解用Wireshark进行Http协议分析_第5张图片

 

捕获一小会点红色停止按钮停止;不到一分钟,已经有600多个包;当前本机正在上网,打开了多个网页;

图解用Wireshark进行Http协议分析_第6张图片

 

在过滤表达式框中输入 http,只查看http协议的包,如下图; 由于所有打开的网页都停止刷新好长时间了,http协议的包只有两个;

图解用Wireshark进行Http协议分析_第7张图片

 

这两个包是本机和117.79.93.218之间交互的,百度一下此IP,如下图;这个应该是百度的IP;

图解用Wireshark进行Http协议分析_第8张图片

上述的一个包是 http  200; 
这表示服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。

 

GET /socket.io/1/xhr-polling/g6BvKEWe5k1WjFgt595_?t=1427092879908

这一段是握手后的socket.io的请求;表明浏览器已经使用了新的HTML 5的websocket技术;

 

查看一下本机的IP,网关,DNS等参数;控制面板-网络和共享中心-本地连接-详细信息,显示如下图的本机IP配置信息;

图解用Wireshark进行Http协议分析_第9张图片

 

上图显示本机连接的网关是192.168.1.254, 在过滤表达式框输入表达式查看包含此IP的包,一个也无;

图解用Wireshark进行Http协议分析_第10张图片

 

但是却有大量的本机和192.168.1.250之间交互的包;应该是网管用某种方法把192.168.1.250映射为了192.168.1.254;这是网管干的,不是我干的;

以后的包中出现192.168.1.250,就是网关了;在此处来说,就是路由器;单位内部的电脑通过此路由器上网;

图解用Wireshark进行Http协议分析_第11张图片

 

下面来找一下TCP建立连接的三握手过程;

输入tcp.flags.syn==1或tcp.flags.syn==0x02 过滤一下;这两个表达式结果是一样的;结果如下图;

 

单个的一个SYN,它表示的是建立连接; SYN和ACK同时为1,它表示的就是建立连接之后的响应;

下图中显示有三个TCP连接在建立;

图解用Wireshark进行Http协议分析_第12张图片

 

看一下第二个连接,其包号为195;列出包号为195、196、197的三个包看一下,其内容为:

SYN

SYN+ACK

ACK

果然这是一个TCP连接的建立过程;前两个上面说了,第三个 ACK 是第三次握手的确认;到此一个TCP连接建立了;之后才可以进行HTTP协议的收发;HTTP是建立在TCP基础之上的;

 

三 重新捕获一次再分析

    关闭所有打开的网页;再打开浏览器;此次自动打开的是搜狗首页,然后在搜狗首页输入 软件工程 四个字,点击搜索;

再捕获一次,然后停止再分析;

输入如下图的表达式,去除掉 ip中包含本机IP和192.168.1.250的包,看下有些什么;发现有很多广播包;这个是底层的ARP协议;ARP在TCP之下一层;

图解用Wireshark进行Http协议分析_第13张图片

 

     另外还有很多SSDP包;SSDP ,简单服务发现协议 ;NOTIFY * HTTP/1.1/r/n,就说明这个SSDP消息是个通知消息;

 

百度一下百度的IP,果然能查到;

图解用Wireshark进行Http协议分析_第14张图片

 

网页上还显示有一种叫IP数据库的东西;看来里面包括了大量的IP信息;

图解用Wireshark进行Http协议分析_第15张图片

 

下面显示捕获的包对106.120.151.162获取图片;

 

用下面网页查一下106.120.151.162

图解用Wireshark进行Http协议分析_第16张图片

    原来这个正是搜狗的首页; 

 

写个复杂点的过滤表达式;

!arp and !udp and !(ip.src==192.168.1.134 and ip.dst==192.168.1.250) and !(ip.src==192.168.1.250 and ip.dst==192.168.1.134)  and (http) and (http.request.method=="GET") 看下过滤的结果;

以上表达式的含义是:去除arp, 去除udp,去除 192.168.1.134 and 192.168.1.250 之间互发的包,再取http的请求方法为GET的包;

图解用Wireshark进行Http协议分析_第17张图片

 由下图可以看到,对搜狗进行了很多的GET,js脚本,图片等等,是在不同的http包中传过来的;

图解用Wireshark进行Http协议分析_第18张图片

 

下面来做个难一点的;由于前面输入了 软件工程 四个字进行搜索,找找捕获的包中,包含 软件工程 四个字的包;

在上述的长过滤表达式尾部再补上 and (http contains "软件工程");没有定位到一个包;表达式包含中文,会不会有问题;

向搜狗发送的URL大致是下面形式,

http://www.sogou.com/sie?hdq=Af71016-4553&query=软件工程&p=50040111&oq=&ri=-2

输入 http contains "query=",即查找http请求字符串中包含 query= 的包;定位到3198号包;如下图;

这个是服务器返回成功的http 200包;

图解用Wireshark进行Http协议分析_第19张图片

 

细致一点,再单独输入 http contains "软件工程" 查询,这次定位到一个包,如下图;3615号包;

图解用Wireshark进行Http协议分析_第20张图片

 

观察窗格的下部,捕获到的二进制数据和对应的字符串内容;00e0 行显示,query= 的后面,是......,并不是 软件工程 四个字;当然由字符串内容可知,这肯定是一个发送带查询参数的URL的包;

因为网页查询参数是UTF-8编码的;下面从网上找到 软件工程 四个字的UTF-8编码;再对比00e0行的16进制数;

 

图解用Wireshark进行Http协议分析_第21张图片

   

    如上图;程 字的UTF-8编码为e7 a8 8b,正是 该行的最后三个16进制数;再比对;由图可见四个字都对上,该行的后12字节 正是 软件工程四个字。那么,65 72 79 3d 就是 ery= 的编码了。

    分析到此结束;我捕获的包可以下载分析;

http://pan.baidu.com/s/1i3ioQWH

也可以自己捕获包分析。

 

你可能感兴趣的:(协议分析和开发,原创教程)