java arp mac地址_windows下使用winpcap开发包使用arp方法获得网络MAC地址代码

本文介绍了如何在Windows环境下,利用WinPcap库和Java来开发一个程序,通过ARP请求获取指定IP的MAC地址。通过设置网络适配器为混杂模式,监听并解析数据报,当接收到ARP回复时,提取出目标IP的MAC地址。
摘要由CSDN通过智能技术生成

#include #pragma comment(lib,"ws2_32")

#pragma comment(lib,"packet")

#define ETH_IP 0x0800

#define ETH_ARP 0x0806

#define ARP_REQUEST 0x0001

#define ARP_REPLY 0x0002

#define ARP_HARDWARE 0x0001

#define MAX_NUM_ADAPTER 10

#pragma pack(push,1)

//最终发送的数据报结构

typedef struct ethernet_head

{

unsigned char dest_mac[6]; //目标主机mac

unsigned char source_mac[6]; //本地主机mac

unsigned short eh_type; //类型

}ethernet_head, *pEthernetHead;

//ARP数据报头结构

typedef struct arpHead

{

unsigned short hardware_type; //硬件类型

unsigned short protocol_type; //协议类型

unsigned char add_len; //硬件地址长度

unsigned char pro_len; //协议地址长度

unsigned short option; //操作号

unsigned char sour_addr[6]; //发送者硬件地址

unsigned long sour_ip; //发送者协议地址

unsigned char dest_addr[6]; //目的站硬件地址

unsigned long dest_ip; //目的站协议地址

unsigned char padding[18];

}arpHead, *pArpHead;

//IP数据报头结构

typedef struct ipHead

{

unsigned char h_lenver;

unsigned char tos;

unsigned short total_len;

unsigned short ident;

unsigned short frag_and_flags;

unsigned char ttl;

unsigned char proto;

unsigned short checksum; //校验和

unsigned int sourceip; //本地主机IP

unsigned int destip;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值