Visual C++ を使用してプログラムでコンピューターに保存されているさまざまなユーザー アカウントのパスワードを取得したいと考えています。これを行うのに役立つ API はありますか?
6 に答える
Win32 API を介して、Windows のパスワードや他のほとんどのプログラムのパスワードを取得する方法はありません。
Windows パスワードの場合、通常、LogonUser を使用して、ユーザーにユーザー名/パスワードの入力と確認を求める必要があります。
他のプログラムの場合、通常はホスト アプリケーションによって暗号化されたディスクに保存されます。
これは、Windowsでは絶対に許可されていません。
特定のプログラムにパスワードを取得させることの結果を考慮してください。つまり、ソリティアのようなプログラムは、パスワードを取得して、さまざまな不正な方法で使用できるようになるということです。さらに悪いことに、プログラムはパスワードを使用してリソース内の他のマシンにアクセスする可能性があります。
要するに、それは窓の外にセキュリティを投げるでしょう
いいえ、それはセキュリティ ホールになります。 この記事を参照してください。
取得しようとしているパスワードによって異なりますか?
Windows のログイン パスワードなど、一部のパスワードは取得できません。その他のパスワードは、アプリケーションの保存方法に応じて、ディスクまたはレジストリのどこかに (プレーンまたは暗号化されて) 保存されます。
たとえば、 Win32 API CredEnumerateは、一部のアプリケーション (Internet Explorer のパスワードなど) のユーザー資格情報 (ログインとパスワード) を提供できます。
ハッシュされたパスワードのみを回復でき、パスワード自体は回復できません。
私はこれについて個人的な経験はありませんが、この種の作業を行うユーティリティが世の中にあると言われました (通常は .ru サイトにあります ;))。そして、これがどのように起こるかを見るのは恐ろしいことであり、あなたを妄想的にします. ただし、これを行うための特定のツールを提案することはできませんが、それは不可能だと言い続けるすべての人に反対したいと思います.