0
点赞
收藏
分享

微信扫一扫

ZUCC_计算机网络实验_大作业 使用Wireshark抓包软件分析钉钉协议

small_Sun 2022-03-12 阅读 370

浙江大学城市学院实验报告

文件下载:
1.CSDN
2.百度网盘,提取码: 0k8f
–来自百度网盘超级会员v4的分享

注意:

  1. 务请保存好各自的源代码及实验报告文档,已备后用。
  2. 请把实验报告和实验项目放在一个文件夹(如实验01)后打包为.rar压缩文件,并上传到BB平台。
  3. 压缩文件名为:学号_姓名_日期_大作业.rar,如32001234_姓名_20210618_大作业.rar

一、 实验目的:

  1. 通过使用Wireshark分析网络协议。
  2. 了解钉钉软件中认证、聊天、文件传输协议。

二、 实验内容原理实验结果与分析

1、选择钉钉使用模式(钉钉App或者PC客户端),合理配置网络环境。

【实验采用的网络拓扑图】

  • 使用Windows10笔记本进行Wireshark抓包,并选择客户端钉钉,同时将笔记本置于手机热点下;

RiHrUf.png

  • 可以看到当前实验机器获得的ip为192.168.43.233;所以当前连接的AP站点ip为192.168.43.1

【实验结果与分析】

配置当前的ip以及微信所在的实验环境

2、分析钉钉登录认证方式。

【实验步骤】

  • 因为不必要的ipv6信息传输干扰,所以先屏蔽了ipv6的信息

Rib8Ln.png

RibRJO.png

  • 上图清楚地看到,我的电脑获得的ip是192.168.43.233,并且网关是192.168.43.1

RiLYCT.png

  • 此时,我的电脑正在发出DNS,域名查询的包。当我们拆开去解读消息的时候会发现他的query是去查询这个域名 https://www.dingtalk.com/。并且在之后DNS返回了查询到的IP。

RiXycD.png

  • 当我打开完客户端,我的Wireshark抓到了这些包,看样子是在获取二维码和一些相关的信息。

RiX7jg.png

  • 当我打开手机APP扫码却登录时,我的Wireshark抓到了这些包,看样子是在登录确定账号的信息。

Rijlbd.png

Rij6P0.png

  • 点击确认之后,从抓取的包里面也可以看出,双方在不停的发包并进行SSL加密传输,和一些相关的认证信息。

RivWfP.png

  • 建立连接,并且获取一些好友队列的信息。

当我选择密码登录时:

RFQklT.png

与扫码大同小异,双方在进行握手后,双方在不停的发包并进行SSL加密传输

【实验结果与分析】

成功与服务器进行了连接,并且认证成功

3、分析钉钉好友聊天过程。

【实验步骤】

作为测试,发送了四条消息:

Rix89P.png

RFSAsO.png

  • 更改ip显示域名以获得更好的效果

握手协议,也是一次认证:

RFShSx.png

RFSTmD.png

  • 一共抓到了以下这些包,经过分析,可以确定此次信息传输是与之前DNS查询中查到一个服务器59.82.40.137进行了交互,并进行相应的筛选

RFpkhn.png

  • 前三个包是在进行TCP三步握手认证,由我的电脑向服务器发送SYN请求,服务器收到后发送SYN和ACK进行确定,最后从客户端向服务器发送ACK完成认证。

RFpwAH.png

  • 之后从第12个包开始,便一直在进行交互,不断的进行连接,传送完消息之后客户端的FIN断开连接请求,和之后恢复连接的ACK,(在发送fin之后,一定时间内,如果客户端和服务端还有数据交互,两者可以恢复连接而不需要再进行三步握手认证)

RF9gR1.png

  • 退出筛序模式后,发现在与get.sougou.com通讯后,会与203.119.217.37(另一个阿里云的服务器IP),猜测是测试时使用搜狗输入法时产生了数据,因此很好帮助我们定位钉钉数据发送的包位置

RFPC7D.png

RFPE9A.png

  • 同时我们也知道了钉钉的聊天途中会切换新的服务器连接

4、分析钉钉群聊过程

【实验步骤】

选择了群聊进行分析,一共发送了以下信息:

RFihLV.png

RFF56I.png

  • 这次只抓到了203.119.217.31说明在此次群聊过程中只与一个服务器进行了通讯,并使用本地IP进行SSL加密传输
  • 说明群聊时服务器发生了变化

RFkjUO.png

  • 期间观察到多次的握手,推测相隔一定时间后再发送信息都需要与服务器重新建立连接,服务器窗口开放时间较短

RFESoT.png

RFEtTf.png

RFAqzj.png

RFAOQs.png

  • 这是客户端向服务端提交数据和服务端向客户端发送的回应包;
  • 可以看到传输的信息是进行加密之后的,且是一个TCP接着一个SSL包,而TCP内没有实际数据,数据存在于SSL包中加密传输。只有提交的data数组是可以明文可见的,还有服务端的回应中的code等信息是可见的

5、分析钉钉文件传输过程。

【实验步骤】

作为测试,发送了一个压缩文件:

RFEOhD.png

RFVk4S.png

  • 在分析数据发现,在发送数据开始时会通过DNS获得发送文件服务器的IP(114.80.58.208,上海电信),然后与该服务器进行三次握手,然后发送文件,
  • 其中的IP并非属于阿里云,推测是转存到一个与本地较近的云服务器,在使用时进行下载
  • 由于文件较大,我们可以注意到,在一段时间的发送后,可以收到服务器的一个确认回应,显然这是由于文件分片较大,传输成功的几率小,进行的重传,直到成功;同时推测服务器使用的是滑动窗口协议,因此出现了错位的确认帧
  • 期间也有本地发送的TLS包,推测是进行分段传输的断点

RFm7xe.png

  • 在传输结束后,本地发送了一个SSL给阿里服务器,同时收到回复,推测是完成了转存后向阿里服务器确认
  • 之后是与阿里服务器进行数据交换,推测是关于文件的数据

6、总结钉钉中使用协议。

【实验结果与分析】

  • 可以发现钉钉的聊天信息都进行了SSL加密进行传输,并且在选择服务器的时候会选择最近的服务器。
  • 更容易发现的是,钉钉的聊天基于TCP协议,而当我把传送数据替换成文件或图片时,交互的服务器并没有发生大的改变,依旧是203.119.217.31或59.82.40.137,但上传文件的服务器变成了其他服务器。
  • 而具体的与服务器交互方式无法抓到,推测并没有涉及HTTP

三、 本课程心得及建议

  • 在动手实验的时候,遇到了很多的困难,但在自己的动手实践,和在不断的尝试中获取的知识来看,这是值得的。
  • 在失败中,我收获了许多,巩固了一些基础知识,在复杂的包堆里面找到了正确的包,也学会了如何去过滤一些不需要的包,希望这门课之后会更加的广阔,也希望更多的同学可以收获宝贵的知识。
举报

相关推荐

0 条评论