Потребовалось мне вытянуть сообщения из базы ICQ Lite. К моему удивлению это оказалось довольно просто, ибо база имеет формат SQLite3.
База лежит в C:\Documents and Settings\Username\Application Data\ICQ\UIN\Messages.qdb
Где Username - имя пользователя винды, UIN - числовой ICQ идентификатор.
Качаем бинарник sqlite3.exe и копируем его в C:\Windows
Пуск -> Выполнить: cmd.exe
Делаем CD в директорию базы, выполняем “sqlite3 Messages.qdb”. Смотрим “.schema”. Все месаги содержатся в таблице Messages. Поле “fromUser” пустое если сообщение от вас и содержит идентификатор корреспондента, если сообщение шло к вам, то это поле содержит кто писал сообщение. Поле participantsHash это Foreighn Key на таблицу Participants, откуда джойном можно вытянуть к кому было направлено сообщение.
Поскольку сообщение может быть отправлено к нескольким людям, тут связь бесконечность-к-одному.
По этому следующий запрос вытянет все сообщения из БД
sqlite> select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash;
Можно вытянуть конкретную свою переписку с идентификатором 11111:
sqlite> select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash WHERE m.fromUser=111111 OR p.UserId=111111;
Однако база вообще в UTF-8 формате, по этому в командной строке вы увидите кучу говна. Советую экспортировать это в файл, а потом уже его читать редактором, понимающим UTF:
C:\blah> sqlite3 -html Messages.qdb “select p.userId,m.* from Messages m inner join Participants p on m.pa
rticipantsHash=p.participantsHash WHERE m.fromUser=111111 OR p.UserId=111111? > perepiska.html
Отредактируем perepiska.html, вставим в начало:
<html><head><META http-equiv=”Content-Type” content=”text/html; charset=utf-8?></head>
<body><table>
И в конец:
</table></body></html>
Все. Читайте вашу переписку в деталях, и сносите побыстрее ICQ Lite. |