21-05-2016, 20:32
Jeg har lavet nedenstående løsningsforslag til udfordringen April 2016 - Custom Dictionary Attack
Det er bare en måde at gøre det på. Der kom rigtig mange god forslag. Så man kan vælge at bruge det eller lade være, men jeg tænkte jeg ville dele det med jer. Måske kan nogen få noget ud af det. Det er ikke videnskab og der er ikke kælet for koden. Det skulle bare virke.
Det er bare en måde at gøre det på. Der kom rigtig mange god forslag. Så man kan vælge at bruge det eller lade være, men jeg tænkte jeg ville dele det med jer. Måske kan nogen få noget ud af det. Det er ikke videnskab og der er ikke kælet for koden. Det skulle bare virke.
#!/usr/bin/env ruby
require 'digest' # For hashing
require 'base64' # For decoding
def usage
puts "Usage: ./cust_dict <wordfile> <salt> <encrypted password>"
end
if ARGV.size != 3 then
usage
else
dictionary = ARGV[0]
salt = ARGV[1]
hashed = ARGV[2].strip
hashed = Base64.decode64(hashed)
puts "Using file #{dictionary}"
puts "Salt: #{salt} Hash: #{hashed}"
salt = Digest::MD5.hexdigest salt.strip
File.foreach(dictionary) do |line|
clearpass = line.strip
3.times {line = Digest::SHA1.hexdigest line.strip}
line = salt + line
3.times {line = Digest::SHA1.hexdigest line}
if line == hashed then puts "Password is :#{clearpass}:" end
break if line == hashed
end
end