4

別の sha512 で暗号化されたパスワードと比較するために、暗号化されたシステム ユーザー パスワードを取得しようとしています。pwd を試してみましたが、このモジュールはユーザーのパスワードを処理していないようです。または、使用されているシステムが「最新すぎる」(debian スクイーズ) ようです。ここに私が得るものがあります:

import pwd
username = 'root' #or another user
pwd_struct = pwd.getpwnam(username)
print pwd_struct

>>>pwd.struct_passwd(pw_name='root', pw_passwd='x', pw_uid=0, pw_gid=0, pw_gecos='root', pw_dir='/root', pw_shell='/bin/bash')

pw_passwd='x' であり、sha512 文字列ではありません。

これを python crypt モジュール ( example here ) で使用するつもりでしたが、pw_passwd = 'x'.

ハッシュ化されたパスワードを取得する別の適切な方法はありますか? または、/etc/shadow 用に独自のパーサーを白くする必要がありますか?

4

2 に答える 2

2

spwdモジュールを試してください

プラットフォーム:Unix

バージョン2.5の新機能。

このモジュールは、Unixシャドウパスワードデータベースへのアクセスを提供します。さまざまなUnixバージョンで利用できます。

シャドウパスワードデータベースにアクセスするには、十分な権限が必要です(これは通常、rootである必要があることを意味します)。

シャドウパスワードデータベースエントリは、タプルのようなオブジェクトとして報告されます。その属性は、spwd構造のメンバーに対応します(以下の[属性]フィールド、を参照)。

>>> import spwd
>>> spwd.getspnam('root')
spwd.struct_spwd(sp_nam='root', sp_pwd='!', sp_lstchg=15238, sp_min=0, sp_max=99999, sp_warn=7, sp_inact=-1, sp_expire=-1, sp_flag=-1)

/etc/shadowこれが機能するには、の読み取り許可が必要であることを忘れないでください

于 2012-11-25T16:08:45.740 に答える
0

グーグルで「python」と「shadow」という用語を検索すると、最初の結果としてspwdライブラリが返されます。

シャドウパスワードは、通常のユーザーがパスワードファイルをブルートフォース攻撃するのを防ぐために導入されたため、rootなどの特権ユーザーアカウントを使用してのみシャドウパスワードにアクセスできます。

于 2012-11-25T16:13:05.567 に答える