Записки сисадмина

Или помойное ведро идей


Выделенные сервера от $130
VDS/VPS от $20

База сообщений ICQ Lite

Потребовалось мне вытянуть сообщения из базы 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.

21.04.2009 Автор admin | Windows, Безопасность, Очумелые ручки | 6 comments

Комментарии (6) »

  1. По дате переписку отсортировать не помешает.

    Комментарий от TomB | 22 апреля 2009

  2. Добрый день!
    спасибо ваш метод очень помог. Хотел уточнить там есть еще файл Owner.qdb. Что это такое и как его вскрыть?

    Комментарий от Дмитрий | 17 сентября 2009

  3. >Смотрим “.schema”. Все месаги содержатся в таблице >Messages.
    Можно чуть подробней для тех кто не знаком с работой с базой даных через командную строку. plz
    Получаю:
    C:\Documents and Settings\Andriy\ApplicationData\ICQ\499471178>sqlite3 Messages.qdb
    SQLite version 3.6.20
    Enter «.help» for instructions
    Enter SQL statements terminated with a «;»
    sqlite>
    а что дальше?

    Комментарий от kyberx | 14 ноября 2009

  4. select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash;
    и куча бреда

    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
    не работает, вероятно fromUser=111111 чтото не то..

    Комментарий от kyberx | 14 ноября 2009

  5. Спасибо за подсказку o sqlite3.
    И все же как обычный юзер я нашел GUI (SQLite Expert Professional 2.2.3 Portable) и с его помощью сделал что хотел.
    Хотя до того успел разобраться и с командной строкой віполнив bat файл в директории базы даных такого содержания

    sqlite3 -html Messages.qdb «select p.userId,m.* from Messages m inner join Participants p on m.participantsHash=p.participantsHash;» > perepiska.html

    Комментарий от kyberx | 16 ноября 2009

  6. Охренительно! Респектище огроменное!
    Очень выручил.
    С помощью этого можно так же делать и другие очень полезные штуки (особенно тем, кто sql знает). Например можно вытащить список номеров с которыми вы общались, с помощью запроса «select p.userId,* from Participants p». Очень юзабельно, когда пароль от ICQ Lite утерян навечно.

    Комментарий от CRYSTALL_m | 19 марта 2010

Оставить комментарий