Re : SuperGenPass de Polo l'asticot
Répondre #8 – Jeudi 04 Juin 2026, 16:12:19
Rantanplan Ton idée fonctionne bien. Je n'aime pas le fait que les caractères spéciaux ne changent pas. Si on tombe sur deux mots de passe, cela permet d'enlever deux caractères sur le décryptage. En cherchant un peu, j'ai lu qu'une longueur de 16 caractères était préférable. Puisqu'il n'est pas possible de conserver la compatibilité, j'ai décidé de barboter joyeusement dans le code.#!/usr/bin/env bash #Code dérivé de celui de Mihail Milushev (lanzz : https://github.com/lanzz/bash-supergenpass/blob/master/supergenpass.sh) sous licence MIT ################################################################################ default_password_length="16" ### 16 par défault. Peut être remplacé au cas par cas en ajoutant la longueur ### personnalisée comme deuxième argument après le domaine lors du lancement du script. default_hashing_algorithm="md5" ### "md5" par défaut. Une valeur alternative serait « sha512 » qui peut être donnée ### au cas par cas comme troisième argument. ################################################################################ domain=$(echo $1 | tr A-Z a-z) length=${2:-$default_password_length} length=$(($length - 4)) hashing_algorithm=${3:-$default_hashing_algorithm} echo -n 'Mot de passe : '; master_password="&'èàarupä‘üö" hash=$master_password:$domain i=0 while true do hash=$(echo -n "$hash" | openssl "$hashing_algorithm" -binary | base64 | tr -d '\n' | tr +/= 98A) i=$(($i + 1)) if [ $i -lt 10 ] then continue fi valid=$(echo "${hash:0:$length}" | grep -E '^[[:lower:]]' | grep -E '.[[:upper:]]' | grep -E '.[[:digit:]]') if [ "$valid" != "" ] then break fi done # Sur les caractères 13 à 16, je remplace les lettres par des caractères spèciaux plus=$(echo ${hash:$length:4} | tr '[:lower:] [:upper:]' '&(_)+#{[|]}/?/§!:^&![+§)#]&(_)+#{[|]}??/§!:^&![+§)#]') if [ -n "$WAYLAND_DISPLAY" ] && command -v wl-copy >/dev/null; then echo -n ${plus:0:2}${hash:0:$length}${plus:2:2} | wl-copy echo "Mot de passe copié dans le presse-papiers Wayland" elif [ -n "$DISPLAY" ] && command -v xclip >/dev/null; then echo ${plus:0:2}${hash:0:$length}${plus:2:2} | xclip -r -selection "clipboard" echo "le mot de passe est copié dans le presse-papiers X" echo ${plus:0:2}${hash:0:$length}${plus:2:2} else echo ${plus:0:2}${hash:0:$length}${plus:2:2} fi Le mot de passe principal est mis en dur pour aller plus vite et cela affiche directement le mot de passe obtenu. Je fais une substitution sur quatre lettres car avec deux, si plusieurs chiffres se suivent, il n'y a plus de caractères spéciaux. J'en mets deux devant et deux derrière. Le but de l'ensemble, c'est d'obtenir des caractères spéciaux générés par le programme et qui changent avec toutes les entrées de manière assez complexe pour sembler aléatoire. Qu'en penses-tu ? Si tu critiques, je me fous dans le canal ! Je plaisante. (Mais tu es prévenu.) ¡Que pases un buen final de día, tanto tú como toda tu familia! L'asticot PS : Moi ce que je préfère, c'est l'odeur.
Quote Selected