読者です 読者をやめる 読者になる 読者になる

Windows Liveメールアカウント設定ファイル(iafファイル)のパスワードを解析してみた

家族が普段使っているプロバイダのメールのアカウントのパスワードが分からなくなってしまい、困っていたので、rubyで設定ファイルからファイル内の情報を読み取り、列挙するプログラムを書いてみました。

iafファイルとは

Outlook ExpressWindows 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