文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>读ARP表

读ARP表

时间:2010-03-10  来源:PHP爱好者

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <linux/sockios.h>
#include <net/if_arp.h>
#include <linux/in.h>
  int Main(char *ip,char * mac)
{
 int sockfd;
 unsigned char *ptr;
 struct arpreq arp_req;
 struct sockaddr_in *sin;
 struct sockaddr_storage ss;
 char addr[50];

 memset(addr,0,sizeof(addr));
 memset(&ss,0,sizeof(ss));


 sockfd=socket(AF_INET,SOCK_DGRAM,0);
 if(sockfd < 0)
 {
  debugf("socket error\n");
  return -1;
 }
 memset(&arp_req,0,sizeof(arp_req));
 sin = (struct sockaddr_in *) &ss;
 arp_req.arp_pa.sa_family = AF_INET;
 
 sin->sin_family = AF_INET;
 if(inet_pton(AF_INET,ip,&(sin->sin_addr)) <= 0)
 {
  debugf("inet_aton error ...\n");
  close(sockfd);
  return -1;
 }
 
 
 sin = (struct sockaddr_in *) &arp_req.arp_pa;
 memcpy(sin,&ss,sizeof(struct sockaddr_in));
 strcpy(arp_req.arp_dev,"eth0");
 strcpy(arp_req.arp_dev,InterfaceName);
 arp_req.arp_ha.sa_family = AF_UNSPEC;
 
 if(ioctl(sockfd,SIOCGARP,&arp_req) < 0)
 {
  debugf("ioctl SIOCGARP: error\n");
  close(sockfd);
  return -1;
 }
 ptr = (unsigned char *) arp_req.arp_ha.sa_data;
// debugf("%x:%x:%x:%x:%x:%x\n",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
 sprintf(mac,"%x:%x:%x:%x:%x:%x",*ptr,*(ptr+1),*(ptr+2),*(ptr+3),*(ptr+4),*(ptr+5));
// debugf("Mac = %s ... \n",mac);
 close(sockfd);
 return 0;
}
相关阅读 更多 +
排行榜 更多 +
弓箭手战士酷跑

弓箭手战士酷跑

飞行射击 下载
三角洲行动全面战场攀升A点进攻指南

三角洲行动全面战场攀升A点进攻指南

飞行射击 下载
僵尸射手世界大战

僵尸射手世界大战

飞行射击 下载