设为首页 收藏本站
查看: 2709|回复: 0

FTP工作过程的抓包分析

[复制链接]

尚未签到

发表于 2015-5-29 12:13:21 | 显示全部楼层 |阅读模式
  其实这个是我在写C#FTP编程时,总感觉写的时候模棱两可的,就姑且抓包看看,到底什么情况。
  第一次使用抓包工具,暂且做简单的分析吧
  我在本机登陆ftp,输入用户名,密码进行登录。对该过程,使用 CommView获得抓包数据如下。(点击图片查看大图)
http://hi.iyunv.com/attachment/201106/15/0_1308153321kb3u.gif
  看来整个过程还是比较复杂的,进行了这么多次通信。那么就逐条来看吧
  第一条,下边是给出的数据包数据分析,这次连接应该是由客户端发出的,一次TCp请求,外层先经过了MAC层的包封装,然后IP层封装,TCP层封装。各个层中包含不同的数据,这里就不细说了。不过发现,点这个树状数据时,左边的二进制数据有对应的高亮显示,挺好。
http://hi.iyunv.com/attachment/201106/15/0_1308153322QL6u.gif
  第二条,看来是从服务器端传来的信息,。想到了TCP的连接不是三次握手么,这应该就是第二次握手了。那么第三条数据就毫无疑问就是客户端高速服务器端已经建立好了连接,可以传送数据了。
http://hi.iyunv.com/attachment/201106/15/0_1308153328uLwt.gif
  第三条,依然是三层封装
http://hi.iyunv.com/attachment/201106/15/0_1308153340SkO9.gif
  
  客户端应该已经将发起了的3716端口与服务器端的21的控制连接。
  第四条
http://hi.iyunv.com/attachment/201106/15/0_1308153353OOkO.gif
  从图上看出来,这是从服务器端发送过来的,右边的树状数据分析栏 也有了基于FTP层协议数据的封装(大概是这么说吧。。。)。从状态号220看出,这次通信是说,服务器端高速客户端,对新用户的服务已经建立完毕了。而且还给出了服务器端的服务类型。
  客户端的3716端口与服务器端的21端口连接建立成功。
  第五条
http://hi.iyunv.com/attachment/201106/15/0_130815336539ul.gif
  大家可能看到,端口编程了3716 原来是3715,应该是因为我进行了两次操作?因为从数据包上看,3716端口也进行了以上的四次通信,那么就从3716这分析(3715数据包没有3716的全。。。)。
  这一条可以看出来是客户端向服务器端发送了USER命令,这个命令是高速服务器,我要发送用户名了。书上说这是机那里控制连接后发出的第一个命令。如果以后要改变登录的用户,会重新发送该命令,原来设置的参数不会改变。命令后边紧跟着我输入的ftp用户名称。
  第六条
http://hi.iyunv.com/attachment/201106/15/0_1308153379YnGF.gif
  这一条是服务器端发送来的,响应码为331,可知,服务端告诉客户端用户名正确,需要口令。从这里可以看出,当焦点离开用户名输入框时,客户端已经于服务器端建立了一次通信。那么,此时就能够判断该用户是否合法。响应码后边直接跟着该响应码所表达的意义(我原来以为相应码表示的意义并不传送)。
  第九条
http://hi.iyunv.com/attachment/201106/15/0_1308153391Eza2.gif
  这条是客户端向服务器端发送PASS命令,后边紧跟着传送密码(居然是明码,汗。。。。。)那么服务端肯定会根据前后传送的用户名和密码,进行验证。
  第十条
http://hi.iyunv.com/attachment/201106/15/0_130815340341N3.gif
  响应码230,说明用户凭据有效,登录成功。
  第十一条,第十二条
http://hi.iyunv.com/attachment/201106/15/0_1308153410sIUu.gif  http://hi.iyunv.com/attachment/201106/15/0_1308153417MZ99.gif
  客户端发送了一个opt命令,结果服务器端告诉客户端,该命令不识别。不知道这是什么情况。。。
  第十二条,十三
http://hi.iyunv.com/attachment/201106/15/0_1308153422NuI7.gif  http://hi.iyunv.com/attachment/201106/15/0_13081534277dMK.gif
  客户端发出sys命令,因该是询问操作系统类型,书上说是询问名字系统类型。。。服务器反馈Windows_NT。
  第十四,十五
http://hi.iyunv.com/attachment/201106/15/0_1308153431CcC3.gifhttp://hi.iyunv.com/attachment/201106/15/0_1308153440Z855.gif
  客户端发送site命令,服务器端反馈一大堆信息,从comment上看,是帮助信息。
  第十六,十七
http://hi.iyunv.com/attachment/201106/15/0_1308153445Lxxn.gifhttp://hi.iyunv.com/attachment/201106/15/0_13081534508x87.gif
  客户端端发送命令 PWD,服务器端反馈257(书上解释:创建PATHNAME。。。)comment上写着“/”is curent directory 说明的是根目录。
  第18,19
http://hi.iyunv.com/attachment/201106/15/0_13081534567402.gifhttp://hi.iyunv.com/attachment/201106/15/0_130815346344c9.gif
  客户端发送TYPE命令,Represention type写着A,服务器端 返回200 Type set to A.   A指的是Ascall编码模式。可以使用tye命令实现ASCALL和二进制模式之间的变换。
  第20,21
http://hi.iyunv.com/attachment/201106/15/0_1308153467OCS6.gifhttp://hi.iyunv.com/attachment/201106/15/0_1308153472AAPD.gif
  客户端发送命令PASV,服务器端响应为227.表示进入被动模式。
  服务端收到该命令后会开一个新的端口P进行监听,同时将该端口告诉客户端。客户端收到响应后,通过新的端口3617与P建立连接,进行文件传输。该3717会告诉服务端。
  关于被动模式与主动模式书上这么解释来着。
  客户端与服务器建立控制连接后,要告诉服务器采用哪种文件传输模式。FTP提供了两种传输模式,一种是Port(主动模式),一种是Passive被动模式。这个主被动指的是服务器端。
  主动,是指服务器端主动向客户端发起数据连接请求,那么此时服务器端要用自己的一个固有端口一般是20去监听客户端。整个过程是这样的,客户端在最初 会用一个端口3716向服务器端的21发起控制连接请求(应该是在握手后中确定的吧),连接成功后,在发送port 3716+1,告诉服务服务器端坚定3717,那么服务器端就会用数据端口,一般是20与3717建立连接(这就是主动进行数据连接)。服务器端利用自己的20与客户端 3717来文件的数据传送通信,利用21和客户端最初的端口3616进行用户验证和管理。
  而被动模式,是服务器端被动的接受客户端的数据连接请求,这个端口号是由客户端告知服务器端的,在本地随机生成(1025-65535)。
  
  那么现在的情况就是,客户端已经告诉服务端进入被动模式了,客户端应该启动新端口,建立数据连接了。
  第22,23,24
http://hi.iyunv.com/attachment/201106/15/0_1308153473rUZY.gif
  可以看出3717应该就是数据连接了。不过,暂时还不知道,客户端如何利用 该端口与服务端P建立连接的,这个内容封装在 哪里边??
  25
http://hi.iyunv.com/attachment/201106/15/0_1308153474BcO7.gif
  客户端发出list命令,告知服务端列出路径下目录和文件。
  26,27
http://hi.iyunv.com/attachment/201106/15/0_1308153476pQwl.gif
  接下来有两次数据端口的通信,此时都没有ftp数据信息,传送的数据信息应该在tcp数据段中。可如何转给3617呢??
  28
http://hi.iyunv.com/attachment/201106/15/0_1308153477X8r6.gif
  服务端告知,数据开始传送。
  29,30,31
http://hi.iyunv.com/attachment/201106/15/0_1308153479z786.gif
  接下来有三次数据端口的通信,两次是由客户端发出的,一次是服务端返回的信息。
  32,33
http://hi.iyunv.com/attachment/201106/15/0_130815348324O2.gifhttp://hi.iyunv.com/attachment/201106/15/0_1308153490NxXL.gif
  客户端控制端口与服务端控制端口通信,服务端返回,数据传输完毕。
  这就是整个过程。
  不清楚的是如何才能看到中间数据端口通信时的数据呢??

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-71905-1-1.html 上篇帖子: 利用WinInet库和STL获取计算机硬盘中的文件并上传到指定FTP服务器 下篇帖子: Gene6 FTP Server 忘记管理密码的解决办法
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表