#!/usr/bin/env ruby require 'digest/md5' require 'digest/sha1' #################################### ## / Hash Creator / ## ## ## ## -Coded by AppleSt0rm- ## #################################### def outputUsage() puts "===================== Hash Creator Usage =====================" puts " usage : <script> [command] [empreinte]" puts " Commandes :" puts " md5 [empreinte] : Renvoi le md5 de votre hash" puts " sha1 [empreinte] : Renvoi le sha1 de votre hash" puts " test [empreinte] : Renvoi le niveau de sécurité" puts " hash [empreinte] : Renvoi le hash perso" puts "hash+hash*n [empreinte] : Vous pouvez additionner les hashs" puts "hash+salt*n [empreinte] : Ajoutez simplement des Salts :)" puts "--------------------------------------------------------------" puts " example :" puts " md5+md5+sha1 votremotdepasse" puts " md5+VotreSalt+sha1 votremotdepasse" puts " sha1 votremotdepasse" puts "==============================================================" end def methode( hashMeth, hashEmpr ) #fonction d'extraction de(s) méthode(s) hashtag = hashMeth.split('+') nbrHash = hashtag.length - 1 #nombre méthodes dans hashtag i = nbrHash empreinte = hashEmpr until (i == -1) #applique du hash sur hashEmpr tant que i != -1 if hashtag[i] == "md5" empreinte = Digest::MD5.hexdigest(empreinte) elsif hashtag[i] == "sha1" empreinte = Digest::SHA1.hexdigest(empreinte) else empreinte = hashtag[i]+empreinte end i -= 1 end puts empreinte end def md5(empreinte) empreinte = Digest::MD5.hexdigest(empreinte) return empreinte end def sha1(empreinte) empreinte = Digest::MD5.hexdigest(empreinte) return empreinte end def test(empreinte) tag = empreinte.split('') nbrTag = tag.length a = 0 if nbrTag < 6 puts empreinte + " > Mot de passe Médiocre." elsif nbrTag >= 6 && nbrTag < 10 if empreinte.match(/[a-z]/) a += 1 if empreinte.match(/[A-Z]/) a += 1 if empreinte.match(/[0-9]/) a += 1 if empreinte.match(/[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\?\@\[\\\\\\\]\_\`\{\|\}\~\]]/) a += 1 end end end end if a <= 2 puts empreinte + " > Mot de passe Mauvais." elsif a > 2 && a <= 5 puts empreinte + " > Mot de passe Moyen." end elsif nbrTag >= 10 && nbrTag <= 16 if empreinte.match(/[a-z]/) a += 1 if empreinte.match(/[A-Z]/) a += 1 if empreinte.match(/[0-9]/) a += 1 if empreinte.match(/[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\?\@\[\\\\\\\]\_\`\{\|\}\~\]]/) a += 1 end end end end if a <= 2 puts empreinte + " > Mot de passe Suffisant." elsif a > 2 && a <= 5 puts empreinte + " > Mot de passe Très suffisant." end elsif nbrTag > 16 if empreinte.match(/[a-z]/) a += 1 if empreinte.match(/[A-Z]/) a += 1 if empreinte.match(/[0-9]/) a += 1 if empreinte.match(/[\!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\:\;\?\@\[\\\\\\\]\_\`\{\|\}\~\]]/) a += 1 end end end end if a <= 2 puts empreinte + " > Mot de passe Bon." elsif a == 3 puts empreinte + " > Mot de passe Très bon." elsif a > 3 puts empreinte + " > Mot de passe Excelent !" end else puts "Impossible de lire le mot de passe" end end def hash(empreinte) nomUser = exec("grep $USER /etc/passwd | cut -d: -f5") emp = md5(nomUser+empreinte) emp2 = md5(nomUser+emp) empF = md5(emp2) puts "le hash perso est md5(md5(Nom_User.md5(Nom_User.Mot_De_Passe))) et donne :" puts empF end if not ARGV[0].nil? if ARGV[0] == "test" if not ARGV[1].nil? test(ARGV[1]) else outputUsage() end elsif ARGV[0] == "hash" if not ARGV[1].nil? hash(ARGV[1]) else outputUsage() end elsif not ARGV[1].nil? hashMeth = ARGV[0] hashEmpr = ARGV[1] methode(hashMeth , hashEmpr) else outputUsage() end else outputUsage() end
AppleStorm