diff --git a/TODO b/TODO
index e3207d1fa5cccb78aa5ac290c130172577f71a97..0b368a592c3493064d5d0820cfcd9487b225f4b2 100644
--- a/TODO
+++ b/TODO
@@ -10,3 +10,25 @@
  * retirer le binaire serveur de /usr/local/bin/
  * Modulariser le code (client.py devient gros)
  * renommer en "cpasswords" ? (aka common passwords :p)
+diff --git a/client.py b/client.py
+index 6ba2a6e..6486e11 100755
+--- a/client.py
++++ b/client.py
+@@ -805,6 +805,9 @@ def recrypt_files(options):
+     if to_put:
+         if not options.quiet:
+             print((u"Rechiffrement de %s" % (", ".join([f['filename'] for f in to_put]))).encode("utf-8"))
++        if options.simulate:
++            print((u"Did nothing").encode('utf-8'))
++            return
+         results = put_files(options, to_put)
+         # On affiche les messages de retour
+         if not options.quiet:
+@@ -915,6 +918,7 @@ if __name__ == "__main__":
+                 (par défaut, tous vos rôles en écriture seront utilisés).
+                 Avec --recrypt-files, tous les fichiers ayant au moins un de ces roles (et pour lesquels vous avez le droit d'écriture) seront rechiffrés
+                 (par défaut, tous les fichiers pour lesquels vous avez les droits en écriture sont rechiffrés).""")
++    parser.add_argument('--simulate', action='store_true', default=False)
+     parser.add_argument('fname', nargs='?', default=None,
+         help="Nom du fichier à afficher")
+     
diff --git a/client.py b/client.py
index 6ba2a6e368e3632eff3e9d6892829f873adc4489..ea25b74878208011f0d1e9d0ef6a62790a67d1b1 100755
--- a/client.py
+++ b/client.py
@@ -520,6 +520,9 @@ def encrypt(options, roles, contents):
 def decrypt(options, contents):
     """Déchiffre le contenu"""
     stdin, stdout = gpg(options, "decrypt")
+    if type(contents) != unicode: # Kludge (broken db ?)
+        print("Eau dans le gaz (decrypt)" + repr(contents))
+        contents = contents[-1]
     stdin.write(contents.encode("utf-8"))
     stdin.close()
     return stdout.read().decode("utf-8")
@@ -629,7 +632,11 @@ def show_file(options):
         return
     passfile = value
     (sin, sout) = gpg(options, 'decrypt')
-    sin.write(passfile['contents'].encode("utf-8"))
+    content = passfile['contents'] # Kludge (broken db ?)
+    if type(content) == list:
+        print("Eau dans le gaz")
+        content = content[-1]
+    sin.write(content.encode("utf-8"))
     sin.close()
     texte = sout.read().decode("utf-8")
     ntexte = u""
@@ -800,7 +807,7 @@ def recrypt_files(options):
     # On rechiffre
     to_put = [{'filename' : f['filename'],
                'roles' : f['roles'],
-               'contents' : encrypt(options, f['roles'], decrypt(options, f['contents']))}
+               'contents' : encrypt(options, f['roles'], decrypt(options, f['contents']))[-1]}
               for [success, f] in files]
     if to_put:
         if not options.quiet: