教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 高等教育 >

mac地址扫描实验

来源:网络收集 时间:2026-08-29
导读: 网络攻防对抗 大实验答辩报告 实验名称:ARP协议获取局域网主机mac地址 实验类型:验证型实验 指导老师: 专业班级: 姓 名: 学 号: 电子邮件: 实验地点: 实验日期: 年 月 日 实验成绩: 一、背景知识 在TCP/IP网络环境下,每个主机都分配了一个32位的I

网络攻防对抗 大实验答辩报告

实验名称: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(); } }

五、操作演示

…… 此处隐藏:326字,全部文档内容请下载后查看。喜欢就下载吧 ……
mac地址扫描实验.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/614231.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)