精华内容
下载资源
问答
  • MSTP模拟实验搭建及测试报告、Wireshark抓包分析,内附:拓扑结构、环境配置、测试结果截图、MSTP报文等,用于学习交流。
  • 在我的实验中,默认的flask REST API是开启5000端口,然而,当我用request库或者浏览器的REST客户端发送数据,wireshark抓都是如下结果: 可以看到图中的IPA协议的相关行,IPA后面跟着的是unknown,我就很...

     

     

    在我的实验中,默认的flask REST API是开启5000端口,然而,当我用request库或者浏览器的REST客户端发送数据,wireshark抓的包都是如下结果:

    可以看到图中的IPA协议的相关行,IPA后面跟着的是unknown,我就很纳闷,为何基于HTTP传输的JSON数据会显示unknown,协议不是HTTP而是IPA。经过google,查到了以下回答:

    "IPA" is the ip.access "GSM over IP" protocol. That protocol apparently uses ports 3002, 3003, 3006, 4249, 4250, and 5000 over TCP. The ip.access dissector doesn't check whether the packets handed to it look like ip.access packets, so traffic that's not ip.access traffic but that's to or from one of those ports might be incorrectly dissected as ip.access traffic

    也就是说,当端口为5000,就算这个数据包不是GSM over IP的,只是端口为5000也会认为是GOP包,因此抓包的结果是这样。

    那么只有修改REST API的端口才能实现抓到HTTP包,修改如下:

    app.run(host='0.0.0.0',port=9100)

    增加了port这一个参数。

    这是修改后的抓包结果:

    那几行HTTP包就是与API交互的包。

     

    参考:https://ask.wireshark.org/questions/9240/data-which-has-been-sent-over-tcpip-has-been-recognized-by-wireshark-as-ipa-protocol

    转载于:https://my.oschina.net/hochikong/blog/700882

    展开全文
  • 计算机网络实验(三)之Wireshark抓包分析-python实现http分析计算机网络试验三实验内容1.实验步骤1.1 基本HTTP GET/response交互1.2 HTTP条件Get/response交互1.3HTTP条件认证实验要求实验作答-代码实现分析版本一...

    计算机网络实验三

    实验内容

    1.实验步骤

    在之前的两次实验里,我们已经初步使用了Wireshark包嗅探器。在后续的一系列实验里,我们得训练、实践并掌握用Wireshark来查看网络协议的实践能力。在本次实验中,我们会探索HTTP协议的几个方面:基本的HTTP GET/response交互,HTTP消息格式,带条件判断的HTTP GET/response交互,基本的非常原始的HTTP认证。

    1.1 基本HTTP GET/response交互

    探索HTTP的第一个方法是下载一个非常简单的HTML文件,这个HTML文件非常短,并且不包含嵌入的对象。执行以下操作:

    1. 启动Firefox浏览器,并禁用其缓存
    2. 启动Wireshark数据包嗅探器,在过滤器栏输入**“http”**(只是字母,不含引号)并回车,这样就在稍后的分组列表窗口中只捕获HTTP消息。(我们只对HTTP协议感兴趣,不想看到其他的数据包)。
    3. 稍等一会儿,然后开始Wireshark数据包捕获。
    4. 在浏览器中输入以下内容 http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file1.html 浏览器应显示非常简单的单行HTML文件。
    5. 停止Wireshark数据包捕获。

    通过查看HTTP GET和响应消息中的信息,回答以下实验要求的1-8题。 在回答这部分问题时,为每个题目使用一个单独的Jupyter Notebook单元格(下同)输出要求的信息。

    1.2 HTTP条件Get/response交互

    大多数Web浏览器会使用对象(资源)缓存,从而在检索HTTP对象时执行条件GET。执行以下步骤之前,请确保浏览器的缓存为空(Firefox里按下F12然后在开发者工具窗口里禁用缓存)。
    现在按下列步骤操作:
    • 启动浏览器,禁用缓存。
    • 启动Wireshark数据包嗅探器。
    • 在浏览器中输入以下URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html浏览器显示一个非常简单的五行HTML文件。
    • 取消禁用缓存。
    • 快速地将相同的URL http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html 输入到浏览器地址栏中并回车(或者只需在浏览器中点击刷新按钮)。
    • 停止Wireshark数据包捕获,并在过滤器栏中输入“http”,以便只捕获HTTP消息,并在数据包列表窗口中显示。
    回答实验要求的9-12题。

    1.3HTTP条件认证

    最后,我们尝试访问受密码保护的网站,并检查网站的HTTP消息交换的序列。URL http://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html 是受密码保护的。用户名是“wireshark-students”(不包含引号),密码是“network”(不包含引号)。所以让我们访问这个“安全的”受密码保护的网站。执行以下操作:
    • 请确保浏览器的缓存被禁用,然后关闭你的浏览器,再然后启动浏览器,再次确认浏览器的缓存被禁用。
    • 启动Wireshark数据包嗅探器。
    • 在浏览器中输入以下URLhttp://gaia.cs.umass.edu/wireshark-labs/protected_pages/HTTP-wireshark-file5.html 在弹出框中键入上述的用户名和密码。成功看到如下文字:
    This page is password protected! If you’re seeing this, you’ve downloaded the page correctly
    Congratulations!
    • 停止Wireshark数据包捕获,并在过滤器栏中输入“http”,以便只显示捕获的HTTP消息。
    现在来分析Wireshark输出。
    回答实验要求的13-14题。

    实验要求

    1. 以“HTTP/X.Y”的形式输出你的浏览器运行的HTTP版本。
    2. 以“HTTP/X.Y”的形式输出服务器运行什么版本的HTTP。
    3. 如果有的话,输出你的浏览器能接服务器接受哪种/些语言。
    4. 输出你的计算机的IP地址。
    5. 输出gaia.cs.umass.edu服务器的域名。
    6. 输出服务器返回到浏览器的状态代码。
    7. 输出服务器上HTML文件的最近一次修改时间。
    8. 输出服务器返回到你的浏览器的内容的字节数。
    9. 分析第一个从你浏览器到服务器的HTTP GET请求的内容。请输出True/False以表示在HTTP GET中是否有包含“IF-MODIFIED-SINCE”首部。
    10. 分析服务器响应的内容。如果返回状态码为200,则有很大概率是返回了完整的内容。请输出服务器返回的响应的状态码和短语。
    11. 分析第二个HTTP GET请求的内容。 请输出True/False以表示在HTTP GET中是否包含“IF-MODIFIED-SINCE:”首部。如果是,请换行输出“IF-MODIFIED-SINCE:”首部后面包含的信息。
    12. 针对第二个HTTP GET,输出服务器返回的响应的HTTP状态码和短语。
    13. 输出服务器对你的浏览器的初始HTTP GET请求的响应的状态码和短语。
    14. 输出当你的浏览器第二次发送HTTP GET消息时HTTP GET请求中包含的新首部及其内容(与13题对比)

    实验作答-代码实现

    以下解答通过故事剧情来描述

    小吴的公司经常加班,偶尔回家。有一天公司项目经理要求小吴用Python分析http,给他出了14个题目,第二天给出分析结果。下班后,小吴急匆匆的回到家,啥都没管就打开电脑按照经理的要求一个劲的用wireshark抓着包。抓完包之后,小吴傻呆呆的看着自己抓的包,翻看着报文中的属性,敲着代码,看了半天也没有写出代码来,心中不禁有点发凉,这可咋整啊!这时,他隐隐约约听见从隔壁老王家传来媳妇的叫声。小吴这才发现媳妇和儿子不在家,想着代码没敲出来,也就没在意。过了一会儿,媳妇衣衫褴褛,回到了家。媳妇对小吴说给他做饭去。没过多久隔壁老王领着儿子回来了。小吴想老王说了公司经理交给他的任务,老王看着埋头苦干的一句Python代码也没写出来,老王说:“我给你点提示,你按着下面的步骤做”

    分析

    首先我们先对题目进行分析,在题目中出现最多的词语就是游览器、服务器、请求和响应,在实验一中我们就探讨了访问某个网站所经历的过程,其中就有提到游览器和服务器的关系,如下图所示。从图中我们可以看出游览器向服务器发送请求,服务器然后对游览器做出回应。因此解答本实验问题的关键之一就是游览器对应请求,服务器对应响应。

    解题关键二:通过pyshark.FileCapture方法获取数据包对象cap,cap[0],cap[1]……顺序对应的就是wireshark中的一行。我们可以通过点击某一项查看来查看数据包中的内容,方便查找题目所需的属性,再通过Python代码进行输出。

    版本一—牛刀小试

    小吴顺着老王的思路看了看,想了想,还真是哎!于是欣喜而疯狂的敲着代码,一口气全做完了。(老王和儿子在一旁玩的不亦乐乎。)
    小吴是这么做的

    小吴看着自己写的代码,看着没啥bug,暗自窃喜,非常感谢老王的指点。老王看了小吴的代码摇了摇头,说“你这样搞,明天经理会把你开除的”。小吴一脸懵逼的看着老王。老王又接着说:“你把那些cap[0],cap[1],…写死了,经理拿去测试,换个包,代码就全废了,你可以试着把请求和响应分离开”。小吴想了想,妈耶!还真是哎!心想老王真牛逼啊!改天一定要请他吃饭。于是准备开始写第二个版本。这时媳妇端了一碗热乎乎的热汤面走了过来,把面放在了桌上,和老王嘀咕了几句,然后带着儿子跟随老王出去了。小吴吃着媳妇做的热汤面,吃完就一个劲的敲着代码,完全没察觉媳妇已经不在了,以为媳妇回房间睡觉了。搞到快凌晨的时候,第二个版本出来了,怕影响媳妇睡觉就早早的上班去了。回到了公司,小吴受到了经理的嘉奖,经理还给他发了奖金。想着,这都多亏了老王啊!于是下班后拿着钱请老王吃火锅去了……………

    版本二—代码优化

    小吴的第二个版本是这样的

    1. 获取数据包对象:getCapObj
    2. 获取所有请求和响应:getReqAndResp和getAll
    3. 根据索引获取单个请求和响应getSingleRequest和getSingleResponses

    函数封装

    import pyshark
    REQUEST=0
    RESPONSE=1
    diyFilter="http"
    tsharkPath="D:/Program Files/Wireshark/tshark.exe"
    def getCapObj(filePath,diyFilter,tsharkPath):
        """
        #获取数据包对象
        :filePath 文件路径
        :diyFilter 过滤条件
        :tsharkPath tshark路径
        :return 返回数据包对象
        """
        return pyshark.FileCapture(filePath,display_filter=diyFilter,tshark_path=tsharkPath)
    def getReqAndResp(cap):
        """
        #获取、分离请求和响应
        :return 返回请求和响应元组
        """
        requestsDict={}
        responsesDict={}
        for pkt in cap:
            try:
                responsesDict[pkt.http.request_in]=pkt
            except:
                requestsDict[pkt.frame_info.number]=pkt
        return requestsDict,responsesDict
    def getAll(filePath,diyFilter,tsharkPath,arg):
        """
        :filePath 文件路径
        :diyFilter 过滤条件
        :tsharkPath tshark路径
        :arg 标识请求和响应的参数,参数值为常量REQUEST或者RESPONSE
        :return 当arg为REQUEST时返回所有请求包,为RESPONSE时返回所有响应包
        """
        return getReqAndResp(getCapObj(filePath,diyFilter,tsharkPath))[arg]
    def getSingleRequest(requests,index):
        """
        #查找所有请求中索引为index的单个请求
        :requests 所有请求
        :index 索引,对应所有请求中某个请求的位置
        :return 返回索引为index的单个请求
        """
        return  requests[list(requests.keys())[index]]
    def getSingleResponses(responses,index):
        """
        #查找所有响应中索引为index的单个请求
        :responses 所有响应
        :index 索引,对应所有响应中某个响应的位置
        :return 返回索引为index的单个响应
        """
        return  responses[list(responses.keys())[index]]
       
    

    1-8题作答

    "==================1-8题公用(全局)变量===================="
    cap_file_path="./lab3_1.pcapng"
    cap1_requests=getAll(cap_file_path,diyFilter,tsharkPath,REQUEST)
    cap1_responses=getAll(cap_file_path,diyFilter,tsharkPath,RESPONSE)
    client=cap1_requests[list(cap1_requests.keys())[0]]#在这里将游览器、本机等统一定义为客户端
    server=cap1_responses[list(cap1_requests.keys())[0]]
    
    print("1、浏览器运行的HTTP版本为:",client.http.request_version)
    print("2、服务器运行的HTTP版本为:",server.http.response_version)
    print("3、浏览器能接服务器接受的语言为:",client.http.accept_language)
    print("4、我的计算机的IP地址为:",client.ip.src)
    print("5、gaia.cs.umass.edu服务器的域名为:",client.http.host)
    print("6、服务器返回到浏览器的状态代码为:")
    i=0
    for key in list(cap1_responses.keys()):
        i=i+1
        print("请求",i,"-->状态码",cap1_responses[key].http.response_code)
    print("7、服务器上HTML文件的最近一次修改时间为:")
    i=0
    for key in list(cap1_responses.keys()):
        try:
            i=i+1
            print("响应",i,"-->",cap1_responses[key].http.last_modified)
        except:
            pass
    print("8、服务器返回到浏览器的内容的字节数为:")
    i=0
    for key in list(cap1_responses.keys()):
        try:
            i=i+1
            print("响应",i,"-->",cap1_responses[key].http.content_length)
        except:
            pass
    

    9-12题作答

    "==================9-12题公用(全局)变量===================="
    cap_file_path="./lab3_2.pcapng"
    cap2_requests=getAll(cap_file_path,diyFilter,tsharkPath,REQUEST)
    cap2_responses=getAll(cap_file_path,diyFilter,tsharkPath,RESPONSE)
    print("9、分析第一个从你浏览器到服务器的HTTP GET请求的内容。请输出True/False以表示在HTTP GET中是否有包含“IF-MODIFIED-SINCE”首部。")
    if getSingleRequest(cap2_requests,0).http.get_field_by_showname("If-Modified-Since") is not None:
        print("True")
    else:
        print("False")
    print("10、分析服务器响应的内容。如果返回状态码为200,则有很大概率是返回了完整的内容。请输出服务器返回的响应的状态码和短语。")
    i=0
    for key in list(cap2_responses.keys()):
        try:
            i=i+1
            print("响应",i,"-->",cap2_responses[key].http.response_code,cap2_responses[key].http.response_code_desc)
        except:
            pass
    print("11、分析第二个HTTP GET请求的内容。 请输出True/False以表示在HTTP GET中是否包含“IF-MODIFIED-SINCE:”首部。如果是,请换行输出“IF-MODIFIED-SINCE:”首部后面包含的信息。")
    if getSingleRequest(cap2_requests,2).http.get_field_by_showname("If-Modified-Since") is not None:
        print(getSingleRequest(cap2_requests,2).http.get_field_by_showname("If-Modified-Since").showname_value)
    else:
        print("False")
    print("12、针对第二个HTTP GET,输出服务器返回的响应的HTTP状态码和短语。")
    print("状态码:",getSingleResponses(cap2_responses,2).http.response_code)
    print("短语:",getSingleResponses(cap2_responses,2).http.response_code_desc)
    
    

    13-14题作答

    "==================13-14题公用(全局)变量===================="
    cap_file_path="./lab3_3.pcapng"
    cap3_requests=getAll(cap_file_path,diyFilter,tsharkPath,REQUEST)
    cap3_responses=getAll(cap_file_path,diyFilter,tsharkPath,RESPONSE)
    print("13、输出服务器对你的浏览器的初始HTTP GET请求的响应的状态码和短语。")
    print("状态码:",getSingleResponses(cap3_responses,0).http.response_code)
    print("短语:",getSingleResponses(cap3_responses,0).http.response_code_desc)
    print("14、输出当你的浏览器第二次发送HTTP GET消息时HTTP GET请求中包含的新首部及其内容(与13题对比)。")
    print("第一次次发送HTTP GET消息时HTTP GET请求中包含的首部及其内容\n",getSingleRequest(cap3_requests,0).http)
    print("第二次发送HTTP GET消息时HTTP GET请求中包含的新首部及其内容\n",getSingleRequest(cap3_requests,2).http)
    print("服务器对浏览器第二次发送HTTP GET消息响应的状态码为:",getSingleResponses(cap3_responses,2).http.response_code)
    print("服务器对浏览器第二次发送HTTP GET消息响应的短语为:",getSingleResponses(cap3_responses,2).http.response_code_desc)
    

    运行结果

    13-14结果对比

    13题中服务器返回的状态码为401,短语为Unauthorized,表示未授权,是服务器对浏览器的初始HTTP GET未输入账号密码时请求的响应,14题中服务器返回的状态码为200,短语为OK,表示成功,是服务器对浏览器的第二次HTTP GET输入账号密码授权登录后请求的响应。
    从上图可以看出,HTTP GET请求中包含的首部及其内容,授权登录后较登陆前多了一个Authorization,他的作用是客户端发送http请求服务器发现配置了http auth,会检查request里面有没有"Authorization"的http header,如果有,则判断Authorization里面的内容是否在用户列表里面,Authorization header的典型数据为"Authorization: Basic jdhaHY0=",其中Basic表示基础认证, jdhaHY0=是base64编码的"user:passwd"字符串。如果没有,或者用户密码不对,则返回http code 401页面给客户端。标准的http浏览器在收到401页面之后,应该弹出一个对话框让用户输入帐号密码;并在用户点确认的时候再次发出请求,这次请求里面将带上Authorization header。

    总结

    本实验通过简单的Python代码来获取http请求报文和响应报文中的属性值,主要掌握的有常见的服务器响应状态码和短语代表的意义,禁用缓存和不禁用缓存的区别。特别需要的是我们在编写程序的时候应考虑代码的通用性和健壮性,不写重复代码、保证效率是对一个程序员的基本要求。

    寄语

    我还是个未入门的菜鸟,如果有错误的地方,欢迎指正。如果你有任何不解的地方或者有更好的实现,欢迎在下方留言评论哦。如果你觉得本篇文章对你有帮助,欢迎关注!!!

    展开全文
  • 使用wireshark抓包软件分析微信协议--zucc

    万次阅读 多人点赞 2019-06-07 21:11:56
    因为csdn自动压缩了上传的图片,导致看到的图片不太精确,稍后将发布可以下载的文档说明 下载地址,可以看到超清的图片,请自行下载 ...使用mac进行wireshark抓包,并选择使用客户端微信,同时...
    • 因为csdn自动压缩了上传的图片,导致高清图非常的小,稍后将发布可以下载的文档说明 下载地址,可以看到超清的图片,请自行下载
    • (现在经过朋友反应实在太小,重新截了一次图,这次是正常比例,但是改变了高清分辨率,如若需要高清,还是请下载)
    • https://download.csdn.net/download/sos768/11230576

    • 1.通过使用wireshark分析网络协议。
      2.了解微信认证、聊天协议。

    • 有朋友配置AP的时候遇到了一些麻烦,如果相处于同一个wifi时候,又不想用手机的热点,用宿舍的网线的话,可以使用这个: http://wifi.ggsafe.com/
    • 如若软件出错,请自行搜索: http://wifi.ggsafe.com/faq.shtml
    • 或者可以私聊博主,借用无线wifi 网卡usb进行配置

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

    1.选择微信使用模式(微信App或者网页微信),合理配置网络环境。
    【实验步骤】

    • 使用mac进行wireshark抓包,并选择使用客户端微信,同时将机器置于手机热点wifi之下
      在这里插入图片描述
    • 可以看到当前实验机器获得的ip为 172.20.10.2
      所以当前连接的AP站点ip为172.20.10.1

    【实验结果与分析】

    配置当前的ip以及微信所在的实验环境,如上图所示

    2.分析微信登录认证方式。

    【实验步骤】

    • 因为不必要的ipv6的信息传输干扰,所以先屏蔽了一些ipv6的信息
    • 以下是我之前使用的笨方法,一个一个去屏蔽
      在这里插入图片描述
    • 经过朋友提醒,还可以这么做,直接ip筛选,效果是一样的:
    • 在这里插入图片描述

    在这里插入图片描述

    • 从上图可以看出,我的电脑获得的ip是172.20.10.2,并且网关是172.20.10.1

    • 此时,我的电脑正在发出dns,域名查询的包,之所以是8.8.8.8,是因为我对电脑做了一些配置,如下图所示,我的电脑会默认向一下两个dns服务器发出请求,(10.61.10.10是学校的dns服务器之一emm)。
      在这里插入图片描述

    • 当我们拆开去解读消息的时候会发现他的query是去查询这个域名 szshort.weixin.qq.com。并且在之后dns返回了查询到的IP
      在这里插入图片描述
      在这里插入图片描述

    • 当我打开完客户端,扫了二维码之后但还没在手机按下确认键的时候,我的wireshark抓到了这些包,看样子是在获取二维码和一些相关的信息。
      在这里插入图片描述

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

    • 建立连接,并且获取一些好友队列的信息
      发送post请求进行data验证并且获取消息。
      在这里插入图片描述

    【实验结果与分析】

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

    3.分析微信好友聊天过程。

    【实验步骤】
    作为测试,发送了四条消息:
    在这里插入图片描述

    • 做完实验后,又去查了以下相关资料,原来抓包软件可以进行设置成ip显示成域名,下图是对之后实验的ip更直观的一种显示
      在这里插入图片描述

    握手协议,也是一次认证
    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

    • 进行以下筛选,172.20.10.2是我电脑的ip地址
      在这里插入图片描述

    • 可以看到信息数据干净了许多,继续进行分析
      在这里插入图片描述

    • 前三个包是在进行tcp三步握手认证,由我的电脑向服务器发送syn请求,服务器收到后发送syn和ack进行确定,最后从客户端向服务器发送ack完成认证。
      在这里插入图片描述

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

    • 期间有一次重置,断开连接并且重新进行了三步握手认证进行连接
      在这里插入图片描述

    • 测试中途发现了一些不是微信服务器的ip频繁出现,如下图中的121.51.8.102,在我使用小号进行测试的时候出现了多次,而且其flags是psh和ack居多(数据传输),然后去ip138.com进行了ip查询,结果与预料相差不大。

    • 查询网站时 ip138.com (仅供参考)
      在这里插入图片描述
      在这里插入图片描述

    4.分析微信群聊过程。

    【实验步骤】

    • 选择了群聊进行分析,一共发送了以下这些信息:
      在这里插入图片描述

    • 使用121.51.24.106进行ssl加密传输,在中间传输的时候出现了数据重传的情况,说明当不可达时,数据包会自动选择进行重传,直到传输成功。
      在这里插入图片描述

    • 这一步里面syn同步请求包也在不断的重新发送,直到之后的syn+ack包的确认连接使得连接开始建立,非常经典的tcp三步握手认证。

    • 在这里插入图片描述

    • 与和之前的单独私聊的过程几乎一致,只是请求的服务器发生了改变,从121.51.24.144 转换成了121.51.24.101
      在这里插入图片描述

    • 这是客户端向服务端提交数据和服务端向客户端发送的回应包
      可以看到传送的信息是进行加密之后的,只有提交的data数组 是可以明文可见的,还有服务端的回应中的code等信息是可见的
      在这里插入图片描述

    • 这些http请求和回应组成了信息交互的大部分过程
      在这里插入图片描述

    5. 总结微信聊天协议

    • 可以发现微信的聊天信息都进行了ssl加密进行传输,并且在选择服务器的时候会选择最近的服务器。更容易发现的是,微信的聊天基于http协议,通过get,post与服务器进行交互,穿插在包里的http响应和请求包足以证明这一点,而当我把传送数据替换成图片时,交互的服务器并没有发生大的改变,依旧是在121.51.24.144和121.51.24.101进行切换交互。

    • 对于微信好友头像的获取,从wx.qlogo.cn和cwx.qlogo.cn里进行get获取
      在这里插入图片描述
      在这里插入图片描述

    • 在做完了全部客户端的测试之后,我又去进行了web端的测试,发现传输消息使用的服务器域名为szshort.weixin.qq.com,文字数据和图片的传输,get和post请求,而在调用地图的时候,会转换成另一个服务器去调取数据进行同步。以下是一部分web测试数据。
      在这里插入图片描述

    • 对web端来说,原来还有一些密文随机数的认证方式,且随时间会发生改变

    在这里插入图片描述
    在这里插入图片描述

    三、本课程心得及建议

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

    参考blogs

    展开全文
  • 前两天写了一个python脚本,试图以分析网页源码的方式得到优酷视频的下载地址,结果只得到视频的纯播放地址,下载纯播放地址得到的文件也无法正常播放视频。 这里共享一下播放地址得到的方法(想看的可以展开折叠)...

    随便说两句

    前两天写了一个python脚本,试图以分析网页源码的方式得到优酷视频的下载地址,结果只得到视频的纯播放地址,下载纯播放地址得到的文件也无法正常播放视频。

    这里共享一下播放地址得到的方法(想看的可以展开折叠):

    # 实验视频地址:http://v.youku.com/v_show/id_XMTY3OTYyODM2NA==.html?f=27873045&from=y1.2-3.2
    # 解析到播放地址:http://static.youku.com/v1.0.0646/v/swf/loader.swf?VideoIDS=XMTY3OTYyODM2NA==&ShowId=0&category=98&Cp=0&Light=on&THX=off&unCookie=0&frame=0&pvid=1470928536391FWGhzj&uepflag=0&Tid=0&isAutoPlay=true&Version=/v1.0.159&show_ce=0&winType=interior&Type=Folder&Fid=27873045&Pt=1&Ob=1&plchid=&playmode=2&embedid=AjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw=&ysuid=1470556998734i3T&vext=bc%3D%26pid%3D1470928536391FWGhzj%26unCookie%3D0%26frame%3D0%26type%3D1%26fob%3D1%26fpo%3D1%26svt%3D0%26cna%3DpcwtEK7f7lUCAXDtLY6srtly%26emb%3DAjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw%3D%26dn%3D%E7%BD%91%E9%A1%B5%26hwc%3D1%26mtype%3Doth&cna=pcwtEK7f7lUCAXDtLY6srtly&pageStartTime=0
    # 但这不是下载地址,汗
    # 解析方法:
    # <div class="player" id="player"...<object type="application/x-shockwave-flash"
    # data="(.*?)" ... id="movie_player">...
    # <param name="flashvars" value="(.*?)">...
    # 正则提取出items,(.*?)处为提取对象,存储在items中
    # items[0] = 'http://static.youku.com/v1.0.0646/v/swf/loader.swf'
    # items[1] = 'VideoIDS=XMTY3OTYyODM2NA==&ShowId=0&category=98&Cp=0&Light=on&THX=off&unCookie=0&frame=0&pvid=1470928536391FWGhzj&uepflag=0&Tid=0&isAutoPlay=true&Version=/v1.0.159&show_ce=0&winType=interior&Type=Folder&Fid=27873045&Pt=1&Ob=1&plchid=&playmode=2&embedid=AjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw=&ysuid=1470556998734i3T&vext=bc%3D%26pid%3D1470928536391FWGhzj%26unCookie%3D0%26frame%3D0%26type%3D1%26fob%3D1%26fpo%3D1%26svt%3D0%26cna%3DpcwtEK7f7lUCAXDtLY6srtly%26emb%3DAjQxOTkwNzA5MQJ2LnlvdWt1LmNvbQIvdl9zaG93L2lkX1hNVFkzT1RjMU5qQTRNQT09Lmh0bWw%3D%26dn%3D%E7%BD%91%E9%A1%B5%26hwc%3D1%26mtype%3Doth&cna=pcwtEK7f7lUCAXDtLY6srtly&pageStartTime=0'
    # url = items[0] + '?' + items[1]
    # url就是播放地址
    View Code

    今天在研究盗链时,心想可不可以直接在优酷返回的包里找到视频的下载链接。

    琢磨了一秒钟,心里面觉得这个方法应该是可行的,于是打开抓包神器wireshark。

    启动的同时,在优酷主页里随便点开一个视频,让它开始播放。wireshark里很快出现很多包,我加上筛选条件“http”,让它只抓取http协议相关的包。

    其中重点关注 info 中开头为 GET 方式请求的包,因为这种包最容易分析,音视频图片的下载链接往往就包含在这些包的应用层里面。

    例如上图得到的就是一张logo的图片。

    我在这里面找与视频相关的包的链接,大概找到两种:

    这两种链接打开就可以播放,但也并不是全部都可以。而且我点开了好多链接,能播放的基本都是广告…… 

    然后我对 /youku 开头的进行了重点分析,别问我为什么,男人的直觉 =_=

    对链接进行复制之后,尝试用迅雷下载,结果发现文件十分的小,而且下载之后也无法播放。

    类似的链接还有很多段,它们下载得到的文件名一样,但是大小不同,而且单独下载之后都无法播放。我猜这是TCP协议分块传输的关系。

    这个时候我发现链接后面有一些参数,于是我把整个链接粘贴到记事本里,然后把参数部分删掉。

    得到新的链接,把它复制到迅雷中,发现可以下载,而且大小和之前比不可同日而语。

    我猜想这个视频应该是可以播放的,果不其然,下载之后打开果然可以顺利播放,而且正是我在网页中播放的视频。

    到这里基本可以确定这个方法是可以获得优酷的视频下载链接,但是还有点小问题,用我们得到的链接下载的视频只有6分钟,而原视频有26分钟,可想而知,下载的视频应该是完整视频的一部分。但我想其它部分的链接就在wireshark中,用同样的方法分析包就可以得到其它部分的链接。在这里我就不一一实验了。

    总结一下

    这种方法获取优酷视频的下载链接的方法是利用了wireshark软件进行抓包,通过抓取网络中传输的包并进行分析,直接得到请求的视频的地址,然后进行下载。

     

    Freecode# : www.cnblogs.com/yym2013

     

    展开全文
  • 1. WireShark 的安装以及界面熟悉 2. 简单 HTTP 的抓取和过滤,结果进行分析和导出 实验内容 加深对网络协议的理解通常可以通过观察协议的运行和不断调试协议来大大加深,具体而言,就是观察两个协议实体之间交换的...
  • Wireshark 实验

    2020-12-26 12:11:06
    Wireshark抓包数据分析 数据链路层 实作一: 熟悉 Ethernet 帧结构 使用 Wireshark 任意进行抓包,熟悉 Ethernet 帧的结构,如:目的 MAC、源 MAC、类型、字段等。 wireshark启动后,wireshark处于抓包状态中。 ...
  • 用wireshark 抓包,看看tcp 断开连接的过程....但是本人多次用wireshark抓包,都只能截到三个包 在网上搜索了很久都没有找到满意的解释。由于本人要填写实验报告,结果这样子就没法填了。 按照...
  • LACP抓包分析结果

    千次阅读 2012-08-18 22:33:20
    LACP抓包分析结果 今天利用wireshark来抓LACP包,分析的结果如下: 1、实验环境 两台交换机:分别是IP-COM/G3224T、H3C/S5024E; MAC:IP-COM的是00B0-4C00-079E,H3C的是000F-E2B9-B221; 汇聚组选择:IP-COM...
  • 实验目的:查看客户端向DHCP服务器请求IP过程。实验资料:实验拓扑:实验步骤:...3、在客户端上使用命令ipconfig -renew获取IP,从而查看wireshark捕获数据结果,客户端获得IP,同时wireshark抓取得四个DHCP交流:...
  • Wireshark实验4-应用层

    2020-12-22 15:19:15
    先使用 ipconfig /flushdns 命令清除缓存,再使用 nslookup qige.io 命令进行解析,同时用 Wireshark 任意抓包(可用 dns 过滤)。你应该可以看到当前计算机使用 UDP,向默认的 DNS 服务器的 53 号端口发出了查询...
  • 抓包结果如下: 4、利用显示过滤器进行筛选,选择有用信息进行分析。 报文分析 1、综合分析截获的报文,查看有几种HTTP 报文? 有两种报文,一种是HTTP请求报文,如上序号为19的报文;一种是HTTP响应报文,如上序号...
  • 目录ICMP协议与ARP协议抓包并分析实验环境ICMP使用PC1pingPC2抓包结果结果分析ARPICMP实验抓取的全部包原因分析 实验环境 ICMP 由于PING命令是基于ICMP协议进行工作,所以可以用PC1pingPC2来产生ICMP报文,通过...
  • Linux平台网络抓包应用 一、实验目的和任务 本实验要求复习Debian系统的使用。 本实验要求掌握Debian系统中Wireshark的使用。 理解基本网络协议IP包和TCP包的格式。...3.请用手机拍照抓包结果放入实验
  • 今天因为实验须要,要一下在localhost间的结果发现获取不到。解决方法也非常easy,在cmd下输入: route add 192.168.X.X mask 255.255.255.255 192.168.X.1 metric 1 就可以。前后两个各自是本机的IP地址...
  • 今天由于实验需要,要一下在localhost间的结果发现获取不到。解决方法也很简单,在cmd下输入: route add 192.168.X.X mask 255.255.255.255 192.168.X.1 metric 1 即可。前后两个分别是本机的IP地址和...
  • 实验2 使用Wireshark嗅探器分析网络协议 实验日期 实验目的 掌握嗅探器工具Wireshark的下载和安装方法 掌握Wireshark的简单使用方法了解抓包结果的分析方法 掌握封装这一操作的具体含义以及TCP/IP体系结构的分层了解...
  • 实验目的:查看客户端向DHCP服务器请求IP过程。实验资料:实验拓扑:实验步骤:...3、在客户端上使用命令ipconfig -renew获取IP,从而查看wireshark捕获数据结果,客户端获得IP,同时wireshark抓取得四个DHCP交流:...
  • 计算机实验网络TCP协议,用wireshark抓包得到,然后分析抓包结果
  • 实验 2 使用 Wireshark 嗅探器分析网络协议 实验日期 实验目的 1 掌握嗅探器工具 Wireshark 的下载和安装方法 2 掌握 Wireshark 的简单使用方法了解抓包结果的分析方法 3 掌握封装这一操作的具体含义以及 TCP/IP ...
  • 作为网络从业者,平时抓包的工作还是挺多的,今天分享一个比较有趣的小实验,通过抓包来分析QQ软件的行为实验环境:Wireshark最新版Windows 7 TIM正文打开Wireshark软件一般是本地连接,双击即可打开后示意图打开QQ/...
  • 实验目的:在两台虚拟机上通过nc...两台虚拟机使用桥接模式连接同一块网卡(方便看到实验结果) nc方式连接抓包过程 实验流程: 0.打开wireshark 抓取eth0上的数据 1.利用nc建立两台主机之间的连接 主机A nc -lp 333...
  • wireshark抓包结果: 2、用SYN的方式进行扫描: wireshark抓包结果: 3、不Ping的情况下进行SYN扫描: wireshark抓包结果: 这里与上面不同的地方就在于没有Ping包,只抓到SYN包 4、UDP端口扫描: wireshark抓...
  • 实验目的:查看局域网内二层ARP通讯过程数据包,从而明白arp...2、在客户端C3上抓包,查看C3与IP172.16.1.3的交流过程包,3、查看客户端C3的arp结果,会添加一条172.16.1.3与MAC绑定的ARP条目。到此ARP请求回应数据...
  • 目录【实验名称】【实验目的】【实验要求】【实验环境】5、参考脚本:构建如图所示虚拟实验网络,可参考如下脚本...4:从主机ns511上ping主机ns513,在途径的网络接口上用wireshark抓包,分析并理解802.1q帧格式;分析L
  • 题目描述: key又找不到了 分值: 350 ...尝试wireshark抓包 1.先在网页上检查元素,查看ip地址(用于在wireshark中作筛选) 2.打开wireshark,开启抓包 点击 “到这里找key_” ,抓包结果如下: 由服务器发
  • 1. Windwos系统下使用Wireshark ...抓包结果 Linux下使用Kismet 安装完成后,在命令输入sudo kismet打开Kismet 添加端口 Kismet的主界面(由于一些操作没有进行成功,这里没有数据显示) ...

空空如也

空空如也

1 2 3
收藏数 48
精华内容 19
关键字:

wireshark抓包实验结果