Windows Liveメールアカウント設定ファイル(iafファイル)のパスワードを解析してみた
家族が普段使っているプロバイダのメールのアカウントのパスワードが分からなくなってしまい、困っていたので、rubyで設定ファイルからファイル内の情報を読み取り、列挙するプログラムを書いてみました。
iafファイルとは
Outlook ExpressやWindows Liveメールといったメールクライアントソフトのメールアカウントの設定ファイルです。
バイナリファイルなので、メモ帳等で開いても読めません。
パスワードも一応暗号化(難読化?)されているので、解析しなければ読めません。
既にあるコード
iafファイルを解析するコードがCPANにありました。
Win32::Outlook::IAF - search.cpan.org
CPANなのでもちろんPerlで書かれているわけですが、練習も兼ねてファイルの解析部分をRubyに移植してみることにしました。
実行結果
コードが長めなので、先に実行後の出力例を載せておきます。
ひととおりの設定内容が抜き出せているのがわかります。(一部まだ文字化けしています)
AccountName: example.com ConnectionType: 3 AccountID: account{5142AB96-BT41-4423-957F-7BJA6ST2R21S}.oeaccount MakeAvailableOffline: 1 IMAPPort: 143 IMAPTimeout: 60 IMAPSentItemsFolder: ??n0?0?0?0?0 IMAPDraftsFolder: N?fM0 IMAPPasswordPrompt: true IMAPDirty: true HTTPPasswordPrompt: true MinPollingInterval: 0 GotPollingInterval: true LastPolledTime: 0 POP3Server: mail.example.com POP3UserName: user-name POP3Password: passw0rd POP3Port: 110 POP3SecureConnection: true POP3Timeout: 60 POP3LeaveMailOnServer: true POP3SkipAccount: true POP3PasswordPrompt: true SMTPServer: smtp.example.com SMTPUserName: user-name SMTPPassword: passw0rd SMTPAuthMethod: 3 SMTPPort: 587 SMTPSecureConnection: true SMTPTimeout: 60 SMTPDisplayName: Kurochan SMTPEmailAddress: kurochan@example.com SMTPSplitMessages: true SMTPSplitMessageSize: 64 SMTPPasswordPrompt: true
コード
requireされているiaf-data.rbはこちらに置きました。
iafファイルのid対応表
設定をiafファイルにエクスポートすると、認証なしに別のメールアカウントで設定を復元することができることからわかるように、パスワードのシードは固定です。
analyze iaf file