Sur tous les appareils que je pourrais obtenir mes mains sur, la règle suivante semble appliquer - adresse MAC iPhone wifi est un plus grand que l'adresse MAC bluetooth de l'iPhone - L'adresse MAC de l'iPad wifi est inférieure à l'adresse MAC de l'iPad bluetooth.
Il serait utile que les gens vérifient cela sur leur iPhone ou iPad, de sorte que nous puissions augmenter la confiance dans la théorie. J'ai vérifié sur quelques appareils iPhone4, iPhone3 et iPad1.
Vous pouvez le vérifier par des paramètres d'ouverture - General - A propos de et regarder « Wi-Fi Adresse » et « Bluetooth »
Si la théorie est correcte, le code juridique suivant récupérerez votre bluetooth mac adresse:
#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);
}
}
Merci. J'espérais que je pourrais l'obtenir plus ou moins de la même façon que nous pouvons récupérer l'adresse MAC WiFi ... – drkbrd
Je pense que cela pourrait être réalisable si l'iPhone est en mode tethering via Bluetooth. – rpetrich
Veuillez poster un extrait de code pour l'utilisation de la clé kLockdownBluetoothAddressKey via liblockdown.dylib –