読者です 読者をやめる 読者になる 読者になる

素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

マスターキーでパスワードを管理する

マスターキーとドメインからhexdigestを作って、それをパスワードにする。誰かがやっていた気がする。

#!/usr/bin/env ruby
require 'yaml'
require 'digest/md5'
require 'getoptlong'

parser = GetoptLong.new
parser.set_options(
    ["-h", "--help", GetoptLong::NO_ARGUMENT],
    ["-d", "--domain", GetoptLong::REQUIRED_ARGUMENT])
domain = nil
loop {
  opt, arg = parser.get
  break unless opt
  case opt
  when "-h"
    puts <<-EOB
    todo
    EOB
    exit
  when "-d"
    domain = arg
  end
}
domain or exit
config = YAML.load_file("passget.yaml")
group = nil
config.each{|key, val|
  if val.include?(domain)
    group = key
    break
  end
}
group or exit
puts "password:"
system("stty -echo > /dev/null 2>&1")
password = gets.strip
system("stty echo > /dev/null 2>&1")
digest = Digest::MD5.hexdigest(password + group)
puts digest
system("echo #{ digest }|pbcopy")

passget.yaml

hatena:
- hatena.ne.jp
- hatelabo.ne.jp
google:
- google.co.jp
- google.com

のようにして、rubyスクリプトと同じディレクトリに置く。

参考:
[ruby-list:5702] Re: get a password