`

ios 获取设备mac地址

阅读更多
获取mac地址的代码

//头文件记不清楚是哪些了,忘记那些是不是都需要
#import  <ifaddrs.h>
#import <arpa/inet.h>
#include <sys/socket.h>
#include <sys/sysctl.h>
#include <net/if.h>
#include <net/if_dl.h>



-(NSString *) macaddress
{
    int                 mgmtInfoBase[6];
    char                *msgBuffer = NULL;
    size_t              length;
    unsigned char       macAddress[6];
    struct if_msghdr    *interfaceMsgStruct;
    struct sockaddr_dl  *socketStruct;
    NSString            *errorFlag = NULL;
   
    // Setup the management Information Base (mib)
    mgmtInfoBase[0] = CTL_NET;        // Request network subsystem
    mgmtInfoBase[1] = AF_ROUTE;       // Routing table info
    mgmtInfoBase[2] = 0;
    mgmtInfoBase[3] = AF_LINK;        // Request link layer information
    mgmtInfoBase[4] = NET_RT_IFLIST;  // Request all configured interfaces
   
    // With all configured interfaces requested, get handle index
    if ((mgmtInfoBase[5] = if_nametoindex("en0")) == 0)
        errorFlag = @"if_nametoindex failure";
    else
    {
        // Get the size of the data available (store in len)
        if (sysctl(mgmtInfoBase, 6, NULL, &length, NULL, 0) < 0)
            errorFlag = @"sysctl mgmtInfoBase failure";
        else
        {
            // Alloc memory based on above call
            msgBuffer =(char*) malloc(length) ;
            if ((msgBuffer) == NULL)
                errorFlag = @"buffer allocation failure";
            else
            {
                // Get system information, store in buffer
                if (sysctl(mgmtInfoBase, 6, msgBuffer, &length, NULL, 0) < 0)
                    errorFlag = @"sysctl msgBuffer failure";
            }
        }
    }
   
    // Befor going any further...
    if (errorFlag != NULL)
    {
        //  DLog(@"Error: %@", errorFlag);
        return errorFlag;
    }
   
    // Map msgbuffer to interface message structure
    interfaceMsgStruct = (struct if_msghdr *) msgBuffer;
   
    // Map to link-level socket structure
    socketStruct = (struct sockaddr_dl *) (interfaceMsgStruct + 1);
   
    // Copy link layer address data in socket structure to an array
    memcpy(&macAddress, socketStruct->sdl_data + socketStruct->sdl_nlen, 6);
   
    // Read from char array into a string object, into traditional Mac address format
    NSString *macAddressString = [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X",
                                  macAddress[0], macAddress[1], macAddress[2],
                                  macAddress[3], macAddress[4], macAddress[5]];
    // DLog(@"Mac Address: %@", macAddressString);
   
    // Release the buffer memory
    free(msgBuffer);
   
    return macAddressString;
}

返回mac地址字符串
分享到:
评论

相关推荐

    IOS获取设备MAC地址及MD5加密

    然而,由于隐私考虑,自iOS 7以后,Apple不再允许直接获取硬件的MAC地址,而是提供了一个随机生成的“私有MAC地址”或者称为“设备唯一标识符(IDFV)”。 尽管如此,我们仍可以通过一些方法间接获取到一个类似于...

    ios 获取IP Mac地址

    在iOS开发中,获取设备的IP地址和MAC地址是常见的需求,这主要涉及到网络编程和系统接口调用。本文将详细讲解如何在iOS平台上获取这两种关键的网络标识。 首先,让我们了解一下IP地址和MAC地址的基本概念。IP地址...

    ios通过BLE读取蓝牙地址

    在iOS系统中,苹果为了用户隐私和安全,对直接获取蓝牙设备MAC地址进行了限制。然而,我们仍然可以通过特定的方式来间接获取到蓝牙设备的标识信息。以下是关于"ios通过BLE读取蓝牙地址"的相关知识点: 1. **Core ...

    ios获取设备路由器地址

    这个是最近项目需要用到的获取设备路由器地址,在google里找了一下,发现了这个不错的源码,在我博客里有其具体的调用,可到 http://blog.csdn.net/u010079911 这个查看具体的实现

    ios-GetIphoneMac获取iphone设备mac地址.zip

    原理:我们知道苹果是不允许我们获取其设备硬件的mac地址的,在iOS7以下才可以获得。iOS7以后苹果对于sysctl和ioctl进行了技术处理,MAC地址返回的都是02:00:00:00:00:00。但是发现fing这个软件却可以获取,其下载...

    获取本地MAC地址小程序

    这个"获取本地MAC地址小程序"是针对Windows操作系统开发的一个实用工具,它能够帮助用户快速获取自己计算机的物理MAC地址,对于网络配置、设备管理以及故障排查等方面具有实际应用价值。 在编程领域,尤其是在本地...

    读取设备信息 ios

    标题提到的“读取设备信息 iOS”主要涉及到如何从iOS设备中获取特定的数据,如UUID(Universally Unique Identifier)和MAC(Media Access Control)地址。这些信息对于应用的个性化设置、数据分析、用户跟踪等方面...

    获取本地ip,mac地址

    在IT行业中,网络通信是不可或缺的一部分,而获取设备的IP和MAC地址是网络通信的基础。本文将详细讲解如何使用C#编程语言来实现获取本地IP和MAC地址的功能。 首先,让我们了解一下IP和MAC地址的基本概念。IP地址...

    Delphi跨平台(Win,Android,IOS)获取设备唯一标识符

    本篇文章将深入探讨如何在Delphi中,利用FMX库来获取不同平台设备的唯一标识符以及MAC地址。 首先,我们需要了解在不同平台上设备唯一标识符的概念: 1. iOS:在iOS系统中,通常使用UDID(Unique Device ...

    IOS设备投屏MAC.zip

    然后,用户可能需要在Mac上安装并运行开发者提供的应用或工具,该应用会利用USBMuxd协议与iOS设备建立连接,获取设备屏幕的实时流,并在Mac上显示。如果支持多个设备同时投屏,那么这个应用还需要处理多个设备间的...

    iOS获取用户设备当前的IP地址

    在iOS开发中,获取用户设备当前的IP地址是一项常见的需求,这可以帮助开发者了解应用的网络环境,例如在实现网络诊断、远程服务连接或者位置定位等功能时。本文将详细讲解如何在iOS应用中获取设备的IP地址。 首先,...

    Delphi 12 控件之 ios,android,mswindows获取设备唯一标识符和mac地址.rar

    Delphi 12 ios,android,mswindows获取设备唯一标识符和mac地址.rar Delphi 12 fmx 跨平台(Win,Android,IOS)获取设备唯一标识符 在IT行业中,跨平台开发是一项重要的技术,它允许开发者用一套代码库在多个操作系统...

    iOS7获取UDID、IMEI、SN、ICCID、Mac地址等信息

    越狱后,可以尝试读取设备的系统文件,如`/var/mobile/Library/Preferences/com.apple.BLuetooth.plist`,或者利用私有API来获取,但这同样存在风险。 3. **SN**: - 设备序列号SN可以在设置应用中查看,但通过...

    iOS如何获取手机的Mac地址

    在iOS系统中,获取设备的Mac地址曾经是开发者常用的一种方式来标识设备的独特性。然而,自iOS 7版本开始,苹果对获取Mac地址的API进行了限制,以保护用户隐私,现在通过sysctl或ioctl接口获取的Mac地址会返回一个...

    获取网卡MAC地址 获取网卡MAC地址

    在计算机网络中,MAC(Media Access Control)地址是一种硬件地址,用于唯一...此外,由于MAC地址是物理层面的信息,跨越网络时会被网络层协议(如ARP)处理,所以跨网络获取远程设备的MAC地址通常需要额外的技术手段。

    蓝牙获取mac地址

    本文将深入探讨如何在iOS和Android平台上获取蓝牙设备的MAC地址,并提供相关的开发知识点。 在iOS平台中,苹果提供了Core Bluetooth框架来处理蓝牙低功耗(BLE)设备的交互。获取蓝牙设备的MAC地址通常在扫描到设备...

    获取IOS设备信息

    本篇将详细阐述如何获取iOS设备的各类信息,包括平台型号、CPU型号与频率、核心数、总内存、可用内存、硬盘空间、电池电量、蓝牙支持情况、越狱状态以及MAC地址等关键数据。 首先,我们需要引入Foundation框架,...

    iOS获取设备的唯一标识

    早期开发者也曾尝试通过Wi-Fi或蓝牙获取设备的MAC地址,但由于隐私问题,从iOS 7开始,Apple阻止了这种方式。 6. **自定义解决方案** 鉴于官方API的限制,有些开发者尝试创建自定义解决方案,例如结合多个系统...

    获取自己ip地址和MAC

    在IT领域,获取自己IP地址和MAC地址是常见的网络编程任务。MFC(Microsoft Foundation Classes)是微软提供的一套C++库,用于构建Windows应用程序,它封装了Windows API,使得开发者能够更容易地处理Windows操作系统...

    ios获取手机系统信息源码

    3. **MAC地址**:请注意,由于隐私原因,从iOS 7开始,苹果不再允许开发者直接访问设备的MAC地址。现在,`UIDevice`的`macAddress`属性已被弃用。如果需要设备的唯一标识,可以考虑使用`identifierForVendor`,但这...

Global site tag (gtag.js) - Google Analytics