Сама база была обнаружена — как и следовало ожидать, в папке 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/
Добавить комментарий