bin/cs-password
#!/usr/bin/env ruby
# (C) Ahmy Yulrizka (ahmy@sense-os.nl)
require 'optparse'
require 'io/console'
require 'digest/md5'
options = {password: '', double: false}
OptionParser.new do |opts|
opts.banner = "Usage: cs password [options]"
opts.on("-p", "--password password", "pass password as command line") do |v|
options[:password] = v
end
opts.on("-d", "--double-md5", "Hash the password twice") do
options[:double] = true
end
opts.separator ""
opts.on_tail("-h", "--help", "Show this message") do
puts opts
exit
end
end.parse!
def hash(plaintext)
Digest::MD5.hexdigest(plaintext)
end
if options[:password].nil? || options[:password].empty?
print "password:"
v = STDIN.noecho(&:gets).chomp
options[:password] = v
end
retval = hash(options[:password])
retval = hash(retval) if options[:double]
puts
puts retval