#include<iostream>
#include <stdlib.h>
#include <pcap.h>
#include <remote-ext.h>
#pragma comment(lib, "ws2_32.lib")
using namespace std;
//ARP数据包结构
typedef struct ArpStruct{
u_short hdtype; //硬件类型(2B),值为0001表示它为Ethernet
u_short protype; //协议类型(2B),值为0800表示上层协议为IP
u_char hdsize; //物理地址长度(1B),值为06
u_char prosize; //协议地址长度(1B),值为04
u_short op; //操作(2B),值为0001表示ARP请求,值为0002表示ARP应答
u_char sMacAddr[6]; //源物理地址(6B)
u_char sIpAddr[4]; //源IP地址(4B)
u_char dMacAddr[6]; //目的mac地址(6B)
u_char dIpAddr[4]; //目的IP地址(2B)
}ArpStruct;
int main()
{
pcap_if *alldevs; //存放网卡列表的链表
pcap_if *d; //指定上述链表的某个结点
int inum; //通过输入序号选择网卡
int i=0; //网卡列表序号
pcap_t *adhandle; //网卡句柄
char errbuf[PCAP_ERRBUF_SIZE]; //错误信息记录块
u_int netmask; //子网掩码
char packet_filter[] = "ether proto \\arp"; //设置正则表达式,只过滤arp包
struct bpf_program fcode;
// 获得网络设备列表
if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -
[安全]使用ARP协议获取局域网内部活动主机的物理地址
最新推荐文章于 2022-03-15 11:45:01 发布
本文详细介绍了如何利用ARP协议来获取局域网内部活动主机的物理地址。通过解析ARP请求和响应的过程,理解ARP协议在确定IP地址与MAC地址对应关系中的关键作用。同时,探讨了这一技术在网络安全监测和管理中的潜在应用。
摘要由CSDN通过智能技术生成