از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
با شروع Android 8.0، دستگاههای Android هنگام جستوجوی شبکههای جدید از آدرسهای MAC تصادفی استفاده میکنند در حالی که با شبکه مرتبط نیستند. در اندروید 9، میتوانید یک گزینه توسعهدهنده را فعال کنید (به طور پیشفرض غیرفعال است) تا باعث شود دستگاه هنگام اتصال به شبکه Wi-Fi از یک آدرس MAC تصادفی استفاده کند.
در اندروید 10، تصادفی سازی MAC به طور پیش فرض برای حالت مشتری، SoftAp و Wi-Fi Direct فعال است.
تصادفی سازی MAC مانع از استفاده شنوندگان از آدرس های MAC برای ایجاد سابقه فعالیت دستگاه می شود و در نتیجه حریم خصوصی کاربر را افزایش می دهد.
علاوه بر این، آدرس های MAC به عنوان بخشی از عملیات Wi-Fi Aware و Wi-Fi RTT تصادفی می شوند.
برای پیاده سازی روش های HAL زیر با یک فروشنده تراشه Wi-Fi کار کنید:
IWifiStaIface#setMacAddress : آدرس MAC رابط را پیکربندی می کند. پیادهسازی پیشفرض اینترفیس را پایین میآورد، آدرس MAC را تغییر میدهد و رابط را پشتیبان میآورد.
IWifiStaIface#getFactoryMacAddress : MAC کارخانه wlan0 را با استفاده از تماس ioctl دریافت می کند.
ISupplicantP2pIface#setMacRandomization : تصادفی سازی P2P MAC را در درخواست کننده روشن/خاموش می کند.
ممکن است دستگاههایی که Android 9 یا پایینتر دارند، از تصادفیسازی Wi-Fi MAC پشتیبانی نکنند. هنگام ارتقاء چنین دستگاههایی به Android 10، با تنظیم پرچم WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION روی درست در فایل سازنده وایفای HAL make، میتوان ویژگی تصادفیسازی MAC Wi-Fi را غیرفعال کرد.
اعتبار سنجی
برای تأیید اینکه این ویژگی همانطور که در نظر گرفته شده است کار می کند، یک آزمایش دستی اجرا کنید:
با بررسی اینکه config_wifi_connected_mac_randomization_supported روی true در پوشش دستگاه تنظیم شده است، تأیید کنید که تصادفیسازی MAC در دستگاه فعال است.
به یک شبکه Wi-Fi متصل شوید.
روی شبکه ضربه بزنید تا به صفحه جزئیات شبکه بروید. بررسی کنید که تصادفی سازی MAC روشن است. بررسی کنید که آدرس MAC نمایش داده شده یک MAC تصادفی است که بیت تولید شده محلی روی 1 و بیت چندپخشی روی 0 تنظیم شده است.
تصادفی سازی MAC را خاموش کنید. به همان شبکه متصل شوید و بررسی کنید که از MAC کارخانه استفاده می شود.
با ضربه زدن روی Forget در صفحه جزئیات شبکه، شبکه را حذف کنید.
به همان شبکه متصل شوید و بررسی کنید که از همان آدرس MAC تصادفی استفاده می شود.
برای آزمایش تصادفیسازی MAC در دستگاه پیش از Android 10 (قابلیت پشتیبانی از تصادفیسازی MAC) بهروزرسانی به Android 10 یا بالاتر:
حداقل یک شبکه ذخیره شده در دستگاهی با Android 9 یا پایین تر داشته باشید.
تصویر سیستم اندروید 10 را فلش کنید.
در انتخابگر Wi-Fi، بررسی کنید که تصادفی سازی MAC برای همه شبکه های ذخیره شده خاموش باشد.
تصادفی سازی MAC را روشن کنید. به همان شبکه متصل شوید و بررسی کنید که از MAC تصادفی استفاده می شود.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# Implement MAC randomization\n\nStarting in Android 8.0, Android devices use randomized MAC addresses when\nprobing for new networks while not associated with a network. In\nAndroid 9, you can enable a developer option (it's\n**disabled** by default) to cause the device to use a randomized MAC address\nwhen connecting to a Wi-Fi network.\n\nIn Android 10, MAC randomization is enabled by default\nfor client mode, SoftAp, and Wi-Fi Direct.\n\nMAC randomization prevents listeners from using MAC addresses to build a history\nof device activity, thus increasing user privacy.\n\nAdditionally, MAC addresses are randomized as part of\n[Wi-Fi Aware](/docs/core/connect/wifi-aware) and\n[Wi-Fi RTT](/docs/core/connect/wifi-rtt) operations.\n\nFor more information, see\n[MAC Randomization Behavior](/docs/core/connect/wifi-mac-randomization-behavior).\n\nImplementation\n--------------\n\nTo implement MAC randomization on your device:\n\n1. Work with a Wi-Fi chip vendor to implement the following HAL methods:\n\n - `IWifiStaIface#setMacAddress`: Configures the MAC address of the interface. The default implementation brings the interface down, changes the MAC address, and brings the interface back up.\n - `IWifiStaIface#getFactoryMacAddress`: Gets the factory MAC of `wlan0` using an `ioctl` call.\n - `ISupplicantP2pIface#setMacRandomization`: Sets P2P MAC randomization on/off in the supplicant.\n2. Set\n [`config_wifi_connected_mac_randomization_supported`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/res/values/config.xml)\n to `true` in the Settings `config.xml` (this can be done in a device\n custom overlay).\n\n - This flag is used to control whether client-mode MAC randomization is enabled.\n3. Set\n [`config_wifi_p2p_mac_randomization_supported`](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/res/values/config.xml)\n to `true` in the Settings `config.xml` (this can be done in a device\n custom overlay).\n\n - This flag is used to control whether Wi-Fi direct MAC randomization is enabled.\n4. Test your implementation using the methods described in\n [Validation](#validation).\n\nThe System UI must:\n\n- Have an option to enable or disable randomization for each SSID.\n- Have MAC randomization enabled by default for all newly added networks.\n\nUse the\n[reference implementation](https://cs.android.com/android/platform/superproject/+/android-latest-release:packages/apps/Settings/src/com/android/settings/wifi/details2/WifiPrivacyPreferenceController2.java)\nof Settings UI to implement new prompts.\n\nDevices running Android 9 or lower might not have\nsupport for Wi-Fi MAC randomization. When upgrading such devices to Android\n10, the Wi-Fi MAC randomization feature can be disabled\nby setting the `WIFI_HIDL_FEATURE_DISABLE_AP_MAC_RANDOMIZATION` flag to true in\nthe Wi-Fi vendor HAL make file.\n\nValidation\n----------\n\nTo validate that the feature is working as intended, run a manual test:\n\n1. Verify that MAC randomization is enabled on the device by checking that `config_wifi_connected_mac_randomization_supported` is set to `true` in the device overlay.\n2. Connect to a Wi-Fi network.\n3. Tap the network to go to the Network details page. Verify that MAC randomization is turned on. Verify that the MAC address displayed is a randomized MAC, which has the locally generated bit set to 1 and the multicast bit set to 0.\n4. Turn MAC randomization off. Connect to the same network and verify that the factory MAC is being used.\n5. Delete the network by tapping **Forget** on the Network details page.\n6. Connect to the same network and verify that the **same** randomized MAC\n address is being used.\n\n | **Note:** Randomized MAC addresses are generated per SSID and are persistent.\n\nTo test MAC randomization on a pre-Android 10 device\n(capable of supporting MAC randomization) upgrading to Android\n10 or higher:\n\n1. Have at least one saved network on a device running Android 9 or lower.\n2. Flash the Android 10 system image.\n3. In the Wi-Fi picker, verify that MAC randomization is turned off for all saved networks.\n4. Turn MAC randomization on. Connect to the same network and verify that the randomized MAC is being used.\n\n| **Note:** You may experience up to a three-second delay when connecting to a network due to the driver flushing saved scan results when the interface goes down. If this is the case, check with your silicon partners to resolve the issue."]]