Процесс взлома 4-way handshake в WPA/WPA2-PSK действительно достаточно сложен и требует понимания того, как формируются ключи. Вы абсолютно правы, что в ходе 4-way handshake PMK и PTK не передаются явно. Вместо этого они генерируются на основе заранее известных данных, таких как предварительный общий ключ (PSK), идентификаторы точки доступа (AP) и клиента, а также случайные значения, сгенерированные в процессе обмена.
Вот основные этапы, которые помогают программам, таким как aircrack-ng, определить, соответствует ли у них уже подобранный PTK:
1. **Подбор PSK**: Например, aircrack-ng использует словарь или другой алгоритм подбора для определения PSK (предварительного общего ключа). Этот процесс может занять время, особенно если у вас нет информации о том, каким образом PSK был сгенерирован.
2. **Выделение необходимых данных из handshake**: При захвате пакетов 4-way handshake (обычно время обмена составляет 4 пакета) программа извлекает следующие параметры:
- MAC-адрес точки доступа (AP),
- MAC-адрес клиента,
- случайные числа (ANonce от точки доступа и SNonce от клиента),
3. **Генерация PMK**: PMK (Pairwise Master Key) генерируется на основе PSK и SSID сети. Aircrack-ng использует функцию PBKDF2 (Password-Based Key Derivation Function 2) для создания PMK из PSK и SSID. PMK будет одинаковым для всех клиентов и одной точки доступа, если PSK и SSID одинаковые.
4. **Генерация PTK**: PTK (Pairwise Transient Key) создается уже на основе PMK, идентификаторов устройства, произвольных чисел (nonce) и других параметров, используя функцию "KDF" (Key Derivation Function). Это значит, что, зная PMK и параметры, которые были межд собой обменены (MAC-адреса и nonce), вы можете вычислить PTK.
5. **Сравнение PTK**: После того как программное обеспечение сгенерировало PTK на основе всех необходимых данных, оно сравнивает PTK с тем, который был использован для шифрования захваченных данных. Это может быть сделано посредством анализа трафика. Если вы можете расшифровать определенные данные (например, пакеты, которые были перехвачены), это означает, что вы правильно сгенерировали PTK.
Таким образом, программы, такие как aircrack-ng, не могут видеть PTK или PMK в явном виде, но они используют известные параметры и законы криптографии для их генерации и сравнения с тем, что было захвачено во время обмена в ходе 4-way handshake.