# Руководство по подмене MAC-адреса Wi-Fi на macOS

## 📋 Содержание
1. [Зачем это нужно](#зачем-это-нужно)
2. [Как это работает](#как-это-работает)
3. [Получение MAC-адреса телефона](#получение-mac-адреса-телефона)
4. [Подмена MAC на macOS](#подмена-mac-на-macos)
5. [Ограничения и проблемы](#ограничения-и-проблемы)
6. [Постоянная подмена MAC](#постоянная-подмена-mac)

---

## Зачем это нужно

Когда вы подключаете MacBook к точке доступа (hotspot) телефона:
- **Оператор сотовой связи** видит трафик, идущий через телефон
- **MAC-адрес MacBook** виден только на уровне Wi-Fi соединения между телефоном и MacBook
- Подмена MAC MacBook на MAC телефона может помочь в некоторых сценариях идентификации

**Важно:** Оператор в первую очередь видит IMEI и другие идентификаторы телефона, а не MAC клиента.

---

## Как это работает

### Уровни идентификации:

1. **Уровень сотовой сети (оператор видит):**
   - IMEI телефона
   - IMSI (SIM-карта)
   - Номер телефона
   - Трафик идет через телефон

2. **Уровень Wi-Fi (локальная сеть):**
   - MAC точки доступа (BSSID) - это MAC Wi-Fi интерфейса телефона
   - MAC клиента (MacBook) - виден только в локальной Wi-Fi сети

3. **Уровень приложений:**
   - User-Agent браузера
   - Fingerprint браузера
   - IP-адрес (от оператора)

**Вывод:** Подмена MAC MacBook на MAC телефона влияет только на локальный Wi-Fi уровень, но не меняет идентификацию на уровне оператора.

---

## Получение MAC-адреса телефона

### iPhone (iOS 14+)

**Проблема:** На iPhone включена функция "Частный Wi-Fi адрес" по умолчанию, которая скрывает реальный MAC.

**Решение:**

1. **Для Wi-Fi клиента (когда телефон подключается к сети):**
   - Настройки → Wi-Fi
   - Нажмите (i) рядом с сетью
   - Отключите "Частный Wi-Fi адрес" (Private Wi-Fi Address)
   - MAC-адрес будет показан как "Адрес Wi-Fi"

2. **Для точки доступа (hotspot):**
   - MAC точки доступа может отличаться от MAC Wi-Fi клиента
   - Настройки → Режим модема → "Имя сети" показывает SSID
   - MAC точки доступа можно узнать через скрипт (автоматически)

**Альтернативный способ:**
```bash
# На MacBook, подключенном к hotspot iPhone:
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep BSSID
```

### Android

1. **Для Wi-Fi клиента:**
   - Настройки → О телефоне → Статус
   - Найдите "MAC-адрес Wi-Fi"

2. **Для точки доступа:**
   - Настройки → Сеть и интернет → Точка доступа и модем → Точка доступа Wi-Fi
   - MAC может быть показан в расширенных настройках

**Через ADB (если включена отладка):**
```bash
adb shell ip link show wlan0 | grep link/ether
```

---

## Подмена MAC на macOS

### Автоматический способ (рекомендуется)

Используйте скрипт `spoof-wifi-mac.sh`:

```bash
# Автоматическое определение MAC точки доступа
./docs/security/spoof-wifi-mac.sh --phone-mac

# Или интерактивный режим
./docs/security/spoof-wifi-mac.sh

# Или указать MAC вручную
./docs/security/spoof-wifi-mac.sh AA:BB:CC:DD:EE:FF

# Вернуть оригинальный MAC
./docs/security/spoof-wifi-mac.sh --revert
```

### Ручной способ

```bash
# 1. Определить Wi-Fi интерфейс
networksetup -listallhardwareports | grep -A 1 "Wi-Fi"

# 2. Выключить Wi-Fi
networksetup -setairportpower en0 off

# 3. Установить новый MAC (требует sudo)
sudo ifconfig en0 ether AA:BB:CC:DD:EE:FF

# 4. Включить Wi-Fi
networksetup -setairportpower en0 on

# 5. Проверить
ifconfig en0 | grep ether
```

---

## Ограничения и проблемы

### 1. Временность подмены

- MAC сбрасывается после:
  - Перезагрузки MacBook
  - Отключения/включения Wi-Fi
  - Переподключения к сети
  - Смены сети

**Решение:** Используйте `--revert` для восстановления или запускайте скрипт при каждом подключении.

### 2. System Integrity Protection (SIP)

На современных версиях macOS (особенно с Apple Silicon) подмена MAC может быть заблокирована SIP.

**Проверка статуса SIP:**
```bash
csrutil status
```

**Отключение SIP (НЕ рекомендуется без крайней необходимости):**
1. Перезагрузите Mac в Recovery Mode (Cmd+R при загрузке)
2. Утилиты → Терминал
3. `csrutil disable`
4. Перезагрузите

**Включение обратно:**
```bash
csrutil enable
```

### 3. Аппаратные ограничения

Некоторые Wi-Fi чипы не поддерживают подмену MAC на уровне драйвера.

### 4. Что видит оператор

**Важно понимать:**
- Оператор видит трафик через телефон (IMEI, IMSI)
- MAC MacBook виден только в локальной Wi-Fi сети между телефоном и MacBook
- Подмена MAC не меняет идентификацию на уровне оператора
- Для оператора важнее IMEI телефона, а не MAC клиента

---

## Постоянная подмена MAC

### Вариант 1: LaunchAgent (автоматический запуск)

Создайте `~/Library/LaunchAgents/com.macspoof.plist`:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.macspoof</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/spoof-wifi-mac.sh</string>
        <string>AA:BB:CC:DD:EE:FF</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <false/>
</dict>
</plist>
```

Загрузите:
```bash
launchctl load ~/Library/LaunchAgents/com.macspoof.plist
```

### Вариант 2: Network Script (macOS)

Создайте скрипт в `/etc/network/` (требует отключения SIP).

### Вариант 3: Использование специализированных инструментов

- **SpoofMAC** (устарел, не работает на новых macOS)
- **Macchanger** (через Homebrew, ограниченная поддержка)

---

## Альтернативные подходы

### 1. Использование VPN на телефоне

Вместо подмены MAC на MacBook, используйте VPN на телефоне:
- Весь трафик идет через VPN
- Оператор видит только VPN-соединение
- Не требуется подмена MAC

### 2. USB Tethering

Подключите телефон через USB и используйте USB Tethering:
- Не требует Wi-Fi
- MAC не важен на этом уровне
- Более стабильное соединение

### 3. Bluetooth Tethering

Альтернатива Wi-Fi hotspot:
- Разные протоколы идентификации
- Может быть менее заметно для оператора

---

## Проверка результата

### Проверить текущий MAC:
```bash
ifconfig en0 | grep ether
```

### Проверить MAC точки доступа:
```bash
/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | grep BSSID
```

### Проверить подключение:
```bash
networksetup -getairportnetwork en0
```

---

## Безопасность и предупреждения

⚠️ **Важно:**
- Подмена MAC может нарушать правила оператора
- Некоторые сети могут блокировать устройства с подмененным MAC
- Это может быть незаконно в некоторых юрисдикциях
- Используйте только на своих устройствах и сетях

✅ **Рекомендации:**
- Сохраняйте оригинальный MAC для восстановления
- Используйте только для легитимных целей
- Понимайте ограничения метода
- Рассмотрите альтернативные подходы (VPN, USB tethering)

---

## FAQ

**Q: Оператор все равно видит, что это не телефон?**
A: Да, оператор видит IMEI телефона и трафик через него. MAC клиента важен только на локальном Wi-Fi уровне.

**Q: Почему MAC не меняется?**
A: Возможно, требуется отключить SIP или Wi-Fi чип не поддерживает подмену MAC.

**Q: Как сделать подмену постоянной?**
A: Используйте LaunchAgent или отключите SIP (не рекомендуется).

**Q: Работает ли это на Apple Silicon?**
A: Может потребоваться отключение SIP из-за более строгих ограничений безопасности.

---

## См. также

- [OS_COMPARISON.md](./OS_COMPARISON.md) - сравнение систем безопасности
- [VPN документация](../vpn/README.md) - альтернативные методы защиты приватности

