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