• 网络嗅探与协议分析之验收题


    搭建网站并抓包

    主要工作

    用phpstudy搭建一个本地网站(只实现了注册登录功能),然后使用wireshark进行抓包分析出账号和密码。

    网站功能实现

    该简易网站会用到5个PHP文件,完整代码已上传至码云。码云链接
    网站主要界面如下:

    搭建网站

    关于phpstudy的下载在此不赘述。有时候会遇到apache、MySQL无法启动的问题,或者phpstudy的MySQL与本地MySQL发生冲突等问题,网上也给出了很多办法可以参考。

    1)首先找到phpstudy路径下的WWW文件夹,在此新建一个文件夹test存放PHP文件。

    2)打开PHPstudy-其他选项菜单-phpMyAdmin-建立网站需要的数据库-数据库名user-表单名usertext

    3)上述数据库对应PHP文件中的loginaction.php和registeraction.php

    4)在浏览器中输入localhost【其实也可以在站点域名管理中新增域名,但是还要修改hosts文件,就偷个懒吧

    5)在我们搭建好的网站中注册-登录,进行测试。

    抓包

    此时要注意的时,我们搭建的是本地网站,而wireshark是通过网卡来捕获数据包,loopback接口上的数据因为其特殊性(本地环回),是在操作系统内部转发的,不会通过网卡,类似于进程间通信。

    故在这里我们有一个额外的工作:借用npcap工具。关于npcap的下载安装在此不赘述,就两个next搞定。它虚拟了一个网卡让操作系统把loopback的数据镜像一份到npcap adapter,然后wireshark可以通过截取这个npcap adatper上的数据包来获得对本地数据包进行分析。它可以捕获的数据包有:

    • http包:用于web接口的分析
    • tcp包:用于各种基于tcp的通信接口/协议的分析

    打开waireshark发现我们多了一个监听接口Npcap loopback Adapter,事实上我们的网络管理中心也多了一块网卡。

    下面开始我们真正的工作。。。(真的铺垫了好久。。有一种自导自演的感觉( ╯-_-)

    在wireshark中选择Npcap loopback Adapter进行监听——在搭建好的网站中进行登录操作——查看我们捕获的数据包

    说明:这里的捕获其实和第四周作业中telnet登录的数据包捕获有异曲同工之妙,只不过上次是telnet数据包,这次是http数据包。

    分析抓包工具源码

    主要工作

    源码来源:raholly@foxmail.com 源码百度云链接:https://pan.baidu.com/s/1Ges-BAf5T8a1d2t53s5FGw 提取码:wf3r
    在Visual Studio中运行代码得到UI界面,对该工具的功能进行展示,分析核心代码。

    功能展示

    该工具的UI界面仿照wireshark,首先选择网卡,然后捕获数据包,此外还可以根据规则对数据包进行过滤,还可以在捕获数据包时进行流量统计,方便用户实时观测网络情况。

    代码分析

    根据上述功能可以画出程序流程图如下

    该项目文件架构如下

    该工具的模块包括网络适配器的获取与释放、数据包的抓取与存储、过滤器、协议分析、流量分析。时间有限,在此仅对数据包抓取部分作简单研究。数据包的抓取与存储采用了多线程的设计,若不采用多线程则在抓包时主窗口进程会失去反应,而造成程序假死。

    1、当选择了网卡设备点击 Start 后,程序开始线程 UINT ReadDumpThread(LPVOIDlpParameter),参数 lpParameter 传递的是当前选择的设备,然后使用 pcap_open()函数打开设备。该函数的原型如下:pcap_t* pcap_open(const char *source,int snaplen,int flags, intread_timeout,struct pcap_rmtauth *auth,char *errbuf)该函数能返回一个设备的句柄,并且能设置网卡是否工作在混杂模式。

    2、随后使用 pcap_compile()相 pcap_setfilter()函数设置过滤器。

    3、接着使用 pcap_next_ex()函数获取数据包,该函数原型如下,int pcap_next_ex ( pcap_t *p,struct pcap_pkthdr **pkt_header,const u_char ** pkt_data)pcap_next_ex() 在成功、超时、出错或 EOF的情况下,会返回不同的值。在 while循环中判断该返回值,满足一定条件继续抓包,以此来实现不停抓包。

    4、抓到包后,将包信息复制给满足条件的结构体进行简单分析,并将包信息显示到列表框中。

    5、最后使用 pcap_dump_open()来打开一个脱机堆文件,获得一个 pcap_dumper_t结构体指针, 随后用 pcap_dump()存储已经抓到的包,这两个函数的原型如下:
    (1)pcap_dumper_t* pcap_dump_open( pcap_t *p, const char *fname)
    (2)void pcap_dump( u_char *user,const struct pcap_pkthdr *h,constu_char *sp)

    附加题

    主要工作

    在手机上登录多点app及北邮人论坛,同时使用fiddler对手机进行抓包,分析登录账号及密码。

    抓包过程及结果

    手机设置无线网络主要步骤如下

    抓取了多点app及北邮人论坛的登录过程,其中多点app使用了加密传输,尝试过把密码改为admin123等方便MD5解密的字符串,但始终没有发现密码所在位置,只找到了所在数据包;北邮人论坛的用户名是以明文传输的,但密文仍是加密传输。抓包结果如下

  • 相关阅读:
    怪怪设计论闲谈篇:职责与解耦的矛盾
    知识传播与社区讨论 : 兜售狗皮膏药的"软件先知"
    反弹和补遗:再论Bjarne Stroustrup的"基于对象"的含义
    回帖整理: 领域建模/表模块,Java/.NET 社区风格
    贫血或职责的讨论
    近期可能会研究和讨论的个人动向
    CLR寄宿(上) MSCOREE.DLL
    代码组(2) 成员条件
    说说emit(中)ILGenerator
    CLR寄宿(下) 托管宿主
  • 原文地址:https://www.cnblogs.com/poziiey/p/12576381.html
Copyright © 2020-2023  润新知