网络攻击与防御技术实验报告

实验目的

本实验通过研究Winp c ap中常用的库函数的使用方式来实现了一个小型的网络数据包抓包器并通过对原始包文的分析来展示当前网络的运行状况。

实验内容

1. 实现对网络基本数据包的捕获

2. 分析捕获到的数据包的详细信息

实验环境

1. Wp dP ac k_4_0_1支持库

2. VC++6.0开发环境

3. Window s操作系统

实验设计

系统在设计过程中按照MVC的设计模式整体分为三层。第一层为Contro l层即控制层这里为简化设计将C ontr o l层分为两个部分一部分为网络报文输入另一部分为用户输入第二层是Model层即模型层第三层为View层即显示层。

系统的整体运行过程为从Control层得到数据交到Mo del层进行处理将处理完的结果交View层进行显示。 Contro l层主要用于网络数据包的捕获以及获得用户的输入Model层主要用于分析数据包处理用户的输入 View层主要用于对处理后的结果进行显示。

详细过程

程序在执行过程中有两个核心的工作一是调用Winp c ap函数库实现下层抓包。二是对抓到的包文进行分析。下面分别列出两个核心过程的基本算法与相关的实现代码。

抓包算法

第一初始化Winp c ap开发库

第二获得当前的网卡列表 同时要求用户指定要操作的网卡

第三获得当前的过滤规则可为空

第四调用库函数 pcap_loop   同时并指定其回调函数其中其回调函数为数

据包分析过程。

对应的相应核心代码为

I f((pCap=pcap_open_live(getDevice()->name,65536,1,1000,strErrorBuf))==NULL)

{ r e tur n-1; }

If(pc ap_c ompile(pCap,&fc ode,filter, 1,NetMask)<0)

{ r e tur n-1; }if(pcap_setfilter(pCap,&fc ode)<0)

{ r e tur n-1; }do{pc ap_loop(pCap,1,pc ap_handle,NULL);

}while(nF lag);

分析算法

第一得到数据包先将其转存到内存里 以备以后再用。

第二分析当前的数据包分析过程如下

1. 数据包的前14个字节Byte代表数据链路层的报文头其报文格式是前6 Byte为目的MAC地址随后的6个Byte为源Mac地址最后的2Byte代表上层协议类型这个数据很重要是我们分析上层协议的依据。

2. 根据1所分析到的协议类型进行类似1的迭代分析。这样就可以得到各层中的报文头信息和数据信息。

第三结束本次分析。

分析算法部分实现代码m_pktHead ers.Add(pHe ader);m_pktDatas.Add(pData);

CFramePacket *pFramePacket=new CFramePacket(pData,14);if(pFramePac ket->GetType()==0x0800)

{

CIPPacket ipPacket(pData+14,pHeader->len-14);if(ipPacket.GetProtoc ol()=="UDP")

{

CUDPPacket *pUDPPacket = new

CUDPPac ket(ipP ac ket.GetTData(),ipPac ket.GetDataLength());

}else if(ipPacket.GetProtocol()=="TCP")

{

CTCPPacket *pTCPPacket = new

CT CPPac ket(ipPac ket.GetTData(),ipPac ket.GetDataLength());

}

}else if(pFramePacket->GetType()==0x0806)

{

CARPPacket *pARPPacket=new CARPPacket(pData+14,pHeader->len-14);}els e if(pFramePacket->GetType()==0x8035)

{}els e if(pFramePac ket->GetType()==XXXX)

{}

……

在设计分析算法时有一个基础是构造各种协议的数据类型本系统在处理些过程是充分

采用面向对象的设计思想对各种协议进行类封装每个类的重写构造函数其入口参数为数据包数据和本协议在数据包中的长度共内容是完成分析这一数据段同时初始化协议中的各个参数信息。类对外提供各个接口以满足上层对协议数据的调用。下面以链路层帧类为例

//用于处理链路层数据class CFramePacket

{public:

CFramePac ket();virtual~CFramePac ket();

CFramePacket(c onst unsigned char *buf,int buflen)

{unsigned char *pPos;pPos=(unsigned char*)buf;for(int i=0;i<6;i++)

{m_nDestAddr[i]=*pPos;pPos++;

}for(i=0;i<6;i++)

{m_nSrcAddr[i]=*pPos;pPos++;

}m_nType=(*pPos)*0x 100+(*(pPos+1));

}

Vo id GetMac SrcAddr(char *str)

{sprintf(str,"%02X-%02X-%02X-%02X-%02X-%02X",m_nSrcAddr[0],m_nSrcAddr[1],m_nSrcAddr[2],m_nSrcAddr[3],m_nSrcAddr[4],m_nSrcAddr[5]);

}

CString GetMac SrcAddr()

{

CString str;str.Format("%02X-%02X-%02X-%02X-%02X-%02X",m_nSrcAddr[0],m_nSrcAddr[1],m_nSrcAddr[2],m_nSrcAddr[3],m_nSrcAddr[4],m_nSrcAddr[5]);return s tr;

}void GetMacDestAddr(char *str)

{sprintf(str,"%02X-%02X-%02X-%02X-%02X-%02X",m_nDes tAddr[0],m_nDes tAddr[1],m_nDes tAddr[2],m_nDes tAddr[3],m_nDes tAd

dr[4],m_nDes tAddr[5]);

}

CString GetMac DestAddr()

{

CString str;str.Format("%02X-%02X-%02X-%02X-%02X-%02X",m_nDes tAddr[0],m_nDes tAddr[1],m_nDes tAddr[2],m_nDes tAddr[3],m_nDes tAddr[4],m_nDes tAddr[5]);return s tr;

}

Int GetType()

{return m_nTyp e;

}private:int m_nSrcAddr[6]; //源MAC地址int m_nDestAddr[6]; //目的MAC地址int m_nType; //网络层报文类型:IP,ARP,RARP

};

实验结论

通过可视化的程序开发程序的主界面如下图所示

实验体会 碰到的问题、如何解决、有何体会

1. 实验中的遇到的问题 在本次实验中我认为有一个问题比较麻烦就是对抓到的包进行分析并提取出相应的位填充到对应的数据类型中对于这个问题采用的是查看相应的协议书并从网上看了一下流行的处理办法。

2. 实验中的收获一定程度上加深了对T CP/IP协议的理解对课程学习打下了一个比较好的基础用一些设计模式在一定程度能提高开发效能 降低开发的复杂度

Linux网络嗅探器实验报告,分析网络嗅探器实验报告相关推荐

  1. 2022-2027年中国农村网络零售行业市场深度分析及投资战略规划报告

    [报告类型]产业研究 [报告格式]电子+纸介版 [出品单位]华经产业研究院 本报告由华经产业研究院重磅推出,对中国农村网络零售行业的发展现状.竞争格局及市场供需形势进行了具体分析,并从行业的政策环境. ...

  2. [网络安全课程实验]:基于nmap 的网络扫描和信息分析

    实验:基于nmap 的网络扫描和信息分析 一.实验目的 1)熟悉TCP.UDP协议基础: 2)掌握nmap扫描原理,能够使用命令行与图形界面进行信息收集: 3)熟练使用nmap常用参数对不同网络环境进 ...

  3. 基于python的网络爬虫开题报告_网络爬虫开题报告.docx

    网络爬虫开题报告 网络爬虫开题报告 篇一:毕设开题报告 及开题报告分析 开题报告如何写 注意点 1.一.对指导教师下达的课题任务的学习与理解 这部分主要是阐述做本课题的重要意义 2.二.阅读文献资料进 ...

  4. 计算机网络实验 局域网的组建,计算机网络实验-局域网组建及测试实验

    局域网组建及测试实验 一.实验目的 1.掌握使用双绞线作为传输介质的网络连接方法,学会制作两种类型的接头.学会测线器的使用方法. 2.以双绞线为传输介质连接多台计算机,要求掌握基本的计算机网络知识.T ...

  5. 计算机网络实验报告嗅探器,《计算机网络实验报告》5_网络嗅探与协议分析实验.pdf...

    计算机网络实验报告 1. 实验报告如有雷同,雷同各方当次实验成绩均以 0 分计. 警示 2. 当次小组成员成绩只计学号.姓名登录在下表中的. 3. 在规定时间内未上交实验报告的,不得以其他方式补交,当 ...

  6. linux内核分析 网络九,“Linux内核分析”实验报告(九)

    一 Linux内核分析博客简介及其索引 本次实验简单的分析了计算机如何进行工作,并通过简单的汇编实例进行解释分析 在本次实验中 通过听老师的视频分析,和自己的学习,初步了解了进程切换的原理.操作系统通 ...

  7. 华中科技大学计算机与网络,华中科技大学计算机通信与网络实验报告-基于NS2的协议分析实验...

    华中科技大学计算机通信与网络实验报告-基于NS2的协议分析实验 (26页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.9 积分 实验二基于NS2的协 ...

  8. 局域网网络流量监控_【干货】Linux网络安全运维:网络流量监控与分析工具Ntop和Ntopng...

    本文授权转载自微信公众号:计算机与网络安全,转载请联系授权.对于单台服务器网络故障的排查,iftop工具可以轻松实现,但是在监控一个庞大的服务器网络,并且要分析每台主机以及端口的网络状态时,iftop ...

  9. 20165230 《Java程序设计》实验五《网络编程与安全》实验报告

    20165230 <Java程序设计>实验五<网络编程与安全>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: ...

最新文章

  1. NDK JNI方式读写Android系统的demo(二)
  2. AWK用法详解(转载)
  3. 010-映射诊断环境
  4. Reading Club Questions Feedback
  5. html输入密码自动隐藏,原生js实现密码输入框值的显示隐藏
  6. 【angularjs】使用angular搭建项目,pc端实现网页中的内容不可复制
  7. ajax获取数据用弹窗显示_Vue之 点击返回弹出推荐商品弹窗
  8. 02.改善深层神经网络:超参数调试、正则化以及优化 W1.深度学习的实践层面(作业:初始化+正则化+梯度检验)
  9. 信息学奥赛C++语言:奇数1
  10. JVM调优大全及实战总结
  11. Java多线程多个线程之间共享数据
  12. 无线信号拓展与覆盖的解决方案
  13. android 版本 6.0升级包,EMUI 6.0系统刷机包
  14. 新版标准日本语中级_第二十三课
  15. 计算机不定时黑屏,宏基acer 4736ZG不定时黑屏,时亮时不亮通病维修
  16. python爬虫简单入门(爬网页文本信息)
  17. ug908 Programming and Debugging
  18. 唯品会OAuth api_sign
  19. c语言求sin x近似值,用泰勒公式求sin(x)的近似值
  20. blog--java后台获取富文本编辑器的内容,博客的磁盘路径与实际博客的存储

热门文章

  1. 考研资料分享——百度网盘获取
  2. 游戏技术汇:莉莉丝COO张昊解剖《刀塔传奇》开发经验心得
  3. 最强特殊字符、表情符号、Unicdeo字符串处理
  4. repost 双非本科到腾讯的编程奋斗之路
  5. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-025(Miscellaneous-200)
  6. SVN忽略项目中的文件或者文件夹
  7. 注册表编辑器被改这样恢复
  8. 《设计你的人生》的部分经典语录
  9. Matlab系列教程_数值计算_求协方差和相关系数
  10. js判断true和false