Le titre provocateur de cet article est quelque part un appel au challenge ! En effet, le script ci dessous a chiffré le texte ci-dessous. Si vous avez réussi à déchiffrer le texte, vous saurez comment me communiquer la réponse.





0x01. SCRIPT


 
#!/bin/bash
 
# Editeur par défaut, nano si aucun n'est trouvé
[ -z "$EDITOR" ] && EDITOR=${EDITOR:=$(which nano)}
 
# Chemins de fichier
CLEARFILE="doc/data.txt"
CRYPTFILE="doc/data.raw"
 
# Salt 1: en fonction du numéro matériel (UUID)
salt1="$(dmidecode|grep -B1 UUID|shasum|awk '{ print $1 }')"
 
# Salt 2: en fonction des droits et de la date création du fichier
salt2="$(ls -l "$0"|awk '{ print $1":"$7"/"$6"@"$8 }'|shasum|awk '{ print $1 }')"
 
# Salt 3: en fonction de la configuration de partition du disque dur
salt3="$(fdisk -l /dev/sda|shasum|awk '{ print $1 }')"
 
# Salt 4: en fonction du nom d utilisateur et du nom de machine
salt4="$(echo $USER@$(hostname)|shasum|awk '{ print $1 }')"
 
# Demande du mot de passe (-p prompt)
# écrire le résultat dans rep (-r) 
# et ne pas afficher la saisie (-s)
read -srp "Mot de passe :" rep ; echo
 
# Construit la clé de chiffrement
pass=$(echo "$rep")
key="$(echo "$salt1$salt4$pass$salt2$salt3"|sed 's/a/æ/1;s/2/Z/2;s/0/O/3;s/1/¡/4;s/8/ß/g5')"
 
# # Mise à jour du mot de passe
# openssl enc -e -a -camellia-256-ecb -k "$key" -in "doc/.data.bkp" -out "$CRYPTFILE"
 
# Vérification du mot de passe et autorisation de lecture du fichier chiffré
passok=0
chmod 400 "$CRYPTFILE"
openssl enc -d -a -camellia-256-ecb -k "$key" -in "$CRYPTFILE" 2>&1|grep -sq '%DECRYPTED%' && passok=1
 
# Ouverture du fichier dans l editeur de texte par défaut
if [ "$passok" = "1" ]; then
  openssl enc -d -a -camellia-256-ecb -k "$key" -in "$CRYPTFILE" -out "$CLEARFILE"
  chmod 200 "$CLEARFILE"
  $EDITOR "$CLEARFILE"
 
  # Seul l'utilisateur a le droit de le modifier
  chmod 600 "$CRYPTFILE"
  openssl enc -e -a -camellia-256-ecb -k "$key" -in "$CLEARFILE" -out "$CRYPTFILE"
 
  # Suppression sécurisée du fichier ...
  ### Par écrasement depuis des données aléatoires
  count=$(stat --format='%s' "$CLEARFILE")
  dd if=/dev/urandom of="$CLEARFILE" count=$count bs=2 >/dev/null 2>&1
  ### Par renommage en fichier aléaoire
  tmp=$(mktemp tmp.XXXXXXXXXXXXXXXXXXXXX)
  mv "$CLEARFILE" "$tmp"
  ### Puis par un nouvel écrasement depuis des données nulles (0, NULL)
  dd if=/dev/zero of="$tmp" count=$count bs=2 >/dev/null 2>&1
  ### Pour finalement supprimer le fichier
  rm -f "$tmp"
fi
 
# On protège le fichier chiffré de la lecture
chmod 000 "$CRYPTFILE"
 




0x02. TEXTE CHIFFRÉ


.//files/indecryptable/text.png



   =>   Écrit par : Nicolas, le 23 février 2016


 
Mots clés :  
  crypto 
  
  linux 
  
  macos 
    >   Articles connexes :

Chiffrement multicouche



Cheat SHeet OpenSSL



Comment gagner du temps sur Internet



/tmp et /var/log en noexec sur macOS



1427798