ios network-programming

Direcciones MAC en iOS 10.2



network-programming (1)

Este es solo un código de prueba, solo para dar una idea de cómo obtener la dirección de Mac. Pero estoy seguro de que Apple pronto cerrará esta opción.

-(void) jan_mac_addr_test:(const char*) host { #define BUFLEN (sizeof(struct rt_msghdr) + 512) #define SEQ 9999 #define RTM_VERSION 5 // important, version 2 does not return a mac address! #define RTM_GET 0x4 // Report Metrics #define RTF_LLINFO 0x400 // generated by link layer (e.g. ARP) #define RTF_IFSCOPE 0x1000000 // has valid interface scope #define RTA_DST 0x1 // destination sockaddr present int sockfd; unsigned char buf[BUFLEN]; unsigned char buf2[BUFLEN]; ssize_t n; struct rt_msghdr *rtm; struct sockaddr_in *sin; memset(buf,0,sizeof(buf)); memset(buf2,0,sizeof(buf2)); sockfd = socket(AF_ROUTE, SOCK_RAW, 0); rtm = (struct rt_msghdr *) buf; rtm->rtm_msglen = sizeof(struct rt_msghdr) + sizeof(struct sockaddr_in); rtm->rtm_version = RTM_VERSION; rtm->rtm_type = RTM_GET; rtm->rtm_addrs = RTA_DST; rtm->rtm_flags = RTF_LLINFO; rtm->rtm_pid = 1234; rtm->rtm_seq = SEQ; sin = (struct sockaddr_in *) (rtm + 1); sin->sin_len = sizeof(struct sockaddr_in); sin->sin_family = AF_INET; sin->sin_addr.s_addr = inet_addr(host); write(sockfd, rtm, rtm->rtm_msglen); n = read(sockfd, buf2, BUFLEN); if (n != 0) { int index = sizeof(struct rt_msghdr) + sizeof(struct sockaddr_inarp) + 8; // savedata("test",buf2,n); NSLog(@"IP %s :: %2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x",host,buf2[index+0], buf2[index+1], buf2[index+2], buf2[index+3], buf2[index+4], buf2[index+5]); } }

Parece que a partir de iOS 10.2 , Apple ahora ha impedido el acceso a todas las direcciones MAC, no solo a la de su propio dispositivo.

Sin embargo, hay algunas aplicaciones en la tienda que parece que aún las administran, .eg Fing y Net Analyzer . ¿Siguen funcionando porque se compilaron con un SDK anterior o tienen trucos especiales para recopilar la dirección MAC?

¿Alguien puede compartir una solución alternativa para obtener las direcciones MAC para dispositivos iOS 10.2 en WiFi?