Следить по вебке за человеком. Подойдёт ли веб-камера для видеонаблюдения за домом. Камера следит? Вариант на скорую руку

Мысль о том, что кто-то взломал камеру вашего ноутбука и шпионит за вами, чтобы затем шантажировать вас, угрожая опубликовать видеозапись в интернете или отправить кому либо конкретно, может звучать как сюжет из голливудского фильма. Но это не так уж трудно сделать, как можно подумать. Camfecting – это незаконный доступ к веб-камере владельца путем взлома. Это один из самых распространенных способов, которыми пользуются хакеры. Они получают полный контроль над камерой – внедряют программные “жучки”, снимают и записывают компрометирующие моменты из жизни жертвы

Как определить, взломана ли ваша веб-камера?

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

  1. Проверить индикатор веб-камеры
    Если индикатор камеры горит или у нее мигает светодиод, когда вы ее не включали, это означает, что ею пользуется кто-то другой. Это может быть хакерская программа или просто расширение браузера, запущенное в фоновом режиме, которое использует вашу веб-камеру.
  2. Проверить расширения браузера
    Перезагрузите компьютер и запустите браузер на котором вы обычно работаете. Если индикатор загорается при открытии браузера, значит проблема в расширении браузера. Но какое именно? Отключайте их по одному, чтобы найти виновника.
  3. Проверка приложений
    Еще одной возможной причиной мигания индикатора могут быть приложения. Чтобы проверить их, выполните следующее: запустите приложение и посмотрите, загорится ли индикатор веб-камеры, если да, то продолжайте открывать приложения по одному, пока не обнаружите, кто еще втайне его использует.
    Но может быть и по-другому, если индикатор загорится спустя несколько секунд после перезагрузки компьютера, без запуска каких-либо приложений – однозначно, вы были взломаны.
  4. Проверить, запущен ли процесс работы веб-камеры
    Перейдите в Диспетчер задач и найдите все запущенные в этот момент программы на вкладке Processes (Процессы). Проверьте наличие утилиты веб-камеры. Протестируйте ее, перезагрузив компьютер, если утилита запустилась автоматически – вы взломаны.
  5. Запустить веб-камеру
    Закройте все программы и приложения и попробуйте сами включить камеру. Если появляется сообщение об ошибке, указывающее на то, что камера уже используется, это означает, что камера ноутбука взломана. Тогда стоит обратиться к инструкции в пункте 1.
  6. Поиск аудио- и видеозаписей
    Если хакер тайно шпионит за вами, то вам нужно поискать аудио и/или видеозаписи, которые вы не сохраняли. Перейдите в папку, в которой веб-камера хранит такие файлы. Несколько раз проверьте ее настройки и выясните не была ли изменена эта папка без вашего ведома. Но не стоит особо полагаться на этот метод, так как многие хакеры могут транслировать все, что они записывают через вашу камеру на свое устройство.
  7. Запустить проверку на вредоносное ПО
    Если выяснится, что камерой пользуется неизвестное программное обеспечение, немедленно просканируйте свою компьютерную систему на наличие вредоносного ПО. Если сканер что-нибудь найдет, переместите файл в карантин. Если это не решит проблему или вредоносное ПО не удаляется, то стоит обратиться к техническому специалисту.

На видео: Как узнать следят ли за тобой через web камеру

Как избежать компьютерного шпионажа через веб-камеру?

  1. Включить брандмауэр
    Брандмауэр защищает вашу систему, отслеживая сетевой трафик и блокирует подозрительные соединения. Убедитесь, что встроенный брандмауэр вашего компьютера включен и работает.
  2. Надежный антивирус
    Выберите тот, который обладает расширенной защитой от вредоносных программ, шпионских программ и вирусов. Антивирусная программа обнаружит и заблокирует угроз до того, как они нанесут вред.
  3. Фишинговая ловушка
    Хакеры могут маскироваться под агентов службы поддержки и связываться с вами, говоря, что у вас возникла проблема с вашей системой/компьютером/программой, и что они могут помочь. Не верьте таким сообщениям. Это распространенная фишинговая технология, используемая киберпреступниками для установки шпионского программного обеспечения удаленного доступа в ваше устройство. Такое ПО позволит им получить доступ к вашей камере и управлять правами доступа к ней.

Другой способ заманить жертв для загрузки программного обеспечения – RAT (Троян удаленного доступа), это фишинговые письма, которые скрывают поддельные URL-адреса и вредоносные файлы. Относитесь к письмам от неизвестных отправителей с осторожностью и не нажимайте на подозрительные ссылки и не загружайте подозрительные вложения.

  • Безопасности в общественном Wi-Fi
    Общедоступные сети Wi-Fi крайне уязвимы для хакерских атак. Киберпреступники часто нападают на людей в свободных “горячих точках” и пытаются проникнуть на их устройства с помощью вредоносных программ. Всегда используйте VPN для защиты своего Wi-Fi соединения и защищайте себя от нежелательных программ-шпионов.
  • Заклеить веб-камеру
    Заклейте камеру лентой. Даже Марк Цукерберг делает это. Это самый простой и 100% надежный способ не допустить, чтобы кто-то наблюдал за вами через камеру вашего компьютера. Если вы считаете, что лента портит внешний вид, то купите специальную заглушку, которая крепится к веб-камере.
  • Что есть у хакеров на вас?
    Если вы получаете угрожающие сообщения о том, что кто-то взломал вашу камеру, не воспринимайте это как правду сразу же. Это может быть атака СИ (). Пусть они сначала докажут. Такие мошенники не обладают техническими знаниями, чтобы взломать вас, но они знают, как играть с вашими эмоциями.

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

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

Веб-камера – видеонаблюдение в доме

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

Стоимость самых простых моделей часто находится в пределах 1000 рублей. Эффективные веб-камеры стоят несколько тысяч, однако это также небольшая цена, если взамен можно обеспечить безопасность близких. Такого рода покупки стоит рассматривать как инвестиции в мирное будущее. Расход в 1500 или 2500 рублей – это небольшая стоимость в сравнении с установкой профессиональной , за которую нужно заплатить гораздо больше.

Мониторинг веб-камерой – выбор приложения

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

Веб-камеры, в отличие от хотя бы от IP-камер, не оснащены такими функциями, как обнаружение движения или отправка тревожных уведомлений на e-mail. Решением этой проблемы является специализированное программное обеспечение , предназначенное для эксплуатации этого типа устройств.

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

Веб-камера или IP-камера – что лучше для видеонаблюдения

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

Чем ещё отличаются веб-камеры от IP-камер? Какое из этих решений лучше подходит для организации домашнего видеонаблюдения? Для облегчения ответа на поставленные вопросы мы собрали основные плюсы и минусы обоих представленных решений.

Веб-камера :

  • недорогая и простая в установке (достаточно подключить её к порту USB и установить драйверы)
  • не имеет функций , необходимых для организации мониторинга, например, обнаружение движения, поэтому для правильной работы требуется специальное программное обеспечение
  • контроль дома с помощью веб-камеры требует непрерывной работы компьютера , и это создает дополнительные расходы в виде большего потребления электроэнергии
  • большинство доступных веб-камер подключается к компьютеру с помощью кабеля и порта USB, поэтому устройство должно находиться рядом с ПК , лучшим вариантом (но и более дорогим) являются беспроводные веб-камеры, которые можно установить в любом месте в комнате
  • изображение с камеры можно отслеживать в любом месте в мире (необходим только доступ в интернет)

IP-камера :

  • самые дешевые модели IP-камер стоят менее 2000 рублей, однако лучшие решения, оснащенные дополнительными функциями, стоят гораздо дороже
  • для правильной работы требуется доступ к местной сети
  • просты в установке и подключении , а их настройка осуществляется через веб-браузер или специализированное программное обеспечение, поставляемое вместе с камерой
  • потребляют меньше электроэнергии , чем набор веб-камера + компьютер
  • их можно установить в любом помещении дома или на улице – ограничением является только покрытие сети
  • предлагаются как проводные устройства (подключаемые к сети с помощью разъема RJ-45), так и беспроводные (используют сети Wi-Fi)
  • могут быть оснащены детектором движения, звука, микрофоном , часто имеют также встроенный FTP-сервер, и благодаря этому сохраняют снимаемое изображение в облаке
  • как и в случае веб-камер, вы можете наблюдать за домом из любой точки мира , используя веб-браузер или предоставляемое производителем камеры, программное обеспечение

Чем руководствоваться при покупке веб-камеры

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

На что же обратить внимание при выборе веб-камеры?

  • Тип подключения – веб-камеры подключаются к компьютеру через порт USB 2.0 или USB 3.0. В случае спецификации 2.0 данные передаются с максимальной скоростью 480 Мбит/сек, в свою очередь, для USB 3.0 максимальная скорость передачи данных составляет 5 Гбит/сек. На рынке можно встретить также устройства, которые для связи используют сеть Wi-Fi, разъем RJ-45 или .
  • Тип датчика – в большинстве доступных веб-камер используются датчики CMOS, которые прекрасно справляются при дневном свете, а также ночью в хорошо освещенных помещениях. Приобретая видеокамеру, стоит проверить также размер сенсора и, соответственно, его диагональ – чем больше, тем лучше качество изображения, но также больше устройство. Значение также имеет диапазон чувствительности.
  • Разрешение – отвечает за качество записываемого изображения и детализацию. Чем выше разрешение, тем больше информации может быть сохранено, а изображение гораздо четче.
  • Встроенный микрофон – это необязательно, но полезно не только в случае построения видеонаблюдения с использованием веб-камеры, но также для повседневного использования. Микрофон пригодится, если камера будет использоваться как радио-няня для самых маленьких.
  • Питание – подавляющее большинство веб-камер питается через порт USB. При покупке стоит проверить указанную производителем информацию о питании устройства.

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

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

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

  • Платформы: Linux, iOS, Android.

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

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

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

3. iSpy

  • Платформы: Windows, iOS, Android.

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

Можно подключить неограниченное количество источников. Есть датчик движения, сетевое вещание, уведомления. Кроме того, iSpy поддерживает загрузку на YouTube, Dropbox или FTP‑сервер.

В качестве источника можно использовать не только USB- и IP‑камеры, но и изображение рабочего стола.

  • Платформы:

Эта мультиплатформенная программа может похвастаться умным датчиком движения, который способен отличить человека от автомобиля или домашнего животного. Умеет работать с IP- и веб‑камерами, но в бесплатной версии можно стримить видео только с одного источника.

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

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

  • Платформы: Windows, macOS, iOS, Android.

Главное достоинство AtHome Video Streamer - мультиплатформенность. Помимо мобильных приложений для слежки, у программы есть полноформатные версии для Windows и macOS.

Предоставляется возможность вести запись по расписанию, сохранять видео в и отправлять уведомления на смартфон при обнаружении движения. В качестве источников используются камеры USB, IP, Smart TV, iOS- и Android‑устройств.

  • Платформа: Windows.

EyeLine Video Surveillance может задействовать до 100 каналов одновременно. В качестве источников позволяет использовать как веб-, так и IP‑камеры.

Программа оснащена детектором движения, менеджером архивных записей и возможностью загрузки видео на FTP‑сервер. Уведомления о событиях можно получать по электронной почте или СМС.

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

  • Платформы: Windows, iOS, Android.

Готовое решение от Milestone, которое сочетает простоту работы и массу полезных возможностей. XProtect Essential+ подойдёт для точек и домашнего использования.

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

XProtect Essential+ не требует активации, а бесплатная версия ограничена лишь количеством камер. При необходимости она легко масштабируется до платной с сохранением всех настроек.

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

В 2016 году опрос «Лаборатории Касперского» показал, что 23% россиян ведутся на такие статьи и заклеивают камеру на ноутбуке. Скорее всего, эти люди делают не только это, но принимают и другие меры безопасности. Например, они стараются не выходить из дома. Ведь увидеть компьютер с заклеенной камерой в общественном месте - редкая удача.

Но такие люди все же есть. Их окружение недоумевает: «Ты идиот? Кому надо смотреть на твою пропитую рожу?». Увы, но кое-кому все же может быть надо.

Кому?

Если вы работаете за служебным компьютером, то за вами могут наблюдать сотрудники IT-отдела или начальство. Но защищаться от такой слежки не стоит, иначе о вас могут подумать: «Он что-то скрывает? Надо бы присмотреться к нему».

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

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

RAT-еры

Все фото из галереи выше взяты из старого треда ☆ ShowCase ☆ Girl Slaves On Your RAT на hackforums.net. Хулиганы взломали камеры этих женщин, сделали фотографии и выложили, чтобы похвастаться достижениями перед товарищами. Скорее всего, жертвы никогда не узнают об этом.

RAT (Remote Administration Tools или Remote Access Trojan) - это софт для скрытого от пользователя удаленного управления компьютером. Первая такая программа появилась еще в 1998 году и называлась BackOrifice.

Термин RAT-ер ввели в обиход журналисты BBC несколько лет. Так в СМИ принято называть хулиганов, которые устанавливают RAT на компьютеры «жертв» и собирают на них «компромат». Чаще они делают это просто ради прикола, но некоторые зарабатывают на этом.

На что способен RAT?

В галерее выше скрины программы DarkComet RAT. Это махровая классика жанра, самый известный инструмент для скрытого управления чужим компьютером, появился еще в 2008 году. Его имя иногда даже попадает в новости. Ходят слухи, что именно DarkComet использовался сирийскими властями для слежки за оппозицией.

Таблица в левой части экрана - список пользователей, компьютерами которых можно управлять. Справа список доступных действий для каждого. Как видите, компьютеры полностью в руках мошенников. Можно даже загружать файлы и запускать bat-скрипты. Отдельного внимания заслуживают разделы Spy Functions и Fun Functions .

«Шпионские функции» позволяют наблюдать за «рабом»: записывать звук и видео, делать что-то на рабочем столе (что-то вроде TeamViewer), записывать все нажатия клавиш. А «забавные функции» могут напугать жертву: отключить мышь/клавиатуру, выдвигать дисковод, отправлять сообщений в виде диалоговых окон или чата на экран компьютера. Уточню на всякий случай: когда работает RAT, на Windows огонек возле камеры в большинстве случаев не горит.

Опасно ли это для Mac?


Да. Есть некоторые разновидности RAT работают под MacOS. Вот например, кроссплатформенный Blackhole, который изображен на картинке выше. Стандартных функций у него поменьше, но можно запускать сценарии на Apple Script и Shell-скрипт.

В RAT для Mac разработчики часто не включают функции для записи видео, так как в OS X и MaсOS они не могут бороться с включением огонька, который позволяет пользователю обнаружить работу программы. Даже у совсем нового RAT, который появился конце 2016 года, Backdoor.OSX.Mokes.a есть только функции для записи видео с экрана и звука. К вебкамере у него доступа нет.

Опасно ли это для смартфонов?

Да, для Android. Например, очень часто упоминаемый DroidJack. После установки это программы на смартфон жертвы, злоумышленник получает доступ к ее камере, микрофону, контактам, SMS, звонкам, местоположению, установленным приложениям. Для запуска не требует root-прав.

Как RAT попадает на компьютер жертвы?

Сначала RAT-ер создает файл с расширением exe, так называемый «стаб», в котором прописывает необходимые настройки. После этого ему надо сделать так, чтобы жертва запустила его на своем компьютере.

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

RAT-программы распространяются как индивидуально: «парень передает однокласснице ГДЗ по химии в виде exe-файла» или массово: выкладка на торренты или файлобменники под видом полезных программ, спам в соцсетях, почте, форумах. BlackHole, например, распространялся под видом антивируса для Mac.

Второй путь - тупо пристроиться к чужому компьютеру с флешкой, пока его хозяин отошел. Жертвами RAT-еров часто становятся их близкие люди. В Tor сети можно наткнутся на сайты с зазывной надписью на главной «Прямая трансляция с фронтальной камеры моей 13-летней сестры Джози. Заплатите 0.01BTC ($10) и наблюдайте за ней круглосуточно».

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

Сложно ли достать RAT?

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

По одной (комплект: проверенная программа + очень подробная инструкция) они продаются по цене от $0.5 до $2 долларов. Либо можно купить сразу 20-30 разновидностей RAT в виде Hacker Starter Pack за $10-$50, в который будет входить еще куча других программ, средства их распространения, маскировки от антивирусов (криптования) и обучающая литература. Документированные исходные коды RAT могут стоить несколько сотен долларов.

Упомянутый выше DarkComet уходит в прошлое, ведь разработчики закрыли проект еще в 2012 году. Но у него есть сотни аналогов и клонов. По данным исследования портала DarkReading, ТОП-3 RAT в конце 2015 года это - Sakula, KjW0rm и Havex. Но DarkComet пока еще держится на пятом месте в рейтинге.

Как RAT-еры зарабатывают на девочках?

Жертвами RAT’еров в большинстве случаев оказываются девочки 10-18 лет. Ведь за такой жертвой наблюдать интереснее всего. Девушки часто совмещают прием ванны с просмотром кино на ноутбуке, переодеваются несколько раз в день, ходят по дому в полуобнаженном виде, обсуждают с подругами подробности своей интимной жизни.

В 2013 году журналисты из BBC News писали, что доступ к компьютеру женщины стоит $1-$2, а мужчины всего лишь пару центов. Но на продаже доступов много денег не поднять, так как смотреть в камеру за незнакомцами быстро надоедает. А вот на эротическом видео заработать можно.

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

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

Как RAT-еры зарабатывают на мальчиках?

Нередко целью RAT-еров часто являются владельцы прокаченных аккаунтов в популярных онлайн-играх. Типичная история с форумов:

Я отошел попить чай. Когда вернулся, то увидел, что КОМП САМ перетаскивает игровые предметы и обменивается ими с кем-то.

Иногда таким образом взламывают владельцев посещаемых сайтов, блогов и страниц в соцсетях.

Как понять, что компьютер заражен?

Хулиганам не нужно, чтобы вы догадались о том, что вашим компьютером пользуется кто-то еще. Множество жертв RAT-еров не осознают своей участи. Анализ форумов выявил признаки, которые могут говорить о том, что вы стали «рабом»:

  • Даты последнего открытия файлов не совпадают с моментами, когда вы их открывали. Если у вас есть текстовый файл с паролями на рабочем столе, то обратите на него внимание в первую очередь;
  • Когда вы отходите от компьютера, то после находите курсор не в том месте, где вы его оставили;
  • Окна и вкладки в браузере внезапно открываются/закрываются;
  • Сразу с нескольких ваших аккаунтов в мессенджерах и соцсетях внезапно начал рассылаться спам;
  • Вы недосчитались денег на вашем электронном кошельке.

Что делать?


Камеру надо заклеивать в последнею очередь. Для избежания такой проблемы следует соблюдать всем известные правила безопасности: не скачивать всякую фигню из левых источников, не открывать подозрительные файлы из почты, не поддаваться на уговоры «поставить программу для накрутки лайков VK», не давать никому работать за своим личным компьютером.

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

Начинаем реализацию: первые досадные огорчения

Я был очень удивлен и расстроен, когда узнал, что в великом и могучем.NET
Framework напрочь отсутствует возможность простого взаимодействия с веб-камерами.
В четвертой версии ситуация улучшилась (для SilverLight-проектов точно появились
соответствующие классы), но протестировать я их не успел, поскольку пример для
данной статьи я начал писать еще до официального выхода VS2010 и 4-го.NET’a.

Практически отчаявшись, я плотно засел в гугле. Результаты поиска по рунету
меня не вдохновили – все, что я нашел – это ссылки на MSDN и технологию
DirectDraw. Я даже попробовал набросать простенький примерчик, но из-за
отсутствия опыта работы с DirectDraw меня постиг облом. У меня получилось
собрать совсем простенькое приложение, но я так и не смог выловить в нем все
глюки.

Еще больше отчаявшись, я принялся шерстить ресурсы наших западных товарищей.
Проштудировав несколько десятков ссылок, я смог нарыть много вкусностей. Среди
них были всевозможные примеры и небольшие статейки (американцы не любят много
писать). Мне даже удалось найти рабочий пример на основе DirectDraw, но, когда я
увидел код – ужаснулся. Разобраться в нем было тяжело. Поэтому я решил с ним не
заморачиваться, а попытаться найти способ попроще. Не успел я распрощаться с
примером на DirectDraw, как на глаза мне попался еще один. Автор примера закодил
целую библиотеку для работы с веб-камерами и другими устройствами видеозахвата,
используя технологию VFW (Video For Windows).

Жаль, что проект автора (я про библиотеку) был максимально кастрирован. Все,
что позволяла сделать библиотека – вывести изображение с веб-камеры. Ни захвата
отдельных кадров, ни записи видео и других полезных нам фич не было.

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

Посмотрев сорцы, я решил написать свою версию библиотеки и снабдить ее нужным
функционалом.

Взвод, готовность №1

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

Для решения этой нехитрой задачи в WindowsAPI предусмотрена функция
capGetDriverDescription(). Она принимает пять параметров:

  1. wDriverIndex – индекс драйвера видеозахвата. Значение индекса может
    варьироваться от 0 до 9;
  2. lpszName – указатель на буфер, содержащий соответствующее имя драйвера;
  3. cbName – размер (в байтах) буфера lpszName;
  4. lpszVer – указатель на буфер, содержащий описание определенного
    драйвера;
  5. cbVer – размер буфера (в байтах), в котором хранится описание драйвера.

В случае успешного выполнения, функция вернет TRUE. Описание функции у нас
есть, теперь посмотрим, как определить ее в C#. Делается это так:


protected static extern bool capGetDriverDescriptionA (short wDriverIndex,
ref String lpszName, int cbName, ref
String lpszVer, int cbVer);

Обрати внимание, что перед тем, как указать имя подключаемой функции, в
обязательном порядке требуется написать имя DLL, в которой она определена. В
нашем случае это avicap32.dll.

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

public static Device GetAllCapturesDevices()
{
String dName = "".PadRight(100);
String dVersion = "".PadRight(100);

for (short i = 0; i < 10; i++)
{
if (capGetDriverDescriptionA(i,
ref dName, 100, ref dVersion,
100))
{
Device d = new Device(i);
d.Name = dName.Trim();
d.Version = dVersion.Trim();

devices.Add(d);
}
}
return (Device)devices.ToArray
(typeof(Device));
}

Код выглядит проще некуда. Самое интересное место в нем – цикл, в котором
происходит вызов упомянутой выше функции capGetDriverDescription. Из MSDN мы
знаем, что индекс (первый параметр функции capGetDriverDescription()) может
варьироваться от 0 до 9, поэтому мы целенаправленно запускаем цикл в этом
диапазоне. Результатом выполнения метода будет массив классов Device (этот класс
я определил самостоятельно, смотри соответствующие исходники).

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

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

Теперь присмотримся внимательнее к функции capCreateCaptureWindow(). Ей
требуется передать шесть аргументов:

  1. lpszWindowName – нуль-терминальная строка, содержащая имя окна захвата;
  2. dwStyle – стиль окна;
  3. x – координата X;
  4. y – координата Y;
  5. nWidth – ширина окна;
  6. nHeight – высота окна;
  7. hWnd – handle родительского окна;
  8. nID – идентификатор окна.

Результатом выполнения функции будет handle созданного окна или NULL в случае
ошибки. Поскольку эта функция также относится к WinAPI, то ее опять-таки нужно
импортировать. Код импортирования приводить не буду, поскольку он практически
идентичен тому, что я писал для функции capGetDriverDescription(). Лучше сразу
взглянем на процесс инициализации камеры:

deviceHandle = capCreateCaptureWindowA (ref deviceIndex, WS_VISIBLE |
WS_CHILD, 0, 0, windowWidth, windowHeight, handle, 0);

if (SendMessage(deviceHandle, WM_CAP_DRIVER_CONNECT, this.index, 0) > 0)
{
SendMessage(deviceHandle, WM_CAP_SET_SCALE, -1, 0);
SendMessage(deviceHandle, WM_CAP_SET_PREVIEWRATE, 0x42, 0);
SendMessage(deviceHandle, WM_CAP_SET_PREVIEW, -1, 0);

SetWindowPos(deviceHandle, 1, 0, 0, windowWidth, windowHeight, 6);
}

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

Теперь представим, что сегодня боги на нашей стороне и произведем
незамедлительную отправку нескольких сообщений: WM_CAP_SET_SCALE,
WM_CAP_SET_PREVIEWRATE, WM_CAP_SET_PREVIEW. Увы, как и в случае с функциями, C#
ничего не знает о существовании этих констант. Тебе опять придется определять их
самостоятельно. Список всех необходимых констант с комментариями я привел ниже.

//Пользовательское сообщение
private const int WM_CAP = 0x400;
//Соединение с драйвером устройства видеозахвата
private const int WM_CAP_DRIVER_CONNECT = 0x40a;
//Разрыв связи с драйвером видеозахвата
private const int WM_CAP_DRIVER_DISCONNECT = 0x40b;
//Копирование кадра в буффер обмена
private const int WM_CAP_EDIT_COPY = 0x41e;
//Включение/отключение режима предпосмотра
private const int WM_CAP_SET_PREVIEW = 0x432;
//Включение/отключение режима оверлей
private const int WM_CAP_SET_OVERLAY = 0x433;
//Скорость previewrate
private const int WM_CAP_SET_PREVIEWRATE = 0x434;
//Включение/отключение масштабирования
private const int WM_CAP_SET_SCALE = 0x435;
private const int WS_CHILD = 0x40000000;
private const int WS_VISIBLE = 0x10000000;
//Установка callback-функции для preview
private const int WM_CAP_SET_CALLBACK_FRAME = 0x405;
//Получение одиночного фрейма с драйвера видеозахвата
private const int WM_CAP_GRAB_FRAME = 0x43c;
//Сохранение кадра с камеры в файл
private const int WM_CAP_SAVEDIB = 0x419;

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

Всего в библиотеке я реализовал (точнее, дописал) пару методов: GetAllDevices
(уже рассматривали), GetDevice (получение драйвера устройства видеозахвата по
индексу), ShowWindow (отображение изображения с веб-камеры), GetFrame (захват
отдельного кадра в графический файл) и GetCapture (захват видеопотока).

В качестве демонстрации работоспособности изготовленной либы я набросал
небольшое приложение. На форме я расположил один компонент ComboBox
(используется для хранения списка имеющихся устройств видеозахвата) и несколько
кнопок – "Обновить", "Пуск", "Остановить" и "Скриншот". Ах да, еще на моей форме
пестреет компонент Image. Его я применяю для отображения видео с камеры.

Разбор полетов начнем с кнопки "Обновить". По ее нажатию я получаю список
всех установленных устройств видеозахвата. Начинка этого обработчика события:

Device devices = DeviceManager.GetAllDevices();
foreach (Device d in devices)
{
cmbDevices.Items.Add(d);
}

Правда, все просто? Разработанная нами библиотека берет на себя все черную
работу и нам остается лишь наслаждаться объектно-ориентированным
программированием. Еще проще выглядит код для включения отображения видеопотока
с камеры:


selectedDevice.ShowWindow(this.picCapture);

Опять же, все проще пареной репы. Ну и теперь взглянем на код кнопки "Скриншот":

Device selectedDevice = DeviceManager.GetDevice(cmbDevices.SelectedIndex);
selectedDevice.FrameGrabber();

Я не стал уделять особого внимания методу FrameGrabber(). В моем исходнике
вызов метода приводит к сохранению текущего кадра прямо в корень системного
диска. Разумеется, это не очень корректно, поэтому перед боевым применением
программы не забудь внести все необходимые поправки.

Готовность № 3

Теперь настало время поговорить о том, как соорудить простенькую, но надежную
систему видеонаблюдения. Обычно такие системы базируются на двух алгоритмах:
различие двух фреймов и простое моделирование фона. Их реализация (код)
достаточно объемна, поэтому в самый последний момент я решил пойти по более
простому пути. Под легким путем подразумевается использование мощного, но пока
малоизвестного фреймворка для.NET – AForge.NET.

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

Теперь вернемся к нашей непосредственной задаче. Скажу честно, средствами
фреймворка она решается как дважды два. "Тогда зачем ты мне парил мозг WinAPI
функциями?" – недовольно спросишь ты. А за тем, чтобы ты не был ни в чем
ограничен. Сам ведь знаешь, что проекты бывают разные. Где-то удобнее применить
махину.NET, а где-то проще обойтись старым добрым WinAPI.

Вернемся к нашей задачке. Для реализации детектора движений нам придется
воспользоваться классом MotionDetector из вышеупомянутого фреймворка. Класс
отлично оперирует объектами типа Bitmap и позволяет быстренько вычислить процент
расхождения между двумя изображениями. В виде кода это будет выглядеть примерно
так:

MotionDetector detector = new MotionDetector(
new TwoFramesDifferenceDetector(),
new MotionAreaHighlighting());

//Обработка очередного кадра
if (detector != null)
{
float motionLevel = detector.ProcessFrame(image);

if (motionLevel > motionAlarmLevel)
{
flash = (int) (2 * (1000 / alarmTimer.Interval));
}

if (detector.MotionProcessingAlgorithm is BlobCountingObjectsProcessing)
{
BlobCountingObjectsProcessing countingDetector = (BlobCountingObjectsProcessing)
detector.MotionProcessingAlgorithm;
objectsCountLabel.Text = "Objects: " + countingDetector.ObjectsCount.ToString(
);
}
else
{
objectsCountLabel.Text = "";
}

Вышеприведенный код (не считая инициализацию класса MotionDetector) у меня
выполняется при получении очередного кадра с веб-камеры. Получив кадр, я
выполняю банальное сравнение (метод ProcessFrame): если значение переменной
motionlevel больше motionLevelAlarm (0.015f), то значит, надо бить тревогу!
Движение обнаружено. На одном из скришотов хорошо видна работа демонстрация
детектора движений.

Готовность №4

Веб-камеру можно запросто приспособить для распознавания лиц и создания
продвинутого способа лог-она в систему? Если переварив весь этот материал, ты
думаешь, что это сложно, то ты ошибаешься! В конце марта на сайте
http://codeplex.com (хостинг
для OpenSource проектов от MS) появился пример (а затем и ссылка на статью),
демонстрирующий реализацию программы для распознавания лиц с использованием
веб-камеры. Сам пример основан на использовании новых возможностей.NET и
SilverLight. Разобрать этот пример в рамках журнальной статьи нереально, так как
автор исходника постарался и сделал все максимально шикарно. Тут тебе и
алгоритмы для работы с изображениями (фильтр размытия, уменьшения шума,
попиксельное сравнение, растяжка и т.д.) и демонстрация новинок SilverLight и
много чего еще. Одним словом, must use! Ссылку на проект и статью ищи ниже.

Конец фильма

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

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

WWW

http://blogs.msdn.com/
– Русская версия статьи "Silverlight 4 real-time Face Detection"
(распознавание лиц в реальном времени при помощи SilverLight).


http://facelight.codeplex.com/ – здесь хостится проект "Facelight",
позволяющий распознавать лица в реальном времени. Если ты собрался закодить
серьезную софтину для определения лиц или логона в систему, то посмотреть на
этот проект просто обязан.


http://www.aforgenet.com/framework/ – тут ты
найдешь AForge .NET – отличный и простой в использовании фреймворк для работы с
видео, изображениями и т.д.

http://vr-online.ru
– все исходники примеров, а также кучу дополнительной информации ты
можешь слить с сайта проекта VR-Online.