Нижегородский файловый портал
RSS - каналы
Главное меню
Категории каталога
Мои статьи [5]
Школа покера [5]
Софт [40]
Радиолюбителям и электрикам [8]
Интернет [167]
Система [89]
Комплектующие ПК [47]
Безопасность [56]
Программирование [18]
Веб-дизайнеру [5]
Игры [6]
Полезные советы [24]
Кулинария [1]
Телефония [10]
Мобильник [17]
Планшеты [14]
Медицина [5]
Работа [4]
Домашнему мастеру [0]
Строительство и ремонт [19]
Для сада и огорода [2]
Юмор и приколы [12]
Интересное [114]
Пластики [3]
Разное [238]
Мини-чат
Правила мини-чата



Мини-чат в окне
Погода в Нижнем
Яндекс.Погода
Главная » Статьи » Интернет

Изучаем Skype
Можно ли доверять цитатам из Skype? Казалось бы, их нельзя редактировать, а после недавнего отключения поддержки html тэгов (в windows версиях), это должно быть невозможным.

Ответ - целостности и авторству цитат из Skype доверять нельзя.



Наверняка многие наслышаны о защищённости протокола и в целом этой программы. Но как обычно, ошибки находятся в мелочах. Нигде и не утверждается, что цитаты подписаны цифровой подписью и им можно свято верить (ну или я не нашёл такого утверждения), но во всяком случае на практике это не так.
  • Нигде и не утверждается, что цитаты подписаны цифровой подписью и им можно свято верить.
Предположим, что при копировании цитаты Skype также дописывает в буфер обмена и информацию об авторе, дате и т.п., это наиболее простой способ, по которому, как оказалось позже, и пошли разработчики. Для дальнейшего изучения нам не понадобится дизассемблировать Skype, просто напишем свою программу (в лучших традициях Smart UI паттерна - это там где весь код в кнопках), которая "ковыряет" буфер обмена. По привычке, я буду использовать C#, в качестве UI для быстроты выберу Win Forms (да простят меня ненавистники этих технологий).

Итак, вот формочка с аскетичным дизайном:



По одной кнопке все данные из буфера обмена будут писаться в richEdit, по другой, будет происходить обратная операция. Начнём же изучение.

Судя по всему для работы с буфером обмена тут подойдёт класс "System.Windows.Forms.Clipboard". В нём есть подходящий метод GetDataObject, который возвращает объект, реализующий интерфейс IDataObject (смотрим msdn). Метод GetData, принимающий в качестве параметра Type, нам не подходит, т.к. структуру объекта, сохраняемого в буфер обмена, законными способами узнать не получится, зато есть его перегрузка, принимающая строку с "форматом". Это очень кстати, учитывая, что есть ещё и метод GetFormats. Итак, вот он, первый шаг к изучению того, что же Skype сохранил в буфер обмена:


private Dictionary<string, object> clipboadData = new Dictionary<string, object>();

private void buttonLoad_Click(object sender, EventArgs e)
{
 IDataObject iData = Clipboard.GetDataObject();
 foreach (var format in iData.GetFormats())
  { clipboadData[format] = iData.GetData(format); }
}


Пишем "test text" в Skype, копируем свою цитату, вставляем в окошко скайпа, чтобы убедиться, что цитата скопировалась, и выполняем код.

Посмотрим прямо в дебаге, что же сохранилось в clipboardData:



Не знаю как вас, а меня очень заинтересовало значение с ключом SkypeMessageFragment, может быть потому, что оно MemoryStream, хотя в остальных просто нет ничего интересного. Итак, посмотрим, что же лежит в этом стриме:


private const string DataKey = "SkypeMessageFragment";
private Dictionary<string, object> clipboadData = new Dictionary<string, object>();
private string message;

private void buttonLoad_Click(object sender, EventArgs e)
{
 IDataObject iData = Clipboard.GetDataObject();
 foreach (var format in iData.GetFormats())
  { clipboadData[format] = iData.GetData(format); }
 using (StreamReader streamReader = new StreamReader(clipboadData[DataKey] as MemoryStream))
 {
  message = streamReader.ReadToEnd();
  clipboadData[DataKey] as MemoryStream).Seek(0, SeekOrigin.Begin);
 }
 richTextBoxQuote.Text = message;
}


Запустив это, в richEdit можно увидеть вот что:



Честно говоря, я подумал, что на этом моё исследование закончилось провалом. Да, тут есть автор, время отправки в unix формате, сам текст цитаты, но кроме того тут есть значение guid, где хранится какой-то хэш. Увидев этот хэш, я понял, что это, скорее всего, что-то типа hmac.

В любом случае, система цитат должна работать как-то так: Skype от всех данных цитаты считает хэш по своему супер секретному алгоритму (возможно используя суперсекретный ключ) и пишет получившийся хэш в буфер обмена, а когда человек вставляет цитату в окошко и отправляет её в чат, скайп проверяет верность подписи. Теория это хорошо, но давайте проверим, а так ли это, и сделаем сохранение richEdit обратно в буфер обмена:



private const string DataKey = "SkypeMessageFragment";
private Dictionary<string, object> clipboadData = new Dictionary<string, object>();
private string message;

private void buttonLoad_Click(object sender, EventArgs e)
{
 IDataObject iData = Clipboard.GetDataObject();
 foreach (var format in iData.GetFormats())
  { clipboadData[format] = iData.GetData(format); }
 using (StreamReader streamReader = new StreamReader(clipboadData[DataKey] as MemoryStream))
 {
  message = streamReader.ReadToEnd();
  (clipboadData[DataKey] as MemoryStream).Seek(0, SeekOrigin.Begin);
 }
 richTextBoxQuote.Text = message;
}
private void buttonSave_Click(object sender, EventArgs e)
{
 message = richTextBoxQuote.Text;
 MemoryStream memoryStream = new MemoryStream();
 StreamWriter streamWriter = new StreamWriter(memoryStream);
 streamWriter.Write(message);
 streamWriter.Flush();
 memoryStream.Seek(0, SeekOrigin.Begin);
 clipboadData[DataKey] = memoryStream;
 IDataObject iData = new DataObject();
 foreach (var item in clipboadData)
  { iData.SetData(item.Key, item.Value); }
 Clipboard.SetDataObject(iData, true);
}


При записи в stream я намеренно не использовал конструкцию using (вызов метода Dispose у streamWriter портит мой MemoryStream).

Итак, запускаем программу, копируем цитату из скайпа, правим её в нашем "редакторе", жмём Save и вставляем цитату обратно в Skype:



Честно говоря, я сильно удивился, что это сработало. Нет, я, конечно, искренне надеялся, что это сработает, но удивился я очень сильно. Хотя бы из-за моей теории с hash'ом, зачем тогда этот гуид, непонятно.

Настоящая цель этой статьи - предупредить общественность, что цитатам из skype доверять нельзя. Ведь это очень мощный инструмент, которым можно оклеветать/обмануть другого человека.

В общем, это новое оружие в социальной инженерии, так что будьте бдительны, и не ленитесь проверять теорию практикой.
Добавил: Админ-21NN | Просмотров: 1365 | Комментарии: 1 | Рейтинг: 5.0/3


Обратите Ваше внимание на другие статьи:

Уважаемые пользователи, пожалуйста, оставляйте комментарии! Нам очень важно Ваше мнение!
Всего комментариев: 1
29.04.2012 Спам
ну электронные подписи и вообще данные по существу и так очень уязвимы!так что всегда надо соблюдать осторожность

Добавлять комментарии могут только зарегистрированные пользователи.

    
Меню пользователя
Аватар гостя

Приветствуем Вас, Гость

Логин:
Пароль:
Поиск по сайту
Поиск по названию
Поиск по тегам
Горячие темы форума
Стол заказов
поговорим о софте
Зарабатываем деньги
Детская игра Подарки...
Тест скорости подклю...
кое что о Windows
Кто ты, человек?
Новая валюта портала
Все о сексе
"Что мешает нам...
Культура
Афоризмы
Лучшие 13 анекдотов ...
как защитить свой ко...
восстановление данны...
Я ненавижу Дом-2
Волга-Телеком
Кулинария "Кокт...
Жалобы
С Днем Победы!!!
Прикольные картинки
С праздником Пасхи !...
Статистика
Новых за месяц: 130
Новых за неделю: 41
Новых вчера: 6
Новых сегодня: 3
Всего: 5499
Из них:
Администраторов: 6
$$$-Модераторов: 2
Модераторов: 5
Прокураторов: 5
-----------------
далее:
Проверенных: 260
Пользователей: 3034
Новичков: 1884
Заблокированных: 110
-----------------
Из всех пользователей:
Мужчин и парней: 4322
Женщин и девушек: 1176
Именинники
Поздравляем с Днем рожденья:

romka(31), dolzr(53), ransioojne(86), Kostik(32), Sovenok(32), Ufozver(24), ethan21(26), cavaleron(26), Аревка(38), zdvfzasxdv(24), Quantum0(23)
Режим ON-LINE
Онлайн всего: 1
Гостей: 1
Пользователей: 0

Сейчас на портале:
Наша кнопочка
Нижегородский файловый портал

HTML-код кнопки:
Реклама
Размещение рекламы

Яндекс.Метрика
Регистрация сайта в каталогах, раскрутка и оптимизация сайта, контекстная реклама Ремонт холодильников в Нижнем Новгороде

Copyright © BankRemStroy © 2009-2019
x