Как обнаружить скрытые камеры?
Life-Hack [Жизнь-Взлом]/ХакингЕсли камера использует Wi-Fi, то её MAC адрес виден всем. Если сопоставить этот MAC с базой данных производителей камер, то можно выявить эту камеру.
Если камера не использует Wi-Fi, но использует проводную сеть, то её можно обнаружить только если есть подключение к этой же сети (например, к сети отеля, аэропорта и т. п.).
Если устройство не использует ни проводную, ни беспроводную сеть, то выявить такое устройство невозможно описанными ниже методами. То есть, к примеру, видеорегистраторы таким способом не найти.
Для Wi-Fi устройств MAC адреса можно собрать с помощью airodump-ng, для устройств в сети, к которой мы подключены, мак адреса можно узнать с помощью Nmap. Но нам нужна база данных производителей скрытых камер, да и камер вообще.
База данных MAC адресов всех скрытых камер
Я не нашёл баз данных MAC адресов производителей камер, кроме небольших списков, составленных энтузиастами. Может быть, для отправной точки это подошло бы, но всё равно не то.
Я нашёл сайт, со списками производителей специализированного оборудования: https://directory.ifsecglobal.com/video-surveillance-code004812.html. Я не знаю, актуальные эти списки или нет, полные или не полные, но они достаточно большие и там есть все производители, упомянутые энтузиастами (а тех, которых нет на сайте, то я их не нашёл и в списке OUI, содержащих MAC адреса всех производителей устройств).
Правильное название производителя легко сопоставить с базой данных MAC, поэтому нам достаточно собрать имена вендоров — это отлично подойдёт для нашей цели — поиск скрытых камер.
Создайте файл vendors.sh:
gedit vendors.sh
Скопируйте в него следующий код:
#!/bin/bash TMP_FILE='/tmp/vendors.txt' FILE='vendors.txt' curl -s 'https://directory.ifsecglobal.com/screens-monitors-code004843.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' > $TMP_FILE curl -s 'https://directory.ifsecglobal.com/cameras-code004815.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/cctv-poles-and-columns-code004816.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/data-storage-solutions-code009685.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/voice-video-integrated-data-systems-code004908.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/dvr-code004822.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/voice-video-integrated-data-storage-code004941.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/nvr-code004827.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/4k-cameras-code009684.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/anpr-code004813.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/body-worn-cameras-code007865.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/hd-quality-cameras-code007866.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/low-light-level-camera-systems-code007867.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/camera-housings-code004814.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/internet-remote-surveillance-code004932.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/cctv-monitoring-code004999.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/dome-camera-code004821.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/ip-cameras-code004823.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/security-camera-lenses-code004824.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/security-monitors-code004825.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/security-screens-code007437.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/ptz-camera-code004828.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/switches-code004968.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/remote-surveillance-code004829.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/public-space-surveillance-code005012.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/infrared-cameras-code007439.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/thermal-imaging-code004833.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/ai-machinelearning-code009668.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/security-cameras-code007485.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/video-surveillance-code007482.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE curl -s 'https://directory.ifsecglobal.com/video-surveillance-code004812.html' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE #curl -s '' | grep -E 'ed-companyName' | grep -E -o '">[^/]+<' | sed 's/<//' | sed 's/">//' >> $TMP_FILE echo 'Tenda Technology Co., Ltd.' >> $TMP_FILE #https://www.google.com/search?q=Tenda+Technology+CCTV&tbm=isch echo 'LG Innotek' >> $TMP_FILE #https://www.google.com/search?q=LG+Innotek+CCTV&tbm=isch echo 'Hand Held Products Inc' >> $TMP_FILE #Handheld Thermal Cameras echo 'Wistron Neweb Corporation' >> $TMP_FILE #https://www.wnc.com.tw/index.php?action=pro_detail&id=76 echo 'HangZhou KuoHeng Technology Co.,ltd' >> $TMP_FILE #https://www.google.com/search?q=HangZhou+KuoHeng+Technology&tbm=isch #echo '' >> $TMP_FILE echo "Total vendors in the list: "`cat $TMP_FILE | wc -l` cat $TMP_FILE | sort| uniq > $FILE echo "Unique vendors in the list: "`cat $FILE | wc -l`
Запускать так:
bash ./vendors.sh
В результате будет создан файл vendors.txt.
Статистика:
Total vendors in the list: 1665 Unique vendors in the list: 680

Всего найден 680 уникальный производитель — это достаточно много. Если вы знаете другие списки или базы данных, то пишите в комментариях — можно будет использовать их или дополнить данные из них. Я не знаю, попали ли сюда «ноунеймы». На AliExpress продаются камеры наблюдения без названия на корпусе, без упоминания производителя в инструкции и без его упоминания на коробке (потому что коробки нет). Если у вас есть MAC адреса таких ноунеймов, то пишите их в комментариях, можно будет добавить в скрипт для улучшения охвата.
Вы также можете просмотреть список vendors.txt и удалить лишние, по вашему мнению, записи. Например, я обратил внимание, что много «срабатываний» вызывает «HUAWEI TECHNOLOGIES CO.,LTD», поскольку эта фирма делает ещё и мобильные телефоны (но камеры наблюдения они тоже делают: https://www.google.com/search?q=HUAWEI+CCTV&tbm=isch).
Сканер скрытых камер Wi-Fi по MAC адресу
Теперь, когда у нас есть база данных производителей скрытых камер, нам нужно собрать MAC адреса в округе.
Я буду использовать проверенный метод, описанный в статье «Как обнаружить все Wi-Fi устройства в округе?»
Далее перечисленны команды для запуска сбора информации. Если вам что-то в них непонятно, то обратитесь к статье, на которую дана ссылка.
Чтобы проанализировать файл .csv, нужно, чтобы airodump-ng его создала. Для этого переводим беспроводную карту в режим монитора. Я всегда начинаю со следующих двух команд, чтобы не мешали никакие процессы:
sudo systemctl stop NetworkManager sudo airmon-ng check kill
После этого перевожу Wi-Fi карту в режим монитора:
sudo ip link set wlan0 down sudo iw wlan0 set monitor control sudo ip link set wlan0 up
Теперь запускаем airodump-ng примерно следующей командой:
sudo airodump-ng --berlin 60000 -w /tmp/test wlan0
Если вас также интересует диапазон 5 ГГц и если ваша беспроводная карта его поддерживает, то можно запустить примерно такой командой:
sudo airodump-ng --channel 1-13,36-165 --berlin 60000 -w /tmp/test wlan0
Я сохранил в файл /home/mial/cameras-01.csv, у меня там набралось 1600 строк, в ручную мы его анализировать, конечно же, не будем:
cat /home/mial/cameras-01.csv | wc -l 1600
Вообще мы можем использовать скрипт из статьи «Как обнаружить все Wi-Fi устройства в округе?», просто добавив в него ещё и проверку по базе данных производителей скрытых камер. И именно так мы и поступим, но попозже. Дело в том, что при большом количестве записей скрипт работает медленно.
Поэтому вначале мы воспользуемся более лёгким скриптом, который просто проверит, есть ли вокруг камеры наблюдения. И если они есть, то можно запустить более тяжёлый скрипт, для анализа, к каким Точкам Доступа они подключены.
Создайте файл fc.sh:
Скопируйте в него следующий код:
#!/bin/bash
if [[ "$1" && -f "$1" ]]; then
FILE="$1"
else
echo 'Укажите .csv файл, который вы хотите проанализировать.';
echo 'Пример запуска:';
echo -e "\tbash fc.sh /tmp/test-01.csv";
exit
fi
while read -r line ; do
newline="$(echo $line | grep -E '([A-Z0-9:]{17})')"
if [ "$newline" ]; then
MAC2=`echo "$newline" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
resultshort="$(grep -i ^$MAC2 ./oui.txt)";
vendor=`echo "$resultshort" | cut -f 3`
if [ "$vendor" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo
echo $newline
echo $vendor
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
echo
fi
fi
fi
done < <(cat $FILE | awk -F ',' '{print $1}')
Запускать так:
bash ./fc.sh /ПУТЬ/ДО/ФАЙЛА.csv
Если файл, который получен с airodump-ng, расположен по пути /tmp/test-01.csv, тогда моя команда следующая:
bash fc.sh /tmp/test-01.csv
Также нам понадобиться файл с базой данных MAC-адресов и соответствующих им производителей, скачайте его в ту же директорию, где разместили файл fc.sh — скачать этот файл нужно до запуска fc.sh и всех других скриптов из этой статьи:
wget http://standards-oui.ieee.org/oui/oui.txt
Исправляем скачанный файл, поскольку в нём используется разрыв строки DOS/Windows, а это приводит к проблемам, конкретно в нашем случае без этого исправления программа grep не смогла бы найти строку, даже если она соответствует шаблону:
dos2unix -i oui.txt
Скрипт, используя базу данных сопоставляющую производителей с выделенными им MAC адресами (oui.txt), определит имя вендоров для каждого собранного MAC-адреса и затем проверит, присутствует ли этот вендор в списке производителей камер наблюдения.
Скрипт покажет MAC адрес и название производителей для всех потенциальных камер. Если скрипт ничего не показал, значит ничего не нашлось.

Помните, что некоторые вендоры производят не только камеры наблюдения, но и разнообразную другую электронику (HUAWEI, Sony, Bosch), поэтому весьма вероятны «ложные срабатывания» — в «камеры наблюдения» могут быть записаны устройства, которые ими не являются (например, мобильные телефоны HUAWEI). То есть если что-то найдено, или даже если скрипт вывел с десяток устройств, это не означает, что это всё камеры. В первую очередь, обратите внимание на производителя — довольно часто, ими оказываются популярные производители телефонов.
Если вы нашли что-то интересное, то можно воспользоваться скриптом, который показывает, к каким Точкам Доступа подключены все устройства.
Создайте файл findcameras.sh:
gedit findcameras.sh
Скопируйте в него следующий код:
#!/bin/bash
if [[ "$1" && -f "$1" ]]; then
FILE="$1"
else
echo 'Укажите .csv файл, который вы хотите проанализировать.';
echo 'Пример запуска:';
echo -e "\tbash findcameras.sh /tmp/test-01.csv";
exit
fi
echo -e "\033[1mВсего точек доступа: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE | wc -l`\e[0m"
echo -e "\033[1mВсего клиентов: \033[0;31m`grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE | wc -l`\e[0m"
echo -e "\033[1mИз них клиентов без ассоциации: \033[0;31m`grep -E '(not associated)' $FILE | wc -l`\e[0m"
echo -e "\033[0;36m\033[1mИнформация о сетях:\e[0m"
while read -r line ; do
if [ "`echo "$line" | cut -d ',' -f 14`" != " " ]; then
echo -e "\033[1m" `echo -e "$line" | cut -d ',' -f 14` "\e[0m"
else
echo -e " \e[3mне удалось получить имя сети\e[0m"
fi
fullMAC=`echo "$line" | cut -d ',' -f 1`
echo -e "\tMAC-адрес: $fullMAC"
MAC=`echo "$fullMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result="$(grep -i -A 1 ^$MAC ./oui.txt)";
if [ "$result" ]; then
echo -e "\tПроизводитель: `echo "$result" | cut -f 3`"
else
echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
fi
is5ghz=`echo "$line" | cut -d ',' -f 4 | grep -i -E '36|40|44|48|52|56|60|64|100|104|108|112|116|120|124|128|132|136|140'`
if [ "$is5ghz" ]; then
echo -e "\t\033[0;31mРаботает на 5 ГГц!\e[0m"
fi
printonce="\tИнформация о подключённых клиентах:"
while read -r line2 ; do
clientsMAC=`echo $line2 | grep -E "$fullMAC"`
if [ "$clientsMAC" ]; then
if [ "$printonce" ]; then
echo -e $printonce
printonce=''
fi
echo -e "\t\t\033[0;32m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";
if [ "$result2" ]; then
echo -e "\t\t\tПроизводитель: `echo "$result2" | cut -f 3`"
ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte|MEIZU'`
warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
if [ "$ismobile" ]; then
echo -e "\t\t\t\033[0;33mВероятно, это мобильное устройство\e[0m"
fi
if [ "$warning" ]; then
echo -e "\t\t\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"
fi
resultshort="$(grep -i ^$MAC2 ./oui.txt)";
vendor=`echo "$resultshort" | cut -f 3`
if [ "$vendor" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
fi
fi
else
echo -e "\t\t\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
fi
probed=`echo $line2 | cut -d ',' -f 7`
if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
echo -e "\t\t\tИскал сети: $probed"
fi
fi
done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){5} ([A-Z0-9:]{17})|(not associated)' $FILE)
done < <(grep -E '([A-Za-z0-9._: @\(\)\\=\[\{\}\"%;-]+,){14}' $FILE)
echo -e "\033[0;36m\033[1mИнформация о неподключённых клиентах:\e[0m"
while read -r line2 ; do
clientsMAC=`echo $line2 | cut -d ',' -f 1`
echo -e "\033[0;31m" `echo $clientsMAC | cut -d ',' -f 1` "\e[0m"
MAC2=`echo "$clientsMAC" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
result2="$(grep -i -A 1 ^$MAC2 ./oui.txt)";
if [ "$result2" ]; then
echo -e "\tПроизводитель: `echo "$result2" | cut -f 3`"
ismobile=`echo $result2 | grep -i -E 'Olivetti|Sony|Mobile|Apple|Samsung|HUAWEI|Motorola|TCT|LG|Ragentek|Lenovo|Shenzhen|Intel|Xiaomi|zte'`
warning=`echo $result2 | grep -i -E 'ALFA|Intel'`
if [ "$ismobile" ]; then
echo -e "\t\033[0;33mВероятно, это мобильное устройство\e[0m"
fi
if [ "$warning" ]; then
echo -e "\t\033[0;31;5;7mУстройство может поддерживать режим монитора\e[0m"
fi
resultshort="$(grep -i ^$MAC2 ./oui.txt)";
vendor=`echo "$resultshort" | cut -f 3`
if [ "$vendor" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
fi
fi
else
echo -e "\tПроизводитель: \e[3mИнформация не найдена в базе данных.\e[0m"
fi
probed=`echo $line2 | cut -d ',' -f 7`
if [ "`echo $probed | grep -E [A-Za-z0-9_\\-]+`" ]; then
echo -e "\tИскал сети: $probed"
fi
done < <(grep -E '(not associated)' $FILE)
Запускать так:
bash findcameras.sh /ПУТЬ/ДО/ФАЙЛА.csv
Например:
bash findcameras.sh /tmp/test-01.csv
Если присмотреться, то можно увидеть, что это скрипт wfw.sh из статьи про поиск всех Wi-Fi устройств, но в него добавлена проверка по списку производителей камер наблюдения.
Для этого скрипта, так же как и для предыдущего, требуются оба файла oui.txt и vendors.txt.
Скрипт fc.sh может найти кандидаты в камеры, а скрипт findcameras.sh может ничего не показать, или вывести намного меньше устройств, предполагаемых как камеры. Дело в том, что первый скрипт проверят всё — и Точки Доступа и клиентов, а второй скрипт проверяет только клиентов. Если «камера» является ТД, то скорее всего это не камера. Такое у меня случилось с устройствами «Tenda Technology Co.», потому что эта фирма производит и роутеры, и камеры.
Фирма Hand Held Products Inc делает как тепловизоры, так и разные устройства считывания штрихкодов и т. п. — это может быть любым из этих устройств, т. к. это ТД магазина.

Вместо подключения по Wi-Fi, камеры могут использовать проводную сеть — такие камеры не попадут в список.
Поиск камер наблюдения в локальной сети
Этот способ работает только в сетях, где можно получить MAC-адреса других устройств, то есть только в локальных сетях. Сканировать Интернет бесполезно. Примерами локальных сетей, к которым мы часто подключаемся, — это публичные Точки Доступа Wi-Fi в аэропортах, гостиницах, ресторанах, общественном транспорте и т. п.).
Создайте файл fcl.sh:
gedit fcl.sh
Скопируйте в него следующий код:
#!/bin/bash
if [[ "$1" ]]; then
NET="$1"
else
echo 'Укажите подсеть для поиска камер наблюдения';
echo 'Пример запуска:';
echo -e "\tbash ./fcl.sh 192.168.0.0/24";
exit
fi
while read -r line ; do
newline=$line
found=0
if [ "$newline" ]; then
MAC2=`echo "$newline" | sed 's/ //g' | sed 's/-//g' | sed 's/://g' | cut -c1-6`
resultshort="$(grep -i ^$MAC2 ./oui.txt)";
vendor=`echo "$resultshort" | cut -f 3`
if [ "$vendor" ]; then
result3=${vendor%,*}
iscamera=''
iscamera=`cat vendors.txt | grep -i "$result3"`
if [ "$iscamera" ]; then
echo
echo $newline
echo $vendor
echo -e "\t\t\t\033[7mВероятно, это камера или другое устройство слежения\e[0m"
echo
found=1
fi
fi
fi
done < <(sudo nmap -n -sn -PR -PS -PA -PU -T5 $NET | grep -E -o '[A-Z0-9:]{17}')
if [ $found -eq 1 ]; then
sudo nmap -A -T4 $NET
fi
Запускать так (для Nmap требуются повышенные привилегии):
sudo bash fcl.sh СЕТЬ/МАСКА
Например:
sudo bash ./fcl.sh 192.168.0.0/24
Если будут найдены устройства с MAC-адресами производителей камер наблюдения, то они будут показаны. Если ничего не показано, значит ничего не найдено.
Если будет найдена хотя бы одна камера, то будет запущено ещё одно сканирование Nmap — более агрессивное, с полным выводом результатов, чтобы вы могли увидеть IP устройства, которое может оказаться камерой, а также с попыткой определения версии ОС и служб — это может помочь с выявлением камеры.
Заключение
Качество сканирования в первую очередь определяется качеством списка производителей камер наблюдения — если вы знаете списки получше, то пишите в комментариях, я доработаю инструкцию и скрипты.
Если у вас есть примеры MAC-адресов камер наблюдения произведённых «ноунеймами» и «Unbranded», то тоже пишите их в комментариях — их можно добавить в скрипты для дополнительной проверки по ним.
Обратите внимание, что в файле vendors.sh я уже добавляю несколько вендоров. Я нашёл их следующим образом:
- Сделал захват данных в местах, где видны камеры (магазины, банки и т.п.)
- После этого проанализировал вывод скрипта findcameras.sh, изучая производителей устройств, выбирая те из них, которые совершенно незнакомые.
- Гуглил фразы вида «НАЙДЕННЫЙ ВЕНДОР CCTV», «НАЙДЕННЫЙ ВЕНДОР CAMERA» и т. п. Удобно, кстати, гуглить по картинкам. Если находятся камеры данного производителя, значит добавляем к известным вендорам производителей камер наблюдения. Производители, в названии которых встречаются слова «mobile», «communications» и «link» это обычно мобильные телефоны и сетевые карты. Понятное дело, что гуглить надо клиентов, а не Точки Доступа.