Получение снимка JPEG с IP камер GeoVision

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

Потребовалось получить моментальный снимок с камеры GeoVision BX-2400. В идеале чтобы при запросе сразу отдавалась картинка в формате jpeg/png. В веб-интерфейсе камеры предусмотрена возможность загружать на FTP и отправлять по почте моментальные снимки в случае обнаружения движения, что мне не очень подходит:

geovision_ftp

Настройка загрузки изображений по FTP

Гугление на данную тему приводит лишь на одно страницу: Ispyconnect.com. Но рабочей ссылки там нет.

Камера, как и большинство текущих устройств, работает на линуксе. Производитель периодически обновляет прошивку камеры, выкладывая новую на сайте. Последняя версия на момент написания статьи была 3.00, скачаем её. В zip-архиве лежит файл в формате img, посмотрим, что он из себя представляет при помощи утилиты binwalk:

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

На выходе получим рядом каталог с распакованной файловой системой камеры. Внутри нас интересует каталог www, в котором собраны cgi-файлы веб-интерфейса:

Содержимое каталога www

Содержимое каталога www

Беглый осмотр названий показал, что нас интересуют 3 файла:

JpegStream.cgi
RoiSnapshot.cgi
PictureCatch.cgi

Начнём с JpegStream.cgi. Простое обращение через браузер выдаёт нам пустую страницу, не густо. Однако, через веб-интерфейс камеры доступны отладочные логи (Менеджмент->Информация журнала), попробуем заглянуть в них:

В последней строке видим ошибку, что не указан канал. Укажем его, добавив в адресной строке JpegStream.cgi?channel=1:

Продвинулись дальше, теперь требуется логин и пароль. По умолчанию, в камере идёт логин admin и пароль admin. Сразу скажу, что добавление &User=admin&PW=admin ни к чему не привело, правильная комбинация нашлась путем перебора, но на выходе получаем трансляцию в MJPEG:

http://ip_camera/JpegStream.cgi?username=admin&password=admin&channel=1

Трансляция в формате MJPEG мне не нужна, идём дальше. RoiSnapshot.cgi при обращении через браузер требует авторизации, поэтому предварительно авторизуемся через веб-интерфейс. После этого скрипт выдает одну текстовую строчку с сылкой на файл jpeg:

tmp/event20160421162549002.jpg

Полная ссылка соответственно выглядит так:

http://ip_camera/tmp/event20160421162549002.jpg

Но стоит открыть его через браузер, как нас ждет разочарование: очень маленький снимок, что для Full HD камеры выглядит как издевательство.

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

http://ip_camera/PictureCatch.cgi?username=admin&password=admin&channel=1

И бинго! В ответ получаем картинку в формате JPEG, с которой дальше можем делать всё, что необходимо.

На последок добавлю, что данный способ работает на следующих IP камерах GeoVision:

GV-BL120D / 130D / 220D / 320D / GV-BL1200 / 1300 / 1500 / 2400 / 2500 / 3400 / 1210 / 2410 /3410 / 5310 / 2510-E / 5310-E
GV-BX1300 Series / 1500 Series / 2400 Series / 2500 Series / 3400 Series / 5300 Series
GV-BX1500-E / 2400-E / 3400-E / 5300-E / 2510-E / 5310-E
GV-CA120 / 220 and GV-CAW120 / 220
GV-FD120D / 220D / 320D / 1200 / 1500 / 2400 / 2500 / 3400 / 5300 / 1210 / 1510 / 2410 / 2510 / 3410
GV-FE420 / 421 / 520 / 521 / 2301 / 4301 / 2302 / 3402 / 3403 / 5302 / 5303
GV-FER3402 / 3403 / 521 / 5302 / 5303
GV-MDR120 / 220 / 320 / 520 / 1500 Series / 3400 Series / 5300 Series
GV-MFD120 / 130 / 220 / 320 / 520 / 1501 Series / 2401 Series / 2501 Series / 3401 Series / 5301 Series
GV-PT130D / 220D / 320D
GV-UBL1211 / 2411 / 3411 / 1301 Series / 2401 Series / 3401 Series
GV-UBX1301 Series / 2301 Series / 3301 Series
GV-VD120D / 121D / 122D / 123D / 220D / 221D / 222D / 223D / 320D / 321D / 322D / 323D
GV-VD1500 / 2400 / 2500 / 3400 / 1530 / 2430 / 2530 / 3430 / 1540 / 2440 / 2540 / 3440 / 5340 / 2540-E / 5340-E

No Comments

Leave a Comment

Please be polite. We appreciate that.
Your email address will not be published and required fields are marked