mac地址扫描实验
更新时间:2024-03-17 16:57:01 阅读量: 综合文库 文档下载
网络攻防对抗 大实验答辩报告
实验名称:ARP协议获取局域网主机mac地址 实验类型:验证型实验 指导老师: 专业班级: 姓 名: 学 号: 电子邮件: 实验地点: 实验日期: 年 月 日
实验成绩:
一、背景知识
在TCP/IP网络环境下,每个主机都分配了一个32位的IP地址,这种互联网地址是在网际范围标识主机的一种逻辑地址。为了让报文在物理网路上传送,必须知道对方目的主机的物理地址。这样就存在把IP地址变换成物理地址的地址转换问题。以以太网环境为例,为了正确地向目的主机传送报文,必须把目的主机的32位IP地址转换成为48位以太网的地址。这就需要在互连层有一组服务将IP地址转换为相应物理地址,这组协议就是ARP协议。
1、ARP协议的工作原理
在每台安装有TCP/IP协议的电脑里都有一个ARP缓存表,表里的IP地址与MAC地址是一一对应的,如附表所示。
我们以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址,直接把目标MAC地址写入帧里面发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播,目标MAC地址是“FF.FF.FF.FF.FF.FF”,这表示向同一网段内的所有主机发出这样的询问:“192.168.1.1的MAC地址是什么?”网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应:“192.168.1.1的MAC地址是00-aa-00-62-c6-09”。这样,主机A就知道了主机B的MAC地址,它就可以向主机B发送信息了。同时它还更新了自己的ARP缓存表,下次再向主机B发送信息时,直接从ARP缓存表里查找就可以了。ARP缓存表采用了老化机制,在一段时间内如果表中的某一行没有使用,就会被删除,这样可以大大减少ARP缓存表的长度,加快查询速度。
2、以太网物理帧和ARP数据帧结构如下图:
二、实验内容
本次作业基于ARP协议,编写程序,实现获取本局域网内全部活动主机MAC地址与IP地址对应列表的程序。
要求使用Winpcap,手动封装ARP请求数据包,实现ARP响应数据包的接收和解析。
最好有界面,如果没有界面,则把获取到的局域网主机MAC信息输出到文件中去。
如果有界面的话,要求实现列出本机所有网络设备,用户能自由选择可用设备进行局域网主机MAC地址的获取,并把获取结果输出到界面上。
三、开发环境
1、开发环境与开发语言
开发时选择了C++语言作为开发语言,并选择Microsoft Visual 2008作为开发环境和编译环境。
(1)开发平台截图如下:
2、运行环境
运行环境是在Windows环境下,鼠标双击可执行程序,或者进入DOS后台,在DOS窗口键入可执行程序名称即可。
四、流程及核心算法实现
1、程序流程
程序流程图如下:
开始 获取所有可用设备,并在控制台显示 提示用户选择设备 可用? 否 提示出错 是 获得本机IP地址,和MAC地址,并在控制台中显示出来 开启两个工作线程,分别负责向局域网内发送ARP请求包和接受局域网返回的ARP回复包 向局网内机逐发ARP求包 域主个送请在控制台显示获取的主机IP地址以及相应的MAC地址 监听ARP响应数据包 结束 2、主要功能代码实现
public static string GetMacAddress(string RemoteIP) {
StringBuilder macAddress = new StringBuilder();//分配一个内存空间 try {
Int32 remote = inet_addr(RemoteIP);
Int64 macInfo = new Int64();//分配一个MAC地址的内存 Int32 length = 6;
SendARP(remote, 0, ref macInfo, ref length);
Console.WriteLine(SendARP(remote, 0, ref macInfo, ref length)); Console.ReadLine();
string temp = Convert.ToString(macInfo, 16).PadLeft(12, '0').ToUpper();
int x = 12;
for (int i = 0; i < 6; i++) {
if (i == 5) {
macAddress.Append(temp.Substring(x - 2, 2)); } else {
macAddress.Append(temp.Substring(x - 2, 2) + \}
x -= 2; }
return macAddress.ToString(); } catch {
return macAddress.ToString(); } }
五、操作演示
选择1.进入自动扫描
选择2.查询局域网内的指定ip
按任意键返回
六、总结
本次作业总共进行了将近一周的时间。在调试程序的过程中,出现了许多明显问题,特别是调试的过程,简直可以用痛苦和艰难来形容。遇到问题,分析问题或是请教别人,到最后解决问题,深入地了解了问题,也学到了好多东西。
问题总结如下:
1、指针概念不清晰。多次把指针定义好后,忘记了赋值,导致指针指向了一个空地址,调试出现错误。通过本次作业,对指针,引用等的概念有了明显的认识。
2、类的观念不强。虽然C++的特点是面向对象编程,但类和对象的观念并没有深入的建立起来,实际上还是停留在面向过程的阶段。通过本次作业,类的观念明显增强。
总之,经过本次作业实践,我认为在对ARP工作的原理的理解有了较大长进,取得了一定的进步,达到了预定目的。
正在阅读:
mac地址扫描实验03-17
煤矿事故现场处置方案07-03
八年级物理上册 第四章 第三节 科学探究:平面镜成像(第1课时 探究平面镜成像特点)练习 教科版05-04
人生感悟哲理文言文-范文模板(3页)01-07
中国工商银行湖南省分行牡丹信用卡购车专项分期付款业务操作流程04-09
学习焦裕禄从眼前做起从今天做起12-05
九年级化学上册2.1.1空气是由什么组成的学案2(无答案)(新版)新人教版10-20
2014年黑龙江赛区TI杯大学生电子设计竞赛成绩 - 图文10-25
小学传统美德作文06-15
化学实验方案的设计01-15
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 扫描
- 实验
- 地址
- mac
- 于珍《马拉松》教案
- P2P网贷的运营流程汇编 - 图文
- 第六章 齿轮系及其设计习题
- painter常用快捷键
- 语文现代文阅读常用术语和答题格式(整理精校版)
- 大学母亲节感恩活动方案
- 智能短信业务规范 - V2.8 - 0.0.5
- 工商联副会长述职报告
- 职业安全周评奖细则
- 济南的冬天导学案2
- AOPA无人机多轴题库(新)讲解
- 萨博汽车仪表盘显示信息中英文对照
- 人教版四年级数学下册竖式计算天天练324
- 公共选修课课程简介
- 静态实点法年终盘点计划书
- 酸碱中和滴定要点归纳
- 2011信息技术教师个人工作总结
- 2015年台湾省考研西医:情绪的生理指标考试试卷
- 新版高中数学人教A版选修2-3习题:第二章随机变量及其分布 2.3.1
- 财务管理复习题1