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

搭建网站并抓包

主要工作

用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解密的字符串,但始终没有发现密码所在位置,只找到了所在数据包;北邮人论坛的用户名是以明文传输的,但密文仍是加密传输。抓包结果如下

posted @ 2020-03-26 22:06  poziiey  阅读(415)  评论(0编辑  收藏  举报