LoginSignup
4
0

More than 5 years have passed since last update.

';--have i been pwned? のAPIを使って流出したパスワードかチェックする

Last updated at Posted at 2018-07-04

概要

https://support.sku.id/hc/ja/articles/115004031154-世界の電子認証基準が変わる-NIST-SP800-63-3を読み解く
このドキュメントを読んで、自前で頻出パスワード管理するの辛いなーって思ったらいいサービスがありました

APIが用意されてて、パスワードをsha1でハッシュ化して先頭5文字をAPIに渡すと該当するデータをザクッと返してくれるので、5文字目以降が一致するやつを探すっていう使い方らしいです。

サンプルコード

MacbookProに入ってるRubyでは多分動いてた。

passwordchk.rb
require 'net/http'
require 'digest/sha1'
require 'json'

arg = ARGV[0]

sha1 = Digest::SHA1.hexdigest(arg)

sha1Head = sha1[0, 5]
sha1.upcase!
sha1Tail = sha1[5..-1]

url = 'https://api.pwnedpasswords.com/range/' + sha1Head

uri = URI.parse(url)

res = Net::HTTP.get(uri)

sha1List = res.split("\n")

found = sha1List.select { |hash| hash.index(sha1Tail) }

if found.count > 0 then
    puts found
else
    puts "not found"
end

使い方

❯ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]

❯ ruby passwordchk.rb abcde

実行するとsha1ハッシュの末尾と、使用回数が返ってきます。使われてなければnot foundって言われます。

パスワードチェックしていこう。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0