Экспорт истории сообщений из Skype 4.*

от автора

Прочитав новость об уязвимости в Skype, позволяющей угнать любой аккаунт, в процессе чтения комментариев и постов по теме наткнулся на новую для себя информацию: оказывается, начиная с версии 4.* Skype хранит информацию о пользователе в базе sqlite. Это и навело меня на мысль о том, что информацию из базы можно легко и непринужденно получить.

Сама база была обнаружена — как и следовало ожидать, в папке c:\Users\<Username>\Application Data\Skype\<Skype Login>\, и судя по размеру имеющихся там файлов, носила имя main.db

Вторым шагом стал поиск удобного инструмента для работы с базами sqlite, ибо ранее не приходилось работать с ними. Первый же найденный инструмент: SQLite Database Browser, без проблем открыл и показал содержимое базы данных.

Однако у данного инструмента обнаружились и свои недостатки — неумение работать с полями типа BLOB и невозможность выгружать результаты вручную написанного запроса во внешние источники. Поэтому, предприняв вторую попытку поиска, я нашел Add-on для Firefox под именем SQLite Manager, и в дальнейшем пользовался уже им.

База содержит не слишком большое количество таблиц, и их названия интуитивно понятны, так что обнаружить нужную информацию не составит труда, поэтому приведу лишь наиболее очевидные и полезные запросы к базе. Выполнить их можно с вкладки «Execute SQL» в SQLite Database Browser’e, или с вкладки «Выполнить запрос» в SQLite Manager’e.

В таблице Contacts находятся все контакты, причем даже те, что были удалены, и уже не показываются в клиенте.

select skypename,         fullname,         given_displayname,         birthday,         case gender when 1 then 'Мужской' when 2 then 'Женский' else 'Не указан' end as "Пол",         case availability when 0 then 'Удален' when 8 then 'Не предоставил данные' else '' end as "Доступность",        strftime('%d.%m.%Y %H:%M:%S',lastonline_timestamp, 'unixepoch', 'localtime') as "Последний раз был в сети"   from contacts 

В таблицах Calls и CallMembers содержатся, соответственно, история звонков и их участников.

select calls.id as "ID разговора",        coalesce(contacts.displayname, accounts.fullname) as "Инициатор",        strftime('%d.%m.%Y %H:%M:%S',calls.begin_timestamp, 'unixepoch', 'localtime') as "Дата начала",        time(calls.duration, 'unixepoch') as "Длительность",        callmembers.dispname as "Подключенный участник",        strftime('%d.%m.%Y %H:%M:%S',callmembers.start_timestamp, 'unixepoch', 'localtime') as "Дата подключения",        time(callmembers.call_duration, 'unixepoch') as "Длительность подключения"   from calls        inner join callmembers on calls.id = callmembers.call_db_id        left  join contacts on calls.host_identity = contacts.skypename        left  join accounts on calls.host_identity = accounts.skypename 

И, наконец, в таблицах Conversations и Messages содержатся данные переписки и сами сообщения.

select conversations.id as "ID переписки",         conversations.displayname as "Участники переписки",         messages.from_dispname as "Автор сообщения",          strftime('%d.%m.%Y %H:%M:%S',messages.timestamp, 'unixepoch', 'localtime') as "Время сообщения",         messages.body_xml as "Текст сообщения"   from conversations        inner join messages on conversations.id = messages.convo_id order by messages.timestamp 

В завершение статьи не могу не заметить, что для доступа ко всему содержимому базы достаточно иметь доступ к самому файлу — содержимое базы никак не шифруется и не защищается, так что любой человек, который сможет получить доступ к вашему профилю Windows, сможет найти список контактов, просмотреть историю звонков и прочитать всю переписку.

ссылка на оригинал статьи http://habrahabr.ru/post/160315/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *