К основному контенту

Читаем сообщения 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 клиент, который подгружает сообщения только если Ваш собеседник тоже в сети.

      Удалить

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

Популярные сообщения из этого блога

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

Читать этот пост в Telegraph. Другие посты в канале в Telegram. Кто только не расписывал уже пошаговые инструкции по этой теме. Однако, время идёт, ПО меняется, инструкции нуждаются в обновлении, а люди в современной России всё больше нуждаются в применении VPN. Я собираюсь описать все шаги для создания бесплатного сервера на Amazon EC2 с операционной системой Linux и необходимые команды для настройки VPN сервера на нём. Чтобы не повторяться о деталях, которые были много раз описаны на русскоязычных и англоязычных ресурсах, по ходу статьи я просто приведу целую кипу ссылок, где можно почерпнуть необходимую информацию, а где информация устарела - опишу подробнее что нужно сдеать. В итоге, сервер будет доступен для вас из любой точки планеты, с любой операционной системы, и бесплатно (с определёнными ограничениями по трафику). Шаг первый - Регистрируемся на Amazon AWS Нужно зайти на сайт https://aws.amazon.com/ru и сразу перейти к Регистрации, нажав одноимённую кнопку. При р

В помощь программисту: инструкции по работе с Ubuntu сервером

Программистам чаще приходится писать код и заботиться о его чистоте, правильных абстракциях в коде, корректных зависимостях и прочих сложностях профессии. При этом, настройка и обслуживание серверов, хоть и связанная область - это отдельный навык, необходимый не каждому, и помнить о котором в деталях сложно. Поэтому, я делаю ряд микро-инструкций, которыми буду пользоваться и сам, когда необходимо. Это не статьи, а пошаговые помощники, которые я буду дополнять и наполнять по мере надобности. Делаем бесплатный VPN на Amazon EC2 Создание ключей SSH Подключение к серверу через SSH Передача файла с Linux сервера наWindows машину Делаем VPN сервер на Ubuntu 20.04 используя OpenVPN и EasyRSA  Отображение GUI с Linux сервера на Windows машине

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

Между парадигмами разработки с Entity Framework (Code First, Model First, Database First) я выбрал промежуточную, потому что ни одна меня не устраивала полностью. В Code First меня радуют чистые POCO классы, но не устраивает невозможность моделирования базы. В Database First и Model First мне не нравится генерация EDMX и другого всего лишнего. Таким образом, я нашел для себя такое решение: 1. Я моделирую схему в любой удобной программе (тут любая внешняя программа моделирования, генерирующая SQL Server-совместимые скрипты генерации базы) Рис. Смоделированная схема БД. 2. Создаю базу в SQL Management Studio 3. Делаю Reverse Engineering базы в POCO классы (как в Code First) с помощью плагина Entity Framework Power Tools Рис. Установленный плагин для Reverse Engineer. Рис. Вот так делается Reverse Engineer базы данных в POCO классы. Рис. Результат генерации POCO классов на основе базы данных: папочка Models с готовым контекстом, классами объектов и маппинг-классами.