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="$(sudo 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="$(sudo 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" -pbkdf2 2>&1|grep -sq '%DECRYPTED%' && passok=1
 
## Créer le fichier s'il n'existe pas
if [ ! -f "$CRYPTFILE"  ]; then
  mkdir -p "$(dirname "$CLEARFILE")"
  $EDITOR "$CLEARFILE"
 
  printf "\n\n\n" >> "$CLEARFILE"
  echo '%DECRYPTED%' >> "$CLEARFILE"
  touch "$CRYPTFILE"
  chmod 600 "$CRYPTFILE"
 
  openssl enc -e -a -camellia-256-ecb -k "$key" -in "$CLEARFILE" -out "$CRYPTFILE" -pbkdf2
  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"
  exit
fi
 
 
# 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" -pbkdf2
  chmod 600 "$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" -pbkdf2
 
  # 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É


Son dump hexa :


553246736447566b5831386942446230436b524764485930617a63484530
67567a75334473437842585a797935452b6a693634395448776178477630
725376670a652f526d72577a67686e4469706a63647076426b374544364f
776763454b7969432b362b7749415472347a37512b426856444270416734
4a646452654955334f0a4d527836414b37644561734243724e3958394336
6d2b4d494871427a4b49676537425166546e6f504c53732f454a6d686f52
4c35784f526e494237736c3843510a6a377733714172586539636a58574d
75587467547a37655851324c4d674b466533484941394470694368354851
74676b795653463739336169685749457157480a3930757a432f32354630
624b43584332464165386370307534667278334c7654597761437a5a4244
3744505075612f704278397a41512b716c59683050792f670a4254495138
2f65465377687245526d33305a556549694157415a664a3255304653344a
4356465a4f4e7476564630716174436f34436963665942552f4b4957380a
637762534c6e6d436c445373724e5a4c6e6e303145666579536a74306a30
6878732b45496e39587871776c2b6b59615237795977587a7a2f6a656a56
4a6c33780a744d523874576741682f6164436d344f325933656f4b596373
2f4e62614974397939575469486e5779426f3d0a


   =>   É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



8272489