# Fichier ZIP protégé par mot de passe

**Flag:** flag{we\_can\_bruteforce\_anything\_to\_get\_what\_we\_want}

## Challenge

{% file src="https://2344605990-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5vTwbgJFy6k3bN4a9ntp%2Fuploads%2FNz6J74e76ZmRSa5fcmBB%2Ffichier-zip-protege-par-mot-de-passe.zip?alt=media&token=217d66ac-6e43-415d-9792-cb0fae01f32a" %}

{% hint style="info" %}
**Description**

***

J'ai oublié le mot de passe de mon fichier ZIP, pouvez-vous m'aider à récupérer mon fichier précieux, s'il vous plaît ?
{% endhint %}

## Solution

On va utiliser [**John The Ripper**](https://www.kali.org/tools/john) pour trouver le mot de passe. Pour ça on commence par faire une empreinte du zip compréhensible par john avec la commande :&#x20;

```
┌──(kali㉿kali)-[~/StarHack 2024]
└─$ zip2john flag.zip > flag.zip.john
```

Pour ceux qui se demandent, l'empreinte ressemble à ça :

```
┌──(kali㉿kali)-[~/StarHack 2024]
└─$ cat flag.zip.john
flag.zip/flag.txt:$zip2$010f09619c024e2f49b17e734a538da68813721c8e75dcad045c5ce3d030d3aab8201aa94bcab6cc12b58cb83352311a277256a164c065a57022b8da00100d7aa429511879cc3a15c176a*$/zip2$:flag.txt:flag.zip:flag.zip
```

Maintenant, on peut lancer john avec son dictionnaire de base sur ce nouveau fichier :

```
┌──(kali㉿kali)-[~/StarHack 2024]
└─$ john flag.zip.john
Using default input encoding: UTF-8
Loaded 1 password hash (ZIP, WinZip [PBKDF2-SHA1 128/128 AVX 4x])
Cost 1 (HMAC size) is 52 for all loaded hashes
Will run 4 OpenMP threads
Proceeding with single, rules:Single
Press 'q' or Ctrl-C to abort, almost any other key for status
Almost done: Processing the remaining buffered candidate passwords, if any.
Proceeding with wordlist:/usr/share/john/password.lst
friendster       (flag.zip/flag.txt)
1g 0:00:00:00 DONE 2/3 (2024-11-07 01:35) 1.538g/s 40890p/s 40890c/s 40890C/s 123456..Peter
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
```

Le mot de passe était dans notre dictionnaire : **`friendster`**

Le fichier dans l'archive s'appelle **`flag.txt`**, on a plus qu'à l'ouvrir. Ici, j'utilise 7z avec la commande avec :

* **`e flag.zip`** pour extraire l'archive
* **`-p<mot_de_passe>`** pour préciser le mot de passe à utiliser
* **`-so flag.txt`** pour filtrer les fichiers à extraire et les afficher dans stdout sans les enregistrer sur mon disque dur.

```
┌──(kali㉿kali)-[~/StarHack 2024]
└─$ 7z e flag.zip -pfriendster -so flag.txt
flag{we_can_bruteforce_anything_to_get_what_we_want}
```
