Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
pwneye — Ваш компаньон для камер ONVIF и RTSP: обнаружение и взлом реальных камер видеонаблюдения 🎥 | Kitploit
Инструменты/GitHubGitHub/hackerest/pwneye
РазведкаБезопасность IoTАтаки на ПаролиАнализ уязвимостейЭксплуатацияСбор информацииСетевая безопасностьТестирование на ПроникновениеБезопасность оборудования и IoTRed Teaming
GitHub
239347817 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
hackerest/pwneye

pwneye

Ваш компаньон для камер ONVIF и RTSP: обнаружение и взлом реальных камер видеонаблюдения 🎥

Репозиторий
Поделиться

pwneye logo

version 1.3.2 codename panopticon Python 3.10+ macOS and Linux GNU GPL v3.0

pwneye — это сфокусированный и портативный инструмент offensive security для работы с IP-камерами, которые предоставляют сервисы ONVIF и RTSP. Он создан, чтобы дать исследователям безопасности и хакерам простой способ выполнять обнаружение, тестирование аутентификации, сбор метаданных, проверку потоков, запись и последующие действия в рамках единого CLI-процесса.

Среди поддерживаемых возможностей:

  • Локальное ONVIF-обнаружение в сети через WS-Discovery
  • ONVIF-аутентификация и многопоточный брутфорс с использованием отдельных учётных данных или файлов с логинами/паролями
  • Пост-аутентификационная ONVIF-энумерация информации об устройстве, настроенных пользователях, сетевой конфигурации, медиа-профилях и URI RTSP-потоков
  • Перезагрузка камеры, сброс к заводским настройкам и интерактивный доступ к shell через ONVIF
  • Управление PTZ через ONVIF как из CLI, так и из выделенного просмотрщика
  • Поддержка подмены и восстановления потока через ONVIF
  • Обнаружение RTSP-портов и определение вендора по баннеру
  • RTSP-брутфорс с учётом вендора и 450+ встроенными профилями учётных данных / строк подключения, а также поддержка ручного указания вендора и строки подключения
  • Многопоточный RTSP-брутфорс с выводом прогресса в реальном времени
  • Обработка многоканальных RTSP-потоков с автоматическим обнаружением, направляемой энумерацией и интерактивным выбором канала
  • Выделенный клиент живого просмотра с зумом и быстрым переключением каналов для целей типа DVR/NVR
  • Проверка RTSP-потоков, живой просмотр через ffplay, запись через ffmpeg и создание снимков
  • Кэширование успешных ONVIF- и RTSP-находок для каждой цели в ~/.pwneye

Демо

https://github.com/user-attachments/assets/6913632b-326d-455e-aa0d-be6bf9b3e66c

Содержание

  • Установка и обновления
    • pipx
    • Python
    • Внешние зависимости
  • Начало работы
  • ONVIF
    • Что даёт ONVIF
    • Энумерация локальной сети
    • Брутфорс учётных данных
    • Перезагрузка камеры
    • Сброс камеры
    • Управление камерой
    • Подмена потока
    • Восстановление потока
    • Получение shell
  • RTSP
    • Что даёт RTSP
    • Определение вендора
    • RTSP-брутфорс
    • Многоканальные потоки
    • Стриминг, запись и снимки
  • Советы и хитрости
  • Благодарности
  • Безопасность
  • Лицензия

Установка и обновления

pipx

Установите pwneye как системную CLI-команду из GitHub:```bash pipx install git+https://github.com/Hackerest/pwneye.git pwneye --help

root@kitploit:~
Удалите его:```bash
pipx uninstall pwneye

Позже обновите его из того же источника на GitHub:```bash pipx upgrade pwneye

root@kitploit:~
### Python```bash
git clone https://github.com/Hackerest/pwneye
cd pwneye
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python3 pwneye.py --help

Позже обновите его из того же источника на GitHub:```bash cd pwneye git pull source .venv/bin/activate pip install -r requirements.txt

root@kitploit:~
### Внешние зависимости

Следующие инструменты должны находиться в `PATH` в зависимости от используемого режима:
- `ffplay`
- `ffprobe`
- `ffmpeg` для записи

| Платформа | Команда установки |
| --- | --- |
| macOS (Homebrew) | `brew install ffmpeg` |
| Ubuntu / Debian | `sudo apt update && sudo apt install ffmpeg` |
| Fedora | `sudo dnf install ffmpeg ffmpeg-free` |
| Arch Linux | `sudo pacman -S ffmpeg` |
| openSUSE | `sudo zypper install ffmpeg` |

## Начало работы

Используйте эти варианты как самые быстрые точки входа в инструмент. Цель здесь — не документировать каждый флаг, а показать наиболее полезные способы начать работу с камерой в зависимости от того, что вы уже знаете.

Начните с полного рабочего процесса по умолчанию, когда у вас есть одна цель и вы хотите, чтобы `pwneye` сам выполнил выбор протокола за вас:```bash
pwneye -t 192.168.1.135

Начните с обнаружения ONVIF, когда вы находитесь в одной локальной сети и хотите идентифицировать устройства, производителей и подсказки о потоках до того, как прикоснётесь к RTSP:```bash pwneye --discover

root@kitploit:~
Начинайте напрямую с RTSP, когда ONVIF неактуален, недоступен или вы уже знаете, что хотите протестировать:```bash
pwneye -t 192.168.1.135 --skip-onvif

Начните с известных или предполагаемых учётных данных, когда хотите уменьшить количество ложных срабатываний и быстро проверить доступ:```bash pwneye -t 192.168.1.135 --username admin --password admin pwneye -t 192.168.1.135 --username admin --password ~/wordlists/passwords.txt pwneye -t 192.168.1.135 --username ~/wordlists/users.txt --password admin123

root@kitploit:~
Начните с известного пути или шаблона пути, когда у вас уже есть подсказка о потоке и вы хотите жёстко контролировать RTSP-запросы:```bash
pwneye -t 192.168.1.135 --skip-onvif -cn "/live/ch00_0"
pwneye -t 192.168.1.135 --skip-onvif -cn '/cam/realmonitor?channel={channel}&subtype=0'

Начните сбор доказательств, как только будет найден рабочий поток:```bash pwneye -t 192.168.1.135 --snapshot pwneye -t 192.168.1.135 --record

root@kitploit:~
Полезные флаги, которые стоит держать в уме:
- `--vendor VENDOR`: сокращает количество RTSP-запросов, когда семейство устройств уже известно
- `-cn, --connection-string PATH`: попробовать известный RTSP-путь или файл, содержащий кандидатные пути
- `--multi-channel`: отдавать предпочтение RTSP-путям на основе каналов, если вы подозреваете цель типа DVR/NVR
- `--threads N`: управление параллелизмом для перебора ONVIF и RTSP
- `--skip-onvif` / `--skip-rtsp`: сосредоточиться только на одном протоколе
- `--no-cache`: не читать из кэша и не записывать в него
- `--fresh`: игнорировать чтение из кэша, но по-прежнему записывать новые находки

## ONVIF

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

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

### Что даёт ONVIF

Когда камера открывает ONVIF, `pwneye` может использовать его для:

- обнаружения камер в локальной сети через WS-Discovery
- проверки аутентификации ONVIF с использованием фиксированных учётных данных или файлов
- извлечения метаданных производителя и устройства
- получения URI RTSP-потоков, открытых устройством
- перечисления полезного контекста после аутентификации перед более агрессивным обращением к RTSP
- запроса аутентифицированной перезагрузки с помощью `--reboot`
- запроса аутентифицированного сброса к заводским настройкам с помощью `--reset`
- перемещения камеры с поддержкой PTZ из командной строки или из выделенного просмотрщика
- открытия аутентифицированного интерактивного shell с помощью `--shell`
- дефейса потока через ONVIF с помощью `--deface`
- восстановления последнего сохранённого профиля дефейса с помощью `--undeface`

### Перечисление локальной сети

Используйте WS-Discovery для идентификации устройств с поддержкой ONVIF в локальной сети:```
pwneye --discover

[info] Starting continuous ONVIF discovery on the target network
[warning] No network interface was specified. Using en0 (subnet 192.168.1.0/24) for discovery
[success] Discovered 1 new ONVIF device(s) on the target network
[info] Saved ONVIF discovery data to cache for 192.168.1.135 (Tenda)

   Host: 192.168.1.135
   Port: 80
   Protocol: http
   Types: Device
   XAddrs: http://192.168.1.135:80/onvif/device_service
   Manufacturer: Tenda
   Name: CP3Pro
   Hardware: CP3Pro
   MAC: XX:XX:XX:XX:XX:XX
   Country: China
   Profiles: Streaming
   Capabilities: NetworkVideoTransmitter, ptz, video_encoder, audio_encoder

[success] ONVIF discovery stopped by user after identifying 1 device(s)

Цикл обнаружения продолжает опрос каждые несколько секунд, выводит только вновь обнаруженные устройства и может быть остановлен с помощью CTRL-C.

Вы также можете принудительно выполнить обнаружение через конкретный сетевой интерфейс:```bash pwneye --discover en0 pwneye --discover eth0

root@kitploit:~
Когда интерфейс не указан, `pwneye` автоматически выбирает исходящий интерфейс по умолчанию и сообщает вам, какую подсеть целевых устройств он использует для WS-Discovery.

### Перебор учётных данных

Запустите перебор только по протоколу ONVIF с фиксированным именем пользователя и файлом паролей:```
pwneye -t 192.168.1.135 -ou admin -op ~/wordlists/rockyou-short.txt --skip-rtsp --threads 5

[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying ONVIF authentication using user-provided credentials...
[success] 192.168.1.135 supports ONVIF on port 80
[warning] Unable to authenticate via ONVIF using provided credentials
[>] Do you want to extend the test to common ONVIF credentials? [(y)es/(n)o] (default: y): 
[info] No explicit ONVIF credentials specified, trying common ONVIF credentials...
[info] Trying ONVIF authentication using common username(s) and password(s)...
[success] 192.168.1.135 supports ONVIF on port 80
⠼ Trying ONVIF on 192.168.1.135:80 with camera:12345

Полезные опции:

  • --skip-onvif: пропустить обнаружение и перечисление ONVIF
  • -oP, --onvif-port PORT: проверить конкретный порт ONVIF
  • -ou, --onvif-username USER: имя пользователя ONVIF или файл с одним именем пользователя в строке
  • -op, --onvif-password PASS: пароль ONVIF или файл с одним паролем в строке

Если -ou и -op не указаны, pwneye автоматически переключается на свои встроенные распространённые имена пользователей и пароли ONVIF.

pwneye кэширует успешные учётные данные ONVIF для каждой цели в ~/.pwneye/cache и повторно использует их при последующих запусках, если вы не используете --fresh или --no-cache.

Перезагрузка камеры

Если аутентификация ONVIF прошла успешно, вы можете запросить перезагрузку напрямую:``` pwneye -t 192.168.1.135 --reboot

[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135 [info] Checking if the target (192.168.1.135) is reachable... [info] The target seems to be reachable [info] Trying cached ONVIF credentials for the target... [success] 192.168.1.135 supports ONVIF on port 80 [success] ONVIF connection established using the following configuration:

Port: 80 ONVIF Username: admin ONVIF Password: Hackerest1

[warning] Requesting ONVIF system reboot... [info] ONVIF reboot request sent [info] Checking if the camera is still reachable... [success] The device has been rebooted!

root@kitploit:~
Когда используется `--reboot`, проверка RTSP пропускается.

### Сброс камеры

Если аутентификация ONVIF прошла успешно, вы также можете запросить сброс к заводским настройкам напрямую:```text
pwneye -t 192.168.1.135 --reset

[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:

   Port: 80
   ONVIF Username: admin
   ONVIF Password: Hackerest1

[>] Do you really want to factory-reset the camera via ONVIF? [(y)es/(n)o] (default: n):
[warning] Requesting ONVIF factory reset...
[info] ONVIF factory reset request sent
[info] Checking if the camera is still reachable...
[warning] The ONVIF factory reset request was sent, but the target still appears to be reachable. Please verify manually that the reset was completed.

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

Как и в случае с --reboot, при использовании --reset проверка RTSP пропускается.

Перемещение камеры

Если целевое устройство поддерживает управление PTZ через ONVIF, pwneye может перемещать камеру как из терминала, так и из выделенного окна просмотра в реальном времени.

Из CLI используйте --move с параметром direction,duration. Флаг можно повторять, и запрошенные перемещения выполняются последовательно, при этом проверка RTSP пропускается:```bash pwneye -t 192.168.1.135 --move right,2 pwneye -t 192.168.1.135 --move right,2 --move up,1 --move down,3 pwneye -t 192.168.1.135 --move r,2 --move u,1 --move d,3

root@kitploit:~
Принимаемые направления:

- `left` или `l`
- `right` или `r`
- `up` или `u`
- `down` или `d`

Пример:```text
pwneye -t 192.168.1.135 --move r,2 --move u,1

...
[info] Trying cached ONVIF credentials for the target...
...
[success] ONVIF connection established using the following configuration:
...

[info] Requesting ONVIF PTZ move to right for 2.00 second(s)...
[info] The ONVIF move command was accepted
[info] Requesting ONVIF PTZ move to up for 1.00 second(s)...
[info] The ONVIF move command was accepted
[success] The camera has been moved!

Внутри выделенного просмотрщика, если поддерживается PTZ, сфокусированный вид также позволяет интерактивно перемещать камеру с помощью W, A, S и D. Это полезно, когда у вас уже есть рабочий поток и вы хотите получить прямую визуальную обратную связь при настройке устройства.

Дефейс потока

Если аутентификация ONVIF прошла успешно, pwneye также может попытаться дефейсить поток напрямую:```bash pwneye -t 192.168.1.135 --deface "THIS CAMERA IS EXPOSED"

root@kitploit:~
Что делает `--deface`, если кратко:

- сначала проверяется, поддерживает ли цель затемнение потока через ONVIF Imaging
- также проверяется, предоставляет ли цель переиспользуемые текстовые слои ONVIF
- если доступны оба варианта, `pwneye` выполняет полный дефейс
- если доступна только одна сторона, `pwneye` предупреждает пользователя и предлагает вместо этого частичный дефейс
- перед любыми изменениями `pwneye` сохраняет профиль восстановления для цели в `~/.pwneye/cache`

Реализация намеренно консервативна и ориентирована на совместимость с вендорами:

- для шага затемнения `pwneye` снижает поддерживаемые параметры управления изображением, такие как яркость, контраст и насыщенность, вместо того чтобы полагаться на специфические для вендора трюки
- для шага с текстом `pwneye` повторно использует существующие записываемые текстовые слои ONVIF, а не создаёт или удаляет новые записи OSD
- это делает функцию более совместимой с разными семействами камер, даже если конечный визуальный результат всё равно зависит от прошивки

Пример:```text
pwneye -t 192.168.1.135 --deface "THIS CAMERA IS EXPOSED"

[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:

   Port: 80
   ONVIF Username: admin
   ONVIF Password: Hackerest1

[info] Inspecting ONVIF deface capabilities...
[info] The target supports ONVIF deface
[>] Do you want to proceed with the deface attempt? [(y)es/(n)o] (default: n): y
[warning] Trying to deface the target stream with THIS CAMERA IS EXPOSED
[info] A backup profile is being created for future restorations...
[success] Backup profile saved successfully to /Users/user/.pwneye/cache/192.168.1.135.yaml
[info] Trying to darken the stream...
[success] The stream was darkened successfully
[info] Trying to replace the current on-stream text with THIS CAMERA IS EXPOSED
[info] Verifying the text update...
[success] The target stream has been defaced!
[info] To restore the previous configuration, run the tool again with --undeface

Deface placeholder

Отмена дефейса потока

Если предыдущий запуск --deface сохранил профиль восстановления для цели, pwneye может использовать его для восстановления исходного состояния ONVIF:```bash pwneye -t 192.168.1.135 --undeface

root@kitploit:~
Что делает `--undeface`, если кратко:

- ищет ранее сохранённый профиль восстановления deface в записи кэша цели
- если профиля нет, немедленно останавливается с ошибкой
- если профиль существует, пытается восстановить исходные настройки Imaging и исходные редактируемые текстовые слои
- как и в случае с `--deface`, конечный результат может быть полным или частичным в зависимости от того, что цель разрешает через ONVIF

Профиль восстановления не удаляется после успешного выполнения `--undeface`. Он остаётся в кэше до тех пор, пока будущий `--deface` не перезапишет его более новым профилем.

Пример:```text
pwneye -t 192.168.1.135 --undeface

[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135
[info] Checking if the target (192.168.1.135) is reachable...
[info] The target seems to be reachable
[info] Trying cached ONVIF credentials for the target...
[success] 192.168.1.135 supports ONVIF on port 80
[success] ONVIF connection established using the following configuration:

   Port: 80
   ONVIF Username: admin
   ONVIF Password: Hackerest1

[info] Looking for a saved deface profile for this target...
[info] A saved deface profile was found at /Users/user/.pwneye/cache/192.168.1.135.yaml
[>] Do you want to proceed with the undeface attempt? [(y)es/(n)o] (default: n): y
[warning] Trying to restore the target stream...
[info] Trying to restore the original stream brightness profile...
[success] The original stream brightness profile was restored successfully
[info] Trying to restore the original on-stream text...
[success] The original on-stream text was restored successfully
[success] The target stream has been restored!

Получение оболочки

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

Пример:```text pwneye -t 192.168.1.135 --shell

[info] Found cached ONVIF/RTSP credential(s) for 192.168.1.135 [info] Checking if the target (192.168.1.135) is reachable... [info] The target seems to be reachable [info] Trying cached ONVIF credentials for the target... [success] 192.168.1.135 supports ONVIF on port 80 [success] ONVIF connection established using the following configuration:

Port: 80 ONVIF Username: admin ONVIF Password: Hackerest1

[info] Opening the interactive ONVIF shell...

This feature is powered by https://github.com/nirsimetri/onvif-python (leave it a ⭐!) Use TAB for completion and help for commands.

[email protected]:80 > ls analytics events media2 pullpoint ruleengine capabilities help store cls debug pwd type deviceio imaging notification recording search caps exit rm clear ls shortcuts devicemgmt media ptz replay subscription services quit show info cd desc

root@kitploit:~
## RTSP

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

В `pwneye` обработка RTSP построена вокруг обнаружения портов, снятия баннеров, выбора путей с учётом вендора, оркестрации брутфорса, проверки потока, предпросмотра и записи.

### Что даёт RTSP

RTSP — это часть рабочего процесса, которая подтверждает, действительно ли вы можете получить доступ к потоку. В `pwneye` это означает:

- обнаружение RTSP на распространённых или заданных пользователем портах
- снятие баннеров и попытку автоматической идентификации вендора
- брутфорс учётных данных по путям с учётом вендора или заданным пользователем
- проверку рабочих потоков перед их открытием
- запись потоков или захват снимков для доказательств
- перечисление нескольких каналов, когда цель ведёт себя как DVR или NVR

### Идентификация вендора

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

Если автоматическая идентификация на основе баннеров не удалась, а вы уже знаете вендора из предыдущего анализа, вы можете передать его напрямую, чтобы значительно сократить количество запросов:```bash
pwneye -t 192.168.1.135 --vendor tenda

Вы также можете получить только баннер RTSP и выйти:``` pwneye -t 192.168.1.135 --skip-onvif --banner

... [info] RTSP service detected on port(s): 554 [success] RTSP banner on port 554: Hipcam RealServer/V1.0

root@kitploit:~
Полезные параметры:
- `--skip-rtsp`: пропустить обнаружение RTSP и перебор паролей
- `-P, --rtsp-port PORT`: проверить конкретный RTSP-порт
- `--vendor VENDOR`: принудительно указать производителя из базы RTSP
- `--list-vendors`: вывести список производителей, поддерживаемых базой знаний RTSP, и выйти
- `--protocol tcp|udp`: выбрать транспорт RTSP, по умолчанию — `tcp`
- `--timeout SECONDS`: таймаут RTSP, по умолчанию — `10`

### Перебор паролей RTSP

Перебор RTSP с фиксированными учётными данными:```bash
pwneye -t 192.168.1.135 --username admin --password admin

Только ротация имён пользователей с фиксированным паролем:```bash pwneye -t 192.168.1.135 --password 'SuperSecretPass' --vendor hikvision --threads 10

root@kitploit:~
Попробуйте одну строку подключения RTSP, предоставленную пользователем:```bash
pwneye -t 192.168.1.135 --skip-onvif -cn "/11"
pwneye -t 192.168.1.135 --skip-onvif -cn "/cam/realmonitor?channel=1&subtype=0"

Загрузить строки подключения-кандидаты из файла:```bash pwneye -t 192.168.1.135 --skip-onvif -cn paths.txt

root@kitploit:~
Объедините ручной путь с фиксированными учётными данными:```bash
pwneye -t 192.168.1.135 --skip-onvif -u admin -p admin -cn "/live/ch00_0"

Предпочитайте многоканальные пути, когда целью, скорее всего, является DVR/NVR:```bash pwneye -t 192.168.1.135 --skip-onvif --multi-channel

root@kitploit:~
Полезные параметры:
- `-u, --username USER`: имя пользователя RTSP или файл с одним именем пользователя в строке
- `-p, --password PASS`: пароль RTSP или файл с одним паролем в строке
- `-cn, --connection-string PATH`: строка подключения RTSP или файл с одной строкой подключения в строке
- `--multi-channel`: предпочитать многоканальные строки подключения RTSP, когда они доступны
- `--threads N`: количество параллельных потоков, используемых движком перебора

Если `-u` и `-p` не указаны, `pwneye` автоматически переключается на встроенные распространённые имена пользователей и пароли RTSP.

`pwneye` кэширует успешные учётные данные RTSP и проверенные метаданные потока для каждой цели в `~/.pwneye/cache`.

Поведение кэша:
- по умолчанию: повторно использовать кэшированные валидные находки перед запуском нового перебора
- `--fresh`: игнорировать кэшированные результаты, но по-прежнему обновлять кэш новыми находками
- `--no-cache`: отключить как чтение, так и запись кэша

### Многоканальные потоки

Некоторые камеры, видеорегистраторы (DVR) и сетевые видеорегистраторы (NVR) предоставляют несколько логических каналов RTSP вместо одного статического пути. Типичные примеры включают шаблоны, такие как:```text
rtsp://IP:554/?chID=1&streamType=main&linkType=tcp
rtsp://IP:554/cam/realmonitor?channel=1&subtype=0

pwneye может обнаруживать это автоматически при проверке RTSP, в том числе на основе встроенных знаний о RTSP от конкретных производителей, но вы также можете управлять этим процессом явно:

  • --multi-channel указывает pwneye предпочитать канальные RTSP-пути из базы знаний
  • --connection-string позволяет указать собственный шаблон канала, включая такие плейсхолдеры, как {channel}
  • та же логика шаблонов работает и в тех случаях, когда строки подключения поступают из файла
  • после обнаружения нескольких каналов pwneye может открыть либо один поток, либо выделенное окно многоканального просмотра

Примеры:```bash pwneye -t 192.168.1.135 --skip-onvif --multi-channel pwneye -t 192.168.1.135 --skip-onvif -cn '/cam/realmonitor?channel={channel}&subtype=0' pwneye -t 192.168.1.135 --skip-onvif -cn channel_paths.txt

root@kitploit:~
Пример вывода:```text
[info] Enumerating RTSP channels using the validated connection template...
[info] Press CTRL-C to stop channel enumeration and choose from the channels found
[success] RTSP channel 2 is valid
[success] RTSP channel 3 is valid
[warning] RTSP channel enumeration interrupted by user. Using the channels discovered so far

   [0] Open all discovered channels in a dedicated client
   [1] Channel 1: rtsp://192.168.1.135:554/cam/realmonitor?channel=1&subtype=0
   [2] Channel 2: rtsp://192.168.1.135:554/cam/realmonitor?channel=2&subtype=0
   [3] Channel 3: rtsp://192.168.1.135:554/cam/realmonitor?channel=3&subtype=0

[>] Select channel (CTRL-C to exit):

Если вы выберете Open all discovered channels, pwneye запускает выделенный многоканальный клиент, который удерживает все обнаруженные потоки в одном окне. Каждый поток отображается в мозаике как живое предпросмотр, а клик по плитке переводит этот канал в увеличенное сфокусированное представление с простым действием Back для возврата к сетке.

pwneye dedicated multi-channel client demo

По умолчанию живое RTSP-предпросмотр использует выделенный клиент pwneye. Если вы предпочитаете классический рабочий процесс с системным плеером, вы можете добавить --legacy, чтобы открыть проверенный поток с помощью ffplay.

Когда выделенный клиент открыт, вы также можете запускать Snapshot и Record прямо из сфокусированного представления, не покидая GUI. Это полезно, когда вы хотите сначала осмотреть поток и только затем решить, сохранить ли статичное изображение или начать запись доказательств.

Потоковая передача, запись и снимки экрана

Откройте проверенный поток с живым предпросмотром:```bash pwneye -t 192.168.1.135 --vendor tenda

root@kitploit:~
Записать проверенный RTSP-поток с предпросмотром:```bash
pwneye -t 192.168.1.135 --record
pwneye -t 192.168.1.135 --record living-room.mp4

Сделайте снимок экрана вместо полной записи:```bash pwneye -t 192.168.1.135 --snapshot pwneye -t 192.168.1.135 --snapshot living-room.jpg

root@kitploit:~
Запись без открытия окна предпросмотра:```
pwneye -t 192.168.1.135 --record living-room.mp4 --no-video

...
[info] Recording RTSP stream to /Users/user/.pwneye/recordings/192.168.1.135/2026-04-14_20-25-03.mp4
[info] Press CTRL-C to stop the recording
[warning] Retrying MP4 finalization in compatibility mode (transcoding)...
[success] Recording saved to /Users/user/.pwneye/recordings/192.168.1.135/2026-04-14_20-25-03.mp4 (5.75 MB)

Поведение записи:

  • --record [OUTPUT.mp4]: записывает проверенный RTSP-поток; если параметр опущен, файл с отметкой времени создаётся в ~/.pwneye/recordings
  • --snapshot [OUTPUT.jpg]: сохраняет кадр из проверенного RTSP-потока; если параметр опущен, файл с отметкой времени создаётся в ~/.pwneye/snapshots
  • --no-video: пропустить предпросмотр в реальном времени и декодирование
  • выделенный просмотрщик также предоставляет действия Snapshot и Record непосредственно в активном представлении
  • записи по умолчанию хранятся в ~/.pwneye/recordings/<target>/
  • снимки по умолчанию хранятся в ~/.pwneye/snapshots/<target>/

Советы и рекомендации

Если бы pwneye был видеоигрой, это, вероятно, были бы подсказки, которые вы видите на экране загрузки:

  • Сильный веб-интерфейс не означает защищённую камеру: Камера с хорошо защищённым веб-интерфейсом не обязательно хорошо защищена в целом. Часто встречается надёжная блокировка веб-доступа, в то время как RTSP остаётся без аутентификации или принимает практически неограниченное количество попыток.
  • Используйте обнаружение, когда это возможно: Если --discover работает в локальной сети, используйте его в первую очередь. Информация о производителе, метаданные устройства и кэшированные результаты могут сделать дальнейшую RTSP-работу гораздо тише и надёжнее.
  • ONVIF в первую очередь может быть более разумным шагом: ONVIF и RTSP часто используют одни и те же учётные данные. Если ONVIF открыт, обычно разумнее сначала перебирать пароли на этой стороне с помощью --skip-rtsp, а не долбить напрямую по RTSP и делать поток нестабильным. Когда pwneye находит действительные учётные данные ONVIF, он автоматически попытается использовать их для RTSP.
  • Известные производители снижают шум: Если вы уже знаете производителя, укажите --vendor явно. Это сокращает количество запросов и помогает сохранить стабильность хрупких целей.
  • Известные пути лучше слепого перебора: Если вы уже знаете или подозреваете путь, используйте --connection-string вместо широкого перечисления RTSP. Это даёт более точный контроль над набором запросов и упрощает интерпретацию ошибок.
  • Рекордер может предоставлять более одного потока: Если цель похожа на DVR/NVR, попробуйте --multi-channel или шаблон ручного канала, прежде чем предполагать, что она предоставляет только один поток.
  • Перезагрузка может быть шагом восстановления: Если у вас есть действительные учётные данные RTSP, но видео всё равно не открывается, поток может быть просто нестабильным после многократного зондирования. Если у вас также есть доступ к ONVIF, грубым, но часто эффективным шагом восстановления является .

Благодарности

Особая благодарность @kaburagisec за onvif-python, библиотеку ONVIF, используемую pwneye. Она сделала ONVIF-часть этого проекта значительно проще и надёжнее.

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

Безопасность

Используйте pwneye только против активов, которыми вы владеете или на проверку которых у вас есть явное разрешение.

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

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

Лицензия

Этот проект распространяется под лицензией GNU GPL3. См. LICENSE.md.

Скачать инструмент
--reboot
  • Действительный поток не всегда означает значимый: Некоторые устройства с радостью возвращают поток даже для неверных путей и неверных идентификаторов каналов. Относитесь к широкому успеху по каналам как к подсказке, пока не подтвердите, что полученный поток действительно отличается.