> 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/fr/hacking-wifi/wpa-wpa2-psk-network-attacks/precomputed-attacks/pyrit-installation-compilation-and-handshake-validation.md).

# Installation, compilation et validation de handshake de Pyrit

Compiler Pyrit legacy en toute sécurité et l’utiliser pour valider des captures de handshake WPA/WPA2.

Pyrit peut aider à valider des captures de handshakes WPA/WPA2 et à réduire les faux positifs. Utilisez-le avec des captures approuvées et un périmètre documenté.

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

{% hint style="warning" %}
Pyrit est abandonné. Il dépend de Python 2.7 et d'OpenSSL 1.1.1, qui sont en fin de vie. N'installez pas cela sur un système de production.
{% endhint %}

### Aperçu de la compilation

Cette compilation nécessite une installation distincte d'OpenSSL, Python 2.7 et des correctifs de compatibilité. Utilisez une machine virtuelle ou un conteneur jetable.

1. Installez les dépendances de compilation.
2. Compilez OpenSSL 1.1.1w et Python 2.7.18.
3. Corrigez et compilez Pyrit.
4. Configurez le chemin des bibliothèques à l'exécution et vérifiez le résultat.

### Prérequis

Installez ces dépendances de compilation :

`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` n'est plus disponible. Compilez Python 2.7.18 à partir des sources à la place.

### Compilez les dépendances héritées

#### OpenSSL 1.1.1w

OpenSSL système 3.x est incompatible avec ce flux de travail Python 2. Compilez séparément 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

Compilez Python avec l'installation OpenSSL ci-dessus :

```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
```

Cela installe `python2.7` sans modifier la version système de Python.

### Préparez et compilez Pyrit

#### Installez pip2

Exécutez `get-pip.py` par `python2.7`.

#### Correctif `setup.py`

Pyrit utilise une classe Python de l'ancien style. Remplacez `super().build_extension(ext)` par `build_ext.build_extension(self, ext)`.

Ajouter `include_dirs` et `library_dirs` les entrées qui pointent vers l'installation OpenSSL.

#### Compilez avec les options de compatibilité GCC 14

Le code C hérité provoque des erreurs de compilation strictes sur les versions modernes de 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
```

#### Corrigez une syntaxe Python mixte

Certains fichiers contiennent une syntaxe Python 3 incompatible. Appliquez ces modifications de compatibilité :

* Remplacez les f-strings par `%` le formatage.
* Remplacez `print(..., file=sys.stderr)` par `print >> sys.stderr`.
* Supprimez `depuis e` de `raise` instructions.
* Remplacez `import queue` par `import Queue as queue`.
* Remplacez `xmlrpc.client` et `xmlrpc.server` par `xmlrpclib` et `SimpleXMLRPCServer`.

### Configurez le chemin des bibliothèques à l'exécution

Définissez `LD_LIBRARY_PATH=/opt/openssl-1.1.1w/lib` dans `.zshrc`. Pyrit trouve alors la bibliothèque OpenSSL requise à l'exécution.

### Vérifiez l'installation

Confirmez que Pyrit détecte les cœurs de traitement disponibles. Exécutez ensuite son benchmark :

```bash
pyrit list_cores
pyrit benchmark
```

### Alternatives recommandées

Privilégiez des outils maintenus pour les nouvelles évaluations :

* `hashcat`
* `aircrack-ng`

Ils évitent la chaîne de dépendances Python 2 et OpenSSL héritée.

### Capturez et validez des handshakes

Utilisez ce flux de travail sur un réseau sans fil que vous possédez ou que vous êtes autorisé à évaluer.

#### Capturez le trafic cible

Capturez le trafic du réseau cible sur son canal connu :

{% code overflow="wrap" %}

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

{% endcode %}

#### Générez du trafic de validation

Avec une approbation explicite du périmètre, envoyez des trames de désauthentification au client spécifié. Cela peut provoquer une reconnexion et produire un nouveau handshake :

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="https://3840167291-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>

#### Validez les handshakes capturés

Analysez la capture avec Pyrit. Il signale les handshakes disponibles provenant des stations observées :

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="https://3840167291-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/fr/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.
