> For the complete documentation index, see [llms.txt](https://hacking-notes.jord4n.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hacking-notes.jord4n.pro/ru/hacking-wifi/wpa-wpa2-psk-network-attacks/precomputed-attacks/pyrit-installation-compilation-and-handshake-validation.md).

# Установка, сборка и проверка рукопожатия в Pyrit

Безопасно соберите устаревший Pyrit и используйте его для проверки захватов рукопожатий WPA/WPA2.

Pyrit может помочь проверить захваты рукопожатий WPA/WPA2 и снизить число ложных срабатываний. Используйте его только с одобренными захватами и в рамках документированного объёма работ.

{% embed url="<https://github.com/JPaulMora/Pyrit>" %}

{% hint style="warning" %}
Pyrit заброшен. Он зависит от Python 2.7 и OpenSSL 1.1.1, срок поддержки которых истёк. Не устанавливайте его в производственной системе.
{% endhint %}

### Общий обзор сборки

Для этой сборки нужны отдельная установка OpenSSL, Python 2.7 и патчи совместимости. Используйте одноразовую виртуальную машину или контейнер.

1. Установите зависимости для сборки.
2. Скомпилируйте OpenSSL 1.1.1w и Python 2.7.18.
3. Пропатчите и скомпилируйте Pyrit.
4. Настройте путь к библиотекам времени выполнения и проверьте результат.

### Предварительные требования

Установите следующие зависимости для сборки:

`build-essential git libssl-dev libpcap-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev libncurses5-dev libgdbm-dev libffi-dev libnss3-dev wget`

`python2-dev` больше недоступен. Вместо этого соберите Python 2.7.18 из исходников.

### Соберите устаревшие зависимости

#### OpenSSL 1.1.1w

Системный OpenSSL 3.x несовместим с этим рабочим процессом для Python 2. Соберите OpenSSL 1.1.1w отдельно:

```bash
./config --prefix=/opt/openssl-1.1.1w --openssldir=/opt/openssl-1.1.1w shared zlib
make && sudo make install_sw
```

#### Python 2.7.18

Соберите Python с использованием указанной выше установки OpenSSL:

```bash
CPPFLAGS="-I/opt/openssl-1.1.1w/include" LDFLAGS="-L/opt/openssl-1.1.1w/lib -Wl,-rpath=/opt/openssl-1.1.1w/lib" ./configure --enable-optimizations
make && sudo make altinstall
```

Это устанавливает `python2.7` не изменяя системную версию Python.

### Подготовьте и скомпилируйте Pyrit

#### Установите pip2

Выполните `get-pip.py` на `python2.7`.

#### Исправьте `setup.py`

Pyrit использует класс старого стиля в Python. Замените `super().build_extension(ext)` на `build_ext.build_extension(self, ext)`.

Добавить `include_dirs` и `library_dirs` записи, указывающие на установку OpenSSL.

#### Скомпилируйте с флагами совместимости для GCC 14

Устаревший код на C вызывает строгие ошибки компилятора в современных версиях GCC:

```bash
CFLAGS="-Wno-error=implicit-int -Wno-error=implicit-function-declaration -Wno-error=int-conversion -Wno-error=incompatible-pointer-types" python2.7 setup.py build/install
```

#### Исправьте смешанный синтаксис Python

В некоторых файлах содержится несовместимый синтаксис Python 3. Внесите следующие изменения для совместимости:

* Замените f-строки на `%` форматирование.
* Замените `print(..., file=sys.stderr)` на `print >> sys.stderr`.
* Удалите `from e` from `raise` операторы.
* Замените `import queue` на `import Queue as queue`.
* Замените `xmlrpc.client` и `xmlrpc.server` на `xmlrpclib` и `SimpleXMLRPCServer`.

### Настройте путь к библиотекам времени выполнения

Установите `LD_LIBRARY_PATH=/opt/openssl-1.1.1w/lib` в `.zshrc`. Тогда Pyrit найдёт требуемую библиотеку OpenSSL во время выполнения.

### Проверьте установку

Убедитесь, что Pyrit обнаруживает доступные вычислительные ядра. Затем запустите его тест производительности:

```bash
pyrit list_cores
pyrit benchmark
```

### Рекомендуемые альтернативы

Для новых оценок предпочтительнее использовать поддерживаемые инструменты:

* `hashcat`
* `aircrack-ng`

Они позволяют избежать цепочки зависимостей от Python 2 и устаревшего OpenSSL.

### Захватывайте и проверяйте рукопожатия

Используйте этот рабочий процесс в беспроводной сети, которой вы владеете или на оценку которой у вас есть разрешение.

#### Захватите целевой трафик

Захватите трафик из целевой сети на известном канале:

{% code overflow="wrap" %}

```bash
airodump-ng --channel 1 -w CAPTURE --essid WIFI wlan0mon
```

{% endcode %}

#### Сгенерируйте трафик для проверки

При явном одобрении объёма работ отправьте кадры деаутентификации указанному клиенту. Это может вызвать повторное подключение и создать новое рукопожатие:

{% code overflow="wrap" %}

```bash
aireplay-ng --deauth 0 -e WIFI -c FF:FF:FF:FF:FF:FF wlan0mon
```

{% endcode %}

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FY0DLasTq31XPJXAolpiV%2F%7B3632C541-1951-464D-8587-E548F8772AC4%7D.png?alt=media&amp;token=9cd47df5-667a-4607-80a4-345c7b748081" alt=""><figcaption></figcaption></figure>

#### Проверьте захваченные рукопожатия

Проанализируйте захват с помощью Pyrit. Он сообщает о рукопожатиях, доступных с обнаруженных станций:

{% code overflow="wrap" %}

```bash
pyrit -r CAPTURE-01.cap analyze
```

{% endcode %}

<figure><img src="https://4248209978-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2F1BDYkAbZzJcwBmMIZ9O1%2F%7BD80376D6-C44D-4F8C-BCD0-9C8BF854C729%7D.png?alt=media&amp;token=533d329d-00cf-4bbd-baa6-942c5ca21be1" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://hacking-notes.jord4n.pro/ru/hacking-wifi/wpa-wpa2-psk-network-attacks/precomputed-attacks/pyrit-installation-compilation-and-handshake-validation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
