Подтвердить что ты не робот

MAC-адреса в iOS 10.2

Похоже, что начиная с iOS 10.2, Apple теперь запретила доступ ко всем MAC-адресам, а не только к вашему собственному устройству.

Однако в магазине есть некоторые приложения, которые, похоже, все еще управляют, например, Fing и Net Analyzer. Они все еще работают, потому что они были скомпилированы против старого SDK или у них есть специальные трюки для сбора MAC-адреса?

Может ли кто-нибудь использовать обход для получения MAC-адресов для устройств iOS 10.2 на WiFi?

4b9b3361

Ответ 1

Это только тестовый код, просто чтобы дать представление о том, как получить адрес Mac. Но я уверен, что Apple скоро закроет этот вариант.

-(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]);

    }
}