0

FileVault 2暗号化を開始するために、CocoaDialogを使用してログインユーザーにパスワードの入力を求めるスクリプトを書いています。

理想的には、パスワードが正しいことを確認したいのですが、それを行うための良い方法が見つかりませんでした。サブプロセスモジュールを介して/usr/ libexec / chkpasswdを生成しようとしましたが、パスワードをstdinに渡す前にreturnキーが押されたようです。(間違ったパスワードの標準である「Sorry」が表示されます。)

pexpectについて簡単に説明しましたが、展開を簡単にするために、サードパーティのツールを使用せずにこれを実行したいと思います。

すべてのMacでOSX10.8.2が実行されます。

4

1 に答える 1

1

簡単に見てみると、これが掘り下げられています。chkpasswdのPAM認証用のDarwinソースです。chkpasswdが独自のサブTTYを使用してパスワードを取得しているようです。

/* Initialize PAM. */
pamc.conv = &openpam_ttyconv;
pam_start(progname, uname, &pamc, &pamh);

printf("Checking password for %s.\n", uname);

[さらに、パスワードが機能するかどうかを確認するためのPAM固有のコード。]

これはセキュリティにとっては良いことですが、あなたにとっては悪いことです。I/Oリダイレクトを使用してパスワードを送信する方法はありません。pexpectがどのように機能するかによっては、それができない場合もあります。サブターミナルではなく、chkpasswdが実行されているTTYに入力を送信し続ける場合があります。これらの各コンポーネントの配線については、テストせずに推測するのに十分な知識がありません。

これであなたの質問が本当に解決しないことは知っていますが、注目に値すると思いました。

于 2013-01-09T00:47:12.617 に答える