Читаем сообщения Skype без пароля к аккаунту

Оказывается Skype использует простые *.db файлы для хранения данных! Для меня это стало откровением, хотя я даже никогда об этом и не задумывался, но где-то когда-то читал про то какой Skype безопасный, использует HTTPS, разные ip-адреса, да и код внутри сильно запутан.

Однако, я использовал открытую библиотеку SQLite для доступа ко всем таблицам его маленькой базы. Мне кажется (я могу конечно же ошибаться, это обсуждаемо) плохим стиль хранения сообщений пользователя в открытом виде. Храните открыто идентификаторы, guids, список контактов... но Messages хотя бы как-то скрывайте. Ладно, это всё вода и не очень интересно. Давайте посмотрим внутрь... Заходим в папочку UserData и видим "сырые" db-шники:

По сути, в папке Skype создаются отдельные папочки для каждого аккаунта, поэтому по ним вполне можно узнать список аккаунтов, когда-либо запущенных на этом компьютере.

Ничего сложного нет, просто выполняем подключение к файлу БД самого большого размера (ведь он наверное и хранит больше всего информации). В студии создаем проектик на C#, через NuGet добавляем SQLite библиотеку:

Зная путь к файлу main.db выполняем подключение:

string path = "[PATH_TO_USERDATA]";
DataTable dt = new DataTable();
SQLiteConnection sqlite = new SQLiteConnection("data source=" + path);
sqlite.Open();


SQLiteDataAdapter ad;
SQLiteCommand cmd = sqlite.CreateCommand();
cmd.CommandText = @"select * from Messages";


ad = new SQLiteDataAdapter(cmd);
ad.Fill(dt);

Получаем все сообщения со всеми. Можно отфильтровать по dialog_partner = '' . Visual Studio сделает для нас всё очень удобно: в Windows Forms кидаем на форму DataGridView и присваиваем ему полученную таблицу как dataSource:

dataGridView2.DataSource = dt;

Вообще можем делать что угодно: удалять, добавлять таблицы, смотреть что хотим. Получаем список всех таблиц и скриптов их создания (ну и соответственно все колонки) с помощью такой команды:

"select * from sqlite_master where type='table';"

Можно посмотреть на таблицы всех файлов *.db. Я написал небольшую тулзу, которая уже всё это делает.

Она доступна с открытым кодом на GitHub: так что давайте исследовать, делиться впечатлениями. Может даже нас услышат в Skype и что-то изменится в лучшую сторону.

Update 07.03.2013. В случае, если подобная программа получит доступ для работы на компьютере потенциальной жертвы, то возможна отправка спама от чужого имени. Как? Очень просто! В таблицу сообщений добавляются записи со спам-сообщениями ко всем контактам. После запуска скайп-клиента он автоматически отправит все сообщения контактам, т.к. их клиенты будут подгружать историю непрочитанных сообщений.

Комментарии

  1. Как выполнить подключение?

    ОтветитьУдалить
    Ответы
    1. Программа сама считывает Skype аккаунты, имеющиеся на компьютере, поэтому нужно лишь выбрать из списка и затем выбрать контакт.

      Удалить
  2. Какая может быть причина того что далеко не все сообщения отображаются? где лежат остальные или почему их не видно?

    ОтветитьУдалить
    Ответы
    1. Вся загруженная история есть в базе, нужно лишь хорошо поискать и посмотреть в других таблицах. Напоминаю, что Skype - это peer-to-peer клиент, который подгружает сообщения только если Ваш собеседник тоже в сети.

      Удалить

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

Популярные

Кастомизируем ASP.NET Identity 2.0

Делаем себе бесплатный VPN на Amazon EC2

Выбираем все плюсы из трех парадигм Entity Framework