忍者ブログ
ネットワークセキュリティやってます。技術よりも趣味と雑談が多めのブログです。最近はオンライン英会話にはまっています。

2024-05

カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
アーカイブ
カウンター
ブログ内検索
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

21ユーザのパスワードファイルとなっている。user99にはパスワードリストのURLがある。問題タイトルがJohnなだけにJohn the RipperみたいなことをすればFlagがとれそう。

パスワードファイルのフォーマットはよく知らなかったので調べたところ、$6$はSHA512の意味で、さらに次の$まではソルトの部分である。平文のパスワードにソルトを連結したうえハッシュ処理を行った結果が暗号化パスワードとなる。SHA512なのでハッシュ化文字列は512ビット、16進数文字列でこれを表すと、128文字のハッシュとならないといけない。しかし、問題のハッシュをみると86文字しかなく、さらに文字は英数字混じりとなっている。最初、base64でエンコードされていると疑ったが、結果的にそうではなかった。

hashlib.sha512()で総当りすれば簡単にできるとおもったがなかなかうまくいかなかった。Pythonでsha512を生成する方法を調べた結果、cryptモジュールならできそう分かる。しかし、cryptモジュールは
windowsにないのでpythonをubuntuで書いて実行した。時間かかりすぎた。


import hashlib,crypt,getpass,pwd
splited =  []
#shadowファイルの各行を$と:で分割した要素を一時的に保存するリスト
salt = []
#各ユーザのソルト
crptpwd = []
#各ユーザの暗号化パスワード
i = 0
#ユーザ数を数える
qtxt = open('q.txt','r')
#shadowファイルを開く
for line in  qtxt:
      i = i + 1
      splited = line.replace('$',':').split(':')
      #shadowファイルの各行を$と:の記号で分割
      salt.append(splited[3])
      #ソルトに相当する部分を抽出
      crptpwd.append(splited[4])
      #暗号化パスワードに相当する部分を抽出
for j in range(0,i):
      passlisttxt = open('passlist.txt','r')
      #パスワードリストファイルを開く
      for m in passlisttxt:
            line2 = m.split('\n')
            mycrptpwd = crypt.crypt(line2[0],"$6$"+salt[j]).split('$')
            #パスワード候補にソルトを付与してハッシングを行う
            if mycrptpwd[3] == crptpwd[j]:
                  print line2[0]
                  break

PR
この記事にコメントする
お名前:
タイトル:
文字色:
メールアドレス:
URL:
コメント:
パスワード:   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
著書




プロフィール
HN:
ぜん吉
性別:
男性
職業:
割と自由なリーマン
趣味:
海外出張
自己紹介:
2006年のCCNA合格を皮切りにCCIE-RSを含めて数々のシスコ資格をパスし、2009年に念願の海外受験(ドバイ)でCCIE-SCを取得。そして、2010年に目標だったトリプルCCIEを香港の地にて達成した。今はネットワークセキュリティやデータ分析などをやっています。

■2006年の目標
CCNA(達成)

■2007年の目標
CCNP(達成)
CCDA(達成)
CCDP(達成)
CCIP(達成)

■2008年の目標
CCSP(達成)
CCIE-RS(達成)
TOEIC700点(達成)

■2009年の目標
CCIE-Sec(達成)
TOEIC800点(達成)
JNCIA-JUNOS(達成)

■2010年の目標
JNCIA-M(達成)
CCIE-SP(達成)
JNCIS-M(達成)
JNCIA-EX(達成)
JNCIS-SEC(達成)

■2011年の目標
異動(未達成)

■2012年の目標
異動(未達成)
TOEIC850点(達成)

■2013年の目標
異動(達成)
CCIE更新(達成)

■2015年の目標
本を出す(達成)

■2017年の目標
TOEIC900(達成)
TOEIC950(達成)

■2018年の目標
英検1級(達成)

■2019年の目標
海外勤務








英会話







忍者ブログ [PR]
by 桜花素材サイト様. . . .