Pull to refresh

Первый самодельный клиент, который подключается к Skype Network

Reading time3 min
Views35K


Skype — один из самых небезопасных мессенджеров по объективным причинам. Одна из них — обфусцированный бинарный файл, чтобы затруднить реверс-инжиниринг. Корпорация Microsoft отказывается предоставить исходный код для аудита и проверки специалистами по безопасности, последняя проверка проводилась в 2005 году.

Несмотря на все риски, многие люди вынуждены использовать клиент Skype.

Закрытость протокола и официального клиента вынудила активистов пойти на нарушение закона DMCA и принудительно деобфусцировать бинарный код клиента.

В рамках проекта Skype Open Source в июне 2011 года был проведён обратный инжиниринг протокола Skype 3.8.

В марте 2012 года был опубликован деобфусцированный бинарный клиент оригинального Skype 5.5 со снятой защитой от отладки.

Skype 5.5 представлял собой некий гибрид графического интерфейса, написанного на Delphi, и встроенных библиотек DLL с «ядром». Ядро программы — полностью независимая структура на уровне бинарного кода: блоки кода, блоки данных, импорт. Если судить по наличию следов библиотек VC, то для компиляции программы использовался компилятор Visual C++.

Сейчас найти тот клиент и исходные коды непросто, потому что по требованиям DMCA хостеры удалили оригинальный блог, а также почти все копии клиента skype55.zip, которые разошлись по Сети.

Прошли годы, корпорация Microsoft перевела пиринговую сеть супернодов Skype в свою собственную облачную сеть Skype Network, на которую перешла в последних версиях клиента, и немного изменила протокол: изменения касались в основном добавление DH-384 обмена ключами до старта RC4 шифрования. Активистам пришлось начинать работу заново — и проводить реверс-инжиниринг нового протокола.

Разработчики снова добились своего. 1 сентября 2016 года в новом блоге Skype Open Source 2 опубликована радостная весть о выходе первого в мире самодельного свободного клиента, совместимого с сетью Skype Network. Исходный код клиента пока не удалён с Github. Клиент ограничен передачей только текстовых сообщений.

Клиент Epycs Messenger написан на чистом Си, снабжён простым графическим интерфейсом на .NET 4.0. Соответственно, для установки требуется наличие среды .NET 4.0. Проект загружается и компилируется в Visual Studio 2010. Программа работает только под Windows. Автор говорит, что для портирования под Linux нужно слегка пошаманить с сокетами.

Ссылки на скачивание бинарников:
http://epycs.ru/files/EpycsMessenger2_20160901.zip
https://yadi.sk/d/xvKhmImdugThn
http://dfiles.ru/files/ob1kzcc1x

Исходный код под LGPL 3.0:
http://epycs.ru/files/EpycsMessenger2_20160901_src.zip
https://yadi.sk/d/V_IWJT-fugvND
http://dfiles.ru/files/ryh285mue




На тестовой машине не удалось завершить процедуру импорта контактов

Автором программы является Ефим Бушманов. Он же написал предыдущие версии деобфусцированного клиента Skype и был автором первого блога Skype Open Source.

Несмотря на предположительное нарушение DMCA, предлагается коммерческая лицензия на Epycs Messenger. Продолжается также сбор пожертвований на развитие проекта.

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

После публикации исходников на Github некоторые разработчики отмечают плохую структуру кода, повсеместные магические строки, утечки памяти и повсеместные переполнения буфера. Впрочем, это не умаляет заслуг разработчика, который проделал большую работу. Автор просит протестировать программу и высказать свои предложения и пожелания.

UPD 05.09. Ефим Бушманов пишет, что загрузка контактов перестала работать. Похоже, Skype отключил сервера с контакт-листами совсем. Контакты можно добавить вручную, если добавить файл contacts.txt в корневую директорию и вручную добавить контакты из Skype в таком формате:

u/skypeuser1
u/skypeuser2
u/skypeuser3
u/skypeuser4
u/skypeuser5

Остальное вроде пока работает, говорит автор.
Tags:
Hubs:
Total votes 28: ↑28 and ↓0+28
Comments102

Articles