2010-06-03 129 views

回答

4

沒有公共API來獲取此信息。

如果這是一個內部或越獄應用程序,您可以通過liblockdown.dylib

+0

謝謝。我希望可以像我們檢索WiFi MAC地址一樣獲得它... – drkbrd 2010-06-04 07:22:34

+0

我認爲,如果iPhone通過藍牙進行共享模式,則可行。 – rpetrich 2010-06-04 18:51:19

+3

請通過liblockdown.dylib發佈使用kLockdownBluetoothAddressKey密鑰的代碼片段 – 2012-02-16 15:16:53

6

得到kLockdownBluetoothAddressKey鍵的值在所有設備上我能得到我的手,下面的規則似乎也適用 - iPhone的WiFi MAC地址是一個比iPhone大的藍牙MAC地址 - iPad wifi MAC地址是比iPad藍牙MAC地址少一個。

如果人們在iPhone或iPad上檢查這些信息會有幫助,這樣我們就可以增加對理論的信心。我檢查了一些iPhone4,iPhone3和iPad1設備。

您可以通過打開設置檢查 - 通用 - 關於 ,看着「Wi-Fi地址」和「藍牙」

如果理論是正確的,下面法律代碼將檢索您的藍牙MAC地址:我的iPhone4的iOS 5.0.1

#include <sys/types.h> 
#include <sys/socket.h> 
#include <ifaddrs.h> 
#include <netdb.h> 
#include <net/if_dl.h> 
#include <string.h> 

#if ! defined(IFT_ETHER) 
#define IFT_ETHER 0x6/* Ethernet CSMACD */ 
#endif 

void doMacTest() { 
    BOOL      success; 
    struct ifaddrs *   addrs; 
    const struct ifaddrs *  cursor; 
    const struct sockaddr_dl * dlAddr; 
    const uint8_t *    base; 

    // We look for interface "en0" on iPhone 

    success = getifaddrs(&addrs) == 0; 
    if (success) { 
     cursor = addrs; 
     while (cursor != NULL) { 
      if ((cursor->ifa_addr->sa_family == AF_LINK) 
        && (((const struct sockaddr_dl *) cursor->ifa_addr)->sdl_type == IFT_ETHER) 
        && (strcmp(cursor->ifa_name, "en0") == 0)) { 
       dlAddr = (const struct sockaddr_dl *) cursor->ifa_addr; 
       base = (const uint8_t *) &dlAddr->sdl_data[dlAddr->sdl_nlen]; 

       if (dlAddr->sdl_alen == 6) { 
        fprintf(stderr, ">>>    WIFI MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]); 
        fprintf(stderr, ">>> IPHONE BLUETOOTH MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]-1); 
        fprintf(stderr, ">>> IPAD BLUETOOTH MAC ADDRESS: %02x:%02x:%02x:%02x:%02x:%02x\n", base[0], base[1], base[2], base[3], base[4], base[5]+1); 
       } else { 
        fprintf(stderr, "ERROR - len is not 6"); 
       } 
      } 
      cursor = cursor->ifa_next; 
     } 
     freeifaddrs(addrs); 
    } 

} 
+0

理論也適用於我的iPad 3 – 2012-11-06 14:17:18

+0

理論在我的iPhone 4上正確,但不在iPod 4上 - 最後5個十六進制數字不同。 – newenglander 2013-03-21 15:34:21

+3

在iOS 7及更高版本中,如果您要求輸入iOS設備的MAC地址,系統將返回值02:00:00:00:00:00 https://developer.apple.com/news/?id= 8222013a – 2013-09-27 14:44:24

0

MAC地址是按以下順序比較它們的最後一位數字:

63 = Bluetooth 
64 = WiFi 

iPad2 v5.0.1 was: 

0D = Bluetooth 
0E = WiFi 

iPod Touch第二代iOS 4.2.1完全不同。

??.FC = WiFi 
xx.04 = Bluetooth 
相關問題