I recently got locked out of my 10+ year old ICQ account for no good reason — the password just stopped working one day. Password recovery doesn't work and I never gave them an email address anyway (at least that's what I think, it's been a while).

When I start Adium, it asks for a password I am unable to provide. Unfortunately, it only displays those contacts for accounts that are connected or connecting. All my ICQ contacts are missing from the contact list

How can I recover the ICQ account numbers and some identifying information about those users?

  • While I answered the question myself, I'm open towards better solutions. They might not be that helpful for me anymore, but still, there's got to be something better...
    – Daniel Beck
    Commented May 13, 2011 at 19:42

1 Answer 1


Adium user account information is stored in /Users/danielbeck/Library/Application Support/Adium 2.0/Users/Default or possibly, AFAIK, one of the sibling folders.

It seems they stored contact information in individual files in the directory ByObject (until late 2008), but switched to the single file ByObjectPrefs.plist since then.

While the directory libpurple contains a blist.xml (buddy list), it doesn't contain Adium's user aliases, only the contact's last self-assigned user name, which is usually not all that useful, depending on the people.

ByObjectPrefs.plist is a binary `plist file. Create a copy and convert in Terminal to XML using

plutil -convert xml1 /Users/danielbeck/Library/Application\ Support/Adium\ 2.0/Users/Default/ByObjectPrefs\ Copy.plist

Unfortunately, I was unable to properly automatically read its format so far. Copy&paste directly from the file is painful, but it somewhat works.

I recovered the contacts using the following expression:

cat ByObjectPrefs\ 2.plist | grep -A 15 -P "^\t<key>ICQ" | grep -v "<dict>" | grep -v "</dict>" | sed "s| *<[^>]*>||g" | sed 's|ICQ\.||' | grep -v "Alias" | grep -v "ICQAlias

It prints the file, searches for occurrences of <key>ICQ, strips the XML from the lines following that and prints them. One such entry looks like this (fantasy values to protect the innocent):

    Firstname Lastname
    Last Seen Date
    Last Seen Status
    Signing off
    Preferred Account

While this somewhat worked, I'm not even sure it matched all contacts. Some entries had no identifying information (ignored spammers?), etc. I'm looking forward to a better solution.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .