Windows下使用winpcap-2.1ARP探测局域网活动主机(发送ARP请求)

本文介绍如何利用Winpcap库在Windows环境下发送ARP请求来探测局域网内的活动主机。通过创建控制台程序,包含必要的头文件如'packet32.h'和'ntddndis.h',并构建ARP数据包结构体,向网络广播ARP请求,根据收到的ARP应答判断主机活跃状态。同时推荐配合Wireshark进行数据包捕获和调试。
摘要由CSDN通过智能技术生成

通过上一次的配置环境,现在就可以使用了,那么这里我们就先来发一个arp请求吧,这里建议大家安装一个wireshark(抓包工具,操作简单),以便于我们随时查看数据包,方便调试。

首先,我们需要知道的是,ARP是地址解析协议,工作在数据链路层,用来在一个局域网内获取一个IP的mac地址,当我们想要知道一个IP的MAC地址的时候,我们就向局域网广播一个arp请求,如果此IP为活动主机,则其就会回复一个arp应答,我们就是通过有没有收到arp应答来判断此ip主机是否为活动的。

按照上次文章所说的建立好工程,我建立的是简单的控制台程序,配好环境,写上需要的头文件,这里我们还需要#include"packet32.h",#include "ntddndis.h"这两个头文件,我们会用到里面的一些东西。

先定义三个结构体,用来表示我们的包,以太网首部和arp包

//以太网首部 
struct ethernet_head
{
	unsigned char dest_mac[6];//目的MAC地址
	unsigned char source_mac[6];//源MAC地址
	unsigned short eh_type;//帧类型
};
//arp数据包
struct arp_head
{
	unsigned short hardware_type;//硬件类型
	unsigned short protocol_type;//协议类型
	unsigned char add_len;//硬件地址长度
	unsigned char pro_len;//协议地址长度
	unsigned short option;//操作类型,arp请求与应答,rarp请求与应答
	unsigned char sour_addr[6];//源MAC
	unsigned long sour_ip;//源IP
	unsigned char dest_addr[6];//目的MAC
	unsigned long dest_ip;//源IP
	unsigned char padding[18];//填充数据
};
//发送的数据包
stru
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值