「Internet Explorer7 の認証パスワードとオートコンプリートの操作」(2) Web認証パスワード
執筆:SapporoWorks
http://homepage2.nifty.com/spw/
特集
特集
http://homepage2.nifty.com/spw/
Internet Explorer(以下IE)では、認証パスワードを「保存する」に設定していた場合や、オートコンプリートを有効にしている場合、それぞれのデータがコンピュータに保存されます。これらのデータの操作方法については、正式に公開されている訳では有りませんでしたが、IE 4.01 より前のものは、WnetEnumCachedPasswords(※1)、以降のものは、IPStoreインターフェース(※2)を使用したProtected Storageサービスで操作が可能なことが知られておりました。
Internet Explorerの認証パスワードとオートコンプリートの操作
http://codezine.jp/a/article.aspx?aid=147
今回、IEが7にバージョンアップされたことにより、この保存形式が全面的に変更され従来の方法では読み出せなくなってしまいました。本稿では、IE7でこれらのデータを操作する方法を解説します。なお、本稿は、C++言語、MicrosoftのPlatform SDK、及びMSDNライブラリの知識がある方を対象とさせて頂いております。本稿で使用したサンプルコード・実行ファイルや、実際のプログラムへの実装は、下記で行っておりますので、併せて参照いただければ幸いです。
本稿のサポートページ
http://www.sapporoworks.ne.jp/ie7_pass/
サンプルコードは、Microsoft Visual Studio 2005 C++ で作成され、
WindowsXP(SP2)で動作を確認しております。
HideSeek Ver2.1.0以降でIE7に対応
http://homepage2.nifty.com/spw/software/hideseek/
※1 WnetEnumCachedPasswords
:WnetEnumCachedPasswordsは、非公開APIであるためmpr.dllからGetProcAddressでアドレスを取得して使用できます。
※2 IPStoreインターフェース
http://msdn.microsoft.com/library/en-us/devnotes/winprog/ipstore.asp
────
>>Web認証パスワード
Web認証パスワードのデータは、証明書管理用のAPIのうち、ローレベルなファンクションである、CredEnumerateで列挙可能です。
【 Authentication Functions - Credentials Management Functions について】
http://msdn.microsoft.com/library/en-us/secauthn/security/authentication_functions.asp
【CREDENTIAL構造体 wincred.hより抜粋】
───────────────────
typedef struct _CREDENTIALA {
DWORD Flags;
DWORD Type;
LPSTR TargetName;
LPSTR Comment;
FILETIME LastWritten;
DWORD CredentialBlobSize;
LPBYTE CredentialBlob;
DWORD Persist;
DWORD AttributeCount;
PCREDENTIAL_ATTRIBUTEA Attributes;
LPSTR TargetAlias;
LPSTR UserName;
} CREDENTIALA, *PCREDENTIALA;
───────────────────
CredEnumerateで列挙するとCREDENTIAL構造体で表現される証明書データとして取得できますが、Web認証パスワードのデータは、この構造体のメンバであるTypeが「1」であり、TargetNameが、「Microsoft_WinInet_」で始まるサーバ名及びタイトル文字列となっています。しかし…
【執筆:SapporoWorks】
──
(この記事には続きがあります。続きはScan本誌をご覧ください)
http://www.ns-research.jp/cgi-bin/ct/p.cgi?m-sc_netsec
《ScanNetSecurity》