¡¾ÇóÖú¡¿ÄÄλ´ó¸çÄܸæËßÎÒÈçºÎÔÚLINUXÏÂʹÓÃARP»ñȡԶ³ÌÖ÷»úµÄmac
ÎÒ±àÁËÔÚwindowsϵÄ,¿ÉÊÇÔÚlinuxÏÂÔõôʵÏÖÄØ?:confused: ÓÐʲô²»Í¬µÄÂð£¿ÄãʹÓÃÁËʲô·ÇC±ê×¼¿âµÄº¯ÊýÂ𣿠ÈçºÎÓÃarpÎÒ²»ÖªµÀ£¬²»¹ýÄã¿ÉÒÔÊÔÊÔlibpcap£¬Ö±½Ó×¥datalink packet£¬ÀïÃæÓÐmacµØÖ·¡£ #include <stdio.h>#include <string.h>J c2WH!oZ
8e@{X\0wr
#include <sys/types.h> C'es9O q+a$X
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>[tjv*er6I
#include <net/if_arp.h>
#include <netinet/in.h>,? Lo+yrE[#M1Nd(ZN
(A.^6G8WQ{#}TV
int main(int argc, char **argv)B5XtkK.U|
{$QD*Xnv#_J @
int sockfd;YdW;JoJR.w8S
unsigned char *ptr;
struct arpreq arpreq;
struct sockaddr_in *sin;
struct sockaddr_storage ss;
char addr[INET_ADDRSTRLEN+1];
memset(addr, 0, INET_ADDRSTRLEN+1);T j9PIz6f O
memset(&ss, 0, sizeof(ss));-CM3v%AxzX
][$n L w2r M!p,i
if (argc != 2) {
printf("USAGE arpg ip_addr\n");nEYmO%T*Tt'w,\
return -1;
}
sockfd = socket(AF_INET, SOCK_DGRAM, 0);:e)}vKB5W
if (sockfd == -1) { z@,Rr5_z;j9q
perror("socket error");
return -1;1Co@aY,B1k9k4^(VZ
}
sin = (struct sockaddr_in *) &ss;
sin->sin_family = AF_INET;
if (inet_pton(AF_INET, argv[1], &(sin->sin_addr)) <= 0) {
perror("inet_pton error");O Ie'i/N)}[I$t:N
return -1;4g@;BM F uVL,P
}
:M#@Id]B
sin = (struct sockaddr_in *) &arpreq.arp_pa;
memcpy(sin, &ss, sizeof(struct sockaddr_in));
strcpy(arpreq.arp_dev, "eth0");
arpreq.arp_ha.sa_family = AF_UNSPEC;
r,^;Ptl
if (ioctl(sockfd, SIOCGARP, &arpreq) < 0) {
perror("ioctl SIOCGARP: ");
return -1;
}j0@*D3S!I
ptr = (unsigned char *)arpreq.arp_ha.sa_data;
printf("%x:%x:%x:%x:%x:%x\n", *ptr, *(ptr+1), *(ptr+2), *(ptr+3), *(ptr+4), *(ptr+5));
return 0;
} ¼ÈÈ»ÓÐÈËÌùÁËÔ´Â룬¾ÍÏÈÈÓµ½¾«»ªÀﱸ²é°É¡£ ºÃÏñͬһ¸öÍø¶ÎµÄ²Å¿ÉÒÔÈ¡µÀMAC ¡£²»Í¬µÄÍø¶ÎÖ»Óп¿±ðµÄ·½·¨ÁË¡£ Çó¾È: ÎҵĻúÆ÷²»ÖªµÀ˶¯ÁË,ÏÖÔÚÆð»ú¾Í³öÏÖÕâ¸öÆÁÄ»
GRUB version 0.93 1639k lower / 252864k upper memory
[ Minimal BASH-like line deiting is supported.For the first word , TAB%i QsH'p1]]2|E
lists possible command completions.Anywhere else TAB lists the possible
completions of a device/filename.]
grub>XKf_azMXT?
µ±ÎÒ°´ÏÂTAB¼üʱ³öÏÖ'{7w"j7Sd
Possible commands are:background blocklist boor cat chainloader clear cmp color
configfile debug display amp displaymem embed find foreground fstest geometry
halt help hide impsprobe initrd install ioprobe kernel lock makeactive map md5
crype module modulenounzip pager partnew parttype password pause read reboot root
rootnoverify savedefault serial serial setkey setup splashimage terminal terminfo
testload testvbe unhide uppermem vbeprobe
ÎÒ ÊÇÐÂÊÖ²»ÖªµÀÕâÊÇÔõô»ØÊÂ
Çë¸÷λ¸ßÊÖ°ï°ïæ.лл. Â¥ÉϵÄÕ¦»ØÊ£¿²»»á·¢ÐÂÖ÷ÌâÂð£¿ÔÙËµÃ²ËÆÒ²ÅÜ´í°æÁ衃 libpcap ¿ÉÒÔʵÏÖ
££4Â¥µÄ·½·¨ºÃ°¡
----------------------------------------------------------
[url]http://blog.csdn.net/fengyv[/url] ºÇºÇ,лл´ó¼ÒµÄ°ïÖú,ÎҺܾÃûÓÐÉÏÀ´ÁË,ºóÀ´ÕÒµ½Á˺÷½·¨,¾ÍÊÇ×Ô¼º¶¨ÒåÒ»¸öARP°ü²¢ÇÒ½«°ü·¢³öÈ¥¾Í¿ÉÒÔÁË.
+Ln ~3hs{
²»¹ýͨ¹ýARPÖ»ÄÜÔÚÍ¬Ò»Íø¶ÎÖлñµÃMAC,Èç¹ûÏëÔÚ²»Í¬Íø¶ÎÄÇôֻÓÐͨ¹ýSNIFFE×¥°üÁË.:i j7dO-C&w0P(Q
struct _Ether_pkg {lH1j'vkT/G:\!j
/* Ç°ÃæÊÇethernetÍ· */ B&vpd q8|#hO
unsigned char ether_dhost[6]; /* Ä¿µØÓ²¼þµØÖ· */cGt5KN{/|(fV{9Pj+R
unsigned char ether_shost[6]; /* Ô´Ó²¼þµØÖ· */5d6{Waba
unsigned short int ether_type; /* ÍøÂçÀàÐÍ */
/* ÏÂÃæÊÇarpÐÒé */M0B@+BEOd6Cj
unsigned short int ar_hrd; /* Ó²¼þµØÖ·¸ñʽ */
unsigned short int ar_pro; /* ÐÒ鵨ַ¸ñʽ */6S{*z5[k0_ dJ1~
unsigned char ar_hln; /* Ó²¼þµØÖ·³¤¶È(×Ö½Ú) */0uY]*PoH
unsigned char ar_pln; /* ÐÒ鵨ַ³¤¶È(×Ö½Ú) */|)ZN{e_9gg SU
unsigned short int ar_op; /* ²Ù×÷´úÂë */#r$vS5?n4[#Sb
unsigned char arp_sha[6]; /* Ô´Ó²¼þµØÖ· */
unsigned char arp_spa[4]; /* Ô´ÐÒ鵨ַ */
unsigned char arp_tha[6]; /* Ä¿µØÓ²¼þµØÖ· */k1Hp#gLr3o
unsigned char arp_tpa[4]; /* Ä¿µØÐÒ鵨ַ */'||0e$e!x~(_ o
}; Ç°Ãæ [color=red]lenger81[/color] µÄ code ¿´ËÆÃæÊì, ÊDz»ÊÇ UNP ÀïÃæµÄ :) try datalink socket,using protocol family pf_packet,you can get the target mac address
easily Õâ¸öÔÚLINUXÀïºÃÏñ²»ÄÜÓÃÁË£¬
ÎÒÔËÐÐ×ÜÊÇioctl SIOCGARP: : Invalid argument
ÊéÉÏ˵ÔÚеÄϵͳÖв»Ö§³ÖioctlµÄSIOCGARP,
ÒªÓÃAF_ROUTE
Ò³:
[1]