Фото-превью с сайта вендора
Фото-превью с сайта вендора

Как можно догадаться, на этот раз речь пойдёт об очередном поделии китайского IoT-гения, а именно о цифровой камере для третьего "глаза" микроскопа (можно ли назвать камеру для микроскопа IoT-ом?). Не знаю, может у них там сверху наказ такой: в каждую камеру по бэкдору (и чем больше, тем лучше), но это в самом деле треш.

За какую камеру не возьмись: будь она для видеонаблюдения, либо, как в моём случае, для вывода картинки с микроскопа на монитор/смартфон - по факту вы получаете не только девайс, выполняющий свои основные функции, но и как "премиум-фичу" - следящее (конечно же, за Вами) устройство. Об одном таком девайсе я и хочу рассказать.

Зачем

На рабочих проектах, да и в качестве хобби, я люблю покопаться в кишочках различных железок. И, как правило, я преследую при этом следующие цели:

  • найти недокументированный функционал и выяснить, можно ли его эксплутировать

  • предостеречь текущих, либо будущих владельцев этих девайсов от небезопасного использования

  • выработать с вендором исправления безопасности (и исправить баги по возможности). Бывает, конечно, что вендор не идёт на контакт, тогда приходится публиковать инструкцию по ручному закрытию таких дыр = теоретической эксплуатации нехорошими дядями)

Так вот, ковыряние железок часто подразумевает подпаивание к различным мелким дорожкам/ножкам компонентов, отладочным площадкам, а с моим орлиным зрением без микроскопа там зачастую делать нечего. Поэтому я и купил себе в домашнюю лабу (по-факту, филиал работы на лоджии) микроскоп.

Хорошо, конечно, да маловато будет - фотку платы для красивого отчёта/статейки не сделаешь, а искать объективом телефона "дырочку" окуляра можно, но презентабельность не та. Так я и купил камеру.

О самой камере

Модель устройства: SCAM4K8MPB (да, с неймингом вообще топ! Надеюсь, "S" здесь не про Security). Выглядит буквально так, как на превьюшках на сайте:

Фото с сайта touptekphotonics.com
Фото с сайта touptekphotonics.com
Фото с сайта touptekphotonics.com
Фото с сайта touptekphotonics.com

Имеет массивный алюминиевый корпус, внутри сенсор Sony IMX585. Получать изображение с камеры можно через совершенно разные интерфейсы:

  • через USB WiFi-свисток и подключение к создаваемой камерой WiFi-точке доступа (софт от вендора умеет находить камеру и получать с неё изображение)

  • через USB WiFi-свисток и подключение к вашей точке доступа (точно также, через софт вендора)

  • через USB-Video (по-факту, подключается камера как устройство)

  • HDMI (через него к тому же становится доступным внутренний GUI камеры, где можно тыкать мышкой)

Пример изображения с камеры
Пример изображения с камеры

В моём случае, последние два варианта получались совсем неудобными - кабели USB и HDMI толстые, жёсткие, да и стол с микроскопом далековато от ПК, поэтому я рассматривал только работу по WiFi. Тем более, есть возможность использовать в том числе и Android-приложение.

Софт для моей камеры, на самом деле, та ещё тема: судя по всему, есть какой-то основной вендор и он предоставляет не только услугу по вкорячиваю вашего софта в камеру, но и собирает красивый инсталлятор с названием и логотипом заказчика. Как говорится, найдите 10 отличий:

В первом случае SDK (поставлялся на диске к моей камере) называется MiiCamSdk, а во втором (скачал с официального сайта touptek) - ToupCamSdk. По начинке - один в один.

Разобравшись с тем, как подключить камеру к моей домашней сети я запустил nmap. Не спрашивайте, зачем - просто проф-деформация. Надежда была на то, что "ну уж на камере для микроскопа-то не должно быть никакого лишнего торчащего говна порта". И не обнаружив бы лишних портов я работал бы себе спокойно и бед не знал. Но...

Как всегда

... и на что я там надеялся, наивный. Уже само наличие в списке открытых портов (на пару с какими-то сервисным барахлом) скучающего без конекта из поднебеснойtelnet на 23/TCP шепчет: "ты пользуйся, братишка, пользуйся, но и не забывай с вендором делиться".

Открытые порты
Открытые порты

И проблема ведь не только в том, что китайский брат иногда будет посматривать в твою камеру как ты паяешь. Но и запросто может быть, что пароль от телнета твоей "слишком умной" камеры уже давно во всех словарях для брута лежит. Какая-нибудь малварь залогинится к тебе и начнёт майнить бетховены. Оно тебе надо?

Вскрывать?

"Порт надо закрыть", решил я, и... ничего не сделал, побоялся. На самом деле, камера ведь не дешёвая: вскрывать, паяться к ней - запачкаю/поцарапаю матрицу, и всё - деньги на ветер. Неохота было во всё это лезть. Но и оставлять всё так как есть нельзя. Что же делать?

Приоткрою, посмотрю одним глазком

В итоге, я решился. Детали корпуса камеры держатся на винтах, которые откручиваются шестигранником, поэтому, подумал я, можно будет аккуратно вскрыть, без необратимых последствий. А там уж решу: легко ли будет подобраться к необходимым контактам и что-либо сделать.

После того, как все четыре винта были откручены, я без труда снял верхнюю крышку с надписями. А там меня ожидала следующая картина:

Под крышкой
Под крышкой

Видим две платы, соединённых шлейфом. На одной из плат виднеется камень от SigmaStar. Странно, но флешку с прошивкой сходу обнаружить не удалось, либо она мелкая и BGA. Что хорошо, голого сенсора тоже не видно, так что запачкать его с порога не выйдет.

SoC SSD268G
SoC SSD268G

Приятным удивлением для меня оказались три штырька интерфейса UART, которые располагались прямо у снятой крышки - выглядело всё так, что паять ничего не придётся (по крайней мере, если с UART можно взаимодействовать).

Найди UART
Найди UART

Работать с открытой крышкой (как у дозиметров, по-взрослому) мне не хотелось, поэтому я не придумал ничего умнее, кроме как просверлить в алюминиевой крышке отверстие и протащить через него три провода.

К сожалению, высота конектора (чёрного пластика) у обычного dupont-провода оказалась слишком большой, пришлось раскурочивать и снимать пластик, гнуть металлический коннектор и закрывать термоусадкой. Зато, как по мне, получилось отлично:

Без комментариев:)
Без комментариев:)
Как по мне, красиво!
Как по мне, красиво!
Внешний вид почти не испорчен
Внешний вид почти не испорчен

Дальше я протащил провода, собрал корпус, подключился к UART через USB-TTL и включил камеру. Сразу же после запуска, по традиции, я усиленно принялся жать Enter в надежде попасть в меню наподобие U-Boot. Так и получилось.

Консоль U-Boot
Консоль U-Boot

Программные внутренности

Что делать дальше я плюс-минус уже представлял:

  • получить список разделов, которые доступны системе через вызов команды mtdparts

    Список разделов nand
    Список разделов nand
  • через команду чтения nand read.e прочитать в оперативную память содержимое интересующего меня раздела

    Согласно докам, read.e читает nand с учётом кодов коррекции ошибок ECC
    Согласно докам, read.e читает nand с учётом кодов коррекции ошибок ECC
  • через команду чтения оперативной памяти md.b сдампить содержимое памяти по UART в файл

    Первые 0x100 байт rootfs
    Первые 0x100 байт rootfs

Адрес оперативной памяти у SigmaStar SSD268G (основной SoC), как говорит Github - 0x22000000. Итого, у меня получился следующий скрипт для получения дампа:

Исходный код дампера
import binascii
import serial
import re
from tqdm import tqdm


MTD_PAT = re.compile(r'^(?: +)?(\d+): (\w+)(?: +)?(0x[0-9a-f]+)\t(0x[0-9a-f]+)\t0$')
HEX_PAT = re.compile(r'[0-9a-f]{8}: ((?:[0-9a-f]{2} ){16}).+')


def exec_cmd(s, cmd):
    # print('executing %s' % cmd.decode())
    s.write(b'%s\n' % cmd)
    lines = []

    line = ''
    while True:
        b = s.read()

        if b == b'\n':
            line = line.rstrip('\r\n')
            lines.append(line)
            line = ''
            continue
        elif b == b'' and line.startswith('SigmaStar # '):
            break

        line += b.decode()

    return lines


def read_mtdparts(s):
    lines = exec_cmd(s, b'mtdparts')
    lines = lines[4:]

    res = []
    for line in lines:
        m = MTD_PAT.match(line)

        if m is None:
            continue

        idx, name, size, offset = m.groups()
        size = int(size, 16)
        offset = int(offset, 16)

        res.append((name, offset, size))

    return res


def parse_hex_dump(lines):
    buf = bytearray()

    for line in lines:
        m = HEX_PAT.match(line)

        if m is None:
            continue

        bb = binascii.unhexlify(m.group(1).replace(' ', ''))
        buf.extend(bb)

    return bytes(buf)


def read_nand_offset(w, s, offset, size, pb):
    bs = min(size, 0x1000)
    exec_cmd(s, b'nand read.e 0x22000000 0x%x 0x%x' % (offset, size))

    off = 0

    while size > 0:
        size -= bs
        lines = exec_cmd(s, b'md.b 0x%x 0x%x' % (0x22000000 + off, bs))
        off += bs

        buf = parse_hex_dump(lines)
        w.write(buf)
        pb.update(bs)


def read_part(s, part):
    name, offset, size = part

    with open('%s.bin' % name, 'wb') as w:
        off = 0

        with tqdm(total=size) as pb:
            while size > 0:
                bs = min(size, 0x100000)
                size -= bs
                read_nand_offset(w, s, offset+off, bs, pb)
                off += bs


def main():
    s = serial.Serial('COM29', 115200, timeout=0.001)

    parts = read_mtdparts(s)
    for part in parts:
        read_part(s, part)

    s.close()


if __name__ == '__main__':
    main()

Наиболее интересным для старта мне показался раздел rootfs. На нём, как я предполагал, должен храниться файл /etc/shadow (/etc/passwd) прочитав который я смогу извлечь хэш и отправить его на брут в hashcat.

Уже не помню за сколько часов, но дамп файловой системы я получил, извлёк тамошний squashfs и отправил в брутилку лежавший там хэш:

root:$1$5I0IijLd$hE844yBxBeWIy1CvW3elD/:::::::

Пароль оказался простой: wheatfa, и с ним я смог успешно подключиться к камере.

На удивление, очень часто встречаемый в IoT-устройствах заменитель bash - busybox оказался ничуть не урезанным: в нём была доступна нужная мне команда ftpd. Через неё я в итоге и сдампил всё содержимое камеры целиком.

shell
shell
Поднимаю FTPD
Поднимаю FTPD

Конец?

По идее, на этом можно было бы и закончить этот мини-проект, но я за каким-то чёртом взялся смотреть что же там на других открытых TCP/UDP портах делается. И, опять же, лучше бы не брался - только настроение портить...

  • во-первых, у протокола передачи видео-потока RTSP, который поддерживается камерой, напрочь отсутствует аутентификация (а может и не нужна она на микроскоп-камере?)

  • во-вторых, открытые сервисные порты, у которых, по-видимому, одно предназначение - быть бэкдорными (получение изображений, запись видео), правда без возможностей удалённого исполнения команд

Полный список открытых портов
Полный список открытых портов

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

  1. Сделать дамп раздела rootfs с помощью команды:

    nanddump -o -b -f /tmp/mtd8.bin /dev/mtd8
  1. Скопировать файл /tmp/mtd8.bin на ПК с линуксом (WSL пойдёт) и распаковать его командой:

    unsquashfs ./mtd8.bin
  1. Сгенерировать новый безопасный пароль (не используйте хэш из примера) и заменить старый хэш на новый:

    openssl passwd -1 -salt 12345678 12345678
    $1$12345678$f8QoJuo0DpBRfQSD0vglc1
    vi ./squashfs-root/etc/shadow
  1. Посмотреть информацию о дампе командой file mtd8.bin, записать blocksize и тип сжатия (compressed)

    file mtd8.bin
    mtd8.bin: Squashfs filesystem, little endian, version 4.0, xz compressed, 1944296 bytes, 420 inodes, blocksize: 131072 bytes, created: Sat Dec  2 06:33:06 2023
  1. Упаковать файловую систему в новый файл:

    mksquashfs squashfs-root/ rootfs_new.bin -noappend -always-use-fragments -comp xz -b 131072
  2. Выровнять rootfs_new.bin до 8 байт FF-байтами

  3. Зайти в U-Boot и стереть rootfs командой nand erase.part rootfs

  4. Записать (удобнее всего скриптом) в оперативную память содержимое файла rootfs_new.bin с помощью команд mw.q 0x22000000 aabbccddaabbccdd.
    У меня данный процесс занял где-то час - писать по 8 байт дело небыстрое.

  5. Записать содержимое оперативной памяти в nand командой nand write.e 0x22000000 rootfs

Код обратного дампера
import binascii
import struct
import time
import serial
import re
from tqdm import tqdm


MTD_PAT = re.compile(r'^(?: +)?(\d+): (\w+)(?: +)?(0x[0-9a-f]+)\t(0x[0-9a-f]+)\t0$')
HEX_PAT = re.compile(r'[0-9a-f]{8}: ((?:[0-9a-f]{2} ){16}).+')


def exec_cmd(s, cmd):
    print('executing %s' % cmd.decode())
    s.write(b'%s\n' % cmd)
    lines = []

    line = ''
    while True:
        b = s.read()

        if b == b'\n':
            line = line.rstrip('\r\n')
            lines.append(line)
            line = ''
            continue
        elif b == b'' and line.startswith('SigmaStar # '):
            break

        try:
            line += b.decode()
        except:
            pass

    return lines


def write_part(s, name, buf):
    exec_cmd(s, b'nand erase.part %s' % name.encode())

    lb = len(buf)

    with tqdm(total=lb) as pb:
        for i in range(lb // 8):
            val = struct.unpack_from('<Q', buf, i * 8)[0]
            xx = b'mw.q 0x%x %016x' % (0x22000000 + i * 8, val)
            exec_cmd(s, xx)
            pb.update(8)

    exec_cmd(s, b'nand write.e 0x22000000 %s 0x%x' % (name.encode(), lb))


def main():
    s = serial.Serial('COM29', 115200, timeout=0.001)

    with open('mtd8_new.bin', 'rb') as f:
        buf = f.read()
        write_part(s, 'rootfs', buf)

    s.close()


if __name__ == '__main__':
    main()

Всё вышеописанное можно было бы сделать быстрее, будь на устройстве утилита стирания флеша. Простой записью в /dev/mtd8 файла с FF-ками я также просто ушатал раздел.

Заключение

В общем, как-то так. Разгорячившись, я расковырял ещё одну свою камеру (видеонаблюдения) от TP-Link, и всё, что в итоге сделал - выбросил её в мусорку. Ситуация там примерно та же. Но об этом уже как-нибудь в другой раз.

Комментарии (28)


  1. aborouhin
    09.01.2025 19:10

    Честно говоря, не понял, на чём строится предположение, что это бэкдор, а не раздолбайство разработчиков прошивки? Довольно странно делать бэкдор в виде открытого порта для устройства, которое в 99% случаев напрямую торчать в интернет с реальным IP не будет... Я бы тут всё же бритву Хэнлона применил :)


    1. DrMefistO Автор
      09.01.2025 19:10

      Другие порты, не рассмотренные детально в статье как довесок к telnet-у. Да и я смотрю на тенденцию. К тому же, пароль от telnet нигде не фигурирует в документации.


      1. aborouhin
        09.01.2025 19:10

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

        Меня такие "бэкдоры", наоборот, радуют. Вот есть, скажем, аляповатые пластиковые уличные камеры видеонаблюдения, которые работают через жутко кривое, набитое рекламой своего китайского облака и, наверняка, реальными бэкдорами и трекерами всего, чего только можно, приложение V380. Но сами камеры на удивление неплохи по качеству картинки и фичам (PTZ, подсветка, всё достойно) - по ходу, производитель зарабатывает на том самом облаке, а на железках демпингует. Но если в эту камеру вставить SD-карту, на которую положить магический INI-файлик, то неожиданно открывается стандартный ONVIF и RTSP, после чего про ужасное приложение можно забыть и завернуть камеры в свой VLAN, где им соединяться разрешено только с одним локальным сервером. В документации про это, естественно, ни слова. Но разве плохо? Хорошо же :) Наверняка там можно и шелл получить, кстати, только вот с учётом наличия более простого пути - не особо и нужно.


        1. Lordbander
          09.01.2025 19:10

          А можно содержимое .ini файлика? Не слышал про такое, и моя китайщина дома, очень плохо дружит с Onvif. Я умудрился конечно ее в свою сетку через iSpy без пароля подрубить, но что-то в ней не то.


          1. aborouhin
            09.01.2025 19:10

            Вот первоисточник, там два варианта по ходу обсуждения упоминаются, есть смысл попробовать оба. Но это именно для камер под облако V380, у которых никаких других интерфейсов, кроме родного мобильного приложения и облака, от рождения нет. Если у Вас камера просто "очень плохо дружит с ONVIF" (но в принципе оно есть) - вероятно, у Вас не оно.


      1. N1X
        09.01.2025 19:10

        Просто у сигмы есть SDK, под их соки, и это монструозная куча разношерстных исходников и всяких разных бинарей, слепленных в кучу малопонятными скриптами сборки, которое включает в себя IP, USB камеры, всякие наколенные утилитки для тюнинга видеотракта и т.д. Скорее всего из всего этого слепили проект, особо не заморачиваясь отключением ненужного...

        В частности для работы с параметрами ISP у них есть сервер, который можно запустить (причем он сидит довольно глубоко в поставляемых в виде бинарей либах). Я уж не помню на каком порту он висит, но вполне возможно - на одном из этих...

        Самое забавное кстати, если говорить про раздолбайство - в том SDK что я видел вся работа с IP ядрами видеотракта в SoC происходит через закрытые модули, при этом .ko скомпилен с отладочной информацией и гидра разворачивает это в неплохо читаемый исходник. Так что я поддерживаю цитату выше, про раздолбайство...


    1. enamchuk
      09.01.2025 19:10

      которое в 99% случаев напрямую торчать в интернет с реальным IP не будет

      А потом вам провайдер подключает IPv6 и ваше устройство (возможно) начинает торчать голым портом в Интернет.


      1. aborouhin
        09.01.2025 19:10

        Если у Вас провайдер сам без Вашего ведома что-то подключает, а потом, видимо, ещё и Ваш роутер сам перенастраивает, отключая NAT, - бэкдоры в китайских камерах точно не главная проблема в Вашей ИБ :)

        А вообще железки ограниченного функционала, типа IP-камер, должны сидеть в своём VLAN'е с доступом строго по белому списку. Потому как иначе они и без реального IP сами куда хотят соединятся и что захотят, сольют. О чём тут уже неоднократно правильно написали.


    1. muxa_ru
      09.01.2025 19:10

      Честно говоря, не понял, на чём строится предположение, что это бэкдор, а не раздолбайство разработчиков прошивки?

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


  1. SlavikF
    09.01.2025 19:10

    Насколько я разбираюсь в защите, открытый порт - это конечно нехорошо, но это не самая большая проблема, потому что вероятность того, что камера будет торчать в Интернет всеми портами - небольшая.

    Более серьёзная проблема - это если камера сама начнёт подключаться к серверам в Интернете и сливать туда что-нибудь...

    Обе эти проблемы легко решаются, если поместить их в VLAN, изолированную от Интернета.


    1. DrMefistO Автор
      09.01.2025 19:10

      Да, это само собой.


    1. itshnick88
      09.01.2025 19:10

      Или, если я не ошибаюсь, просто не натить это устройство на роутере


  1. JBFW
    09.01.2025 19:10

    Да господи, обычная китайская камера. И скорее всего - она как раз и полезет подключаться во внешний мир, к своему облаку.
    А вот через это облако (пугающим загробным голосом) она-то и может перепрошиться на вариант с бекдорами!

    Это не баг, это фича - с какого-нибудь родного приложения подключаться и смотреть, через то облако.

    Отрубите ей выход в интернет, и всё.


  1. Naves
    09.01.2025 19:10

    Выглядит как прошивка от обычной камеры видеонаблюдения, просто вместо камерного объектива штуцер на внешний объектив микроскопа. И HDMI вместо Ethernet.

    Обычно у китайских камер в комплекте идет QR-код для подключения к камере через китайское облако с дружбой и опекой от старшего брата.

    А открытый RTSP это даже хорошо и удобно. Сохранили ссылку для VLC и больше никакого софта от братьев не нужно.


  1. N1X
    09.01.2025 19:10

    1. Записать (удобнее всего скриптом) в оперативную память содержимое файла rootfs_new.bin с помощью команд mw.q 0x22000000 aabbccddaabbccdd.
      У меня данный процесс занял где-то час - писать по 8 байт дело небыстрое.

    Там же слот для карточки памяти виднеется, в UBoot должна быть команда fatload, которая умеет с fat32 раздела лить в ОЗУ, и tftp клиент обычно тоже, если его специально не вырубили


    1. DrMefistO Автор
      09.01.2025 19:10

      Да, просто привычка так лить, в условиях ограничений которые мне обычно попадались


    1. JBFW
      09.01.2025 19:10

      ну так оно всякое бывает, вплоть до удаления оттуда всего кроме md.
      Не пробовали через md память по 256 байт считывать? )


  1. Dynasaur
    09.01.2025 19:10

    а почему разъём для снятия видеосигнала кабелем (USB VIDEO) стандарта USB 3, а через Wi-Fi свисток - USB 2.0? скорость первого значительно выше. Почему через свисток хватает меньшей скорости, в этом есть какой-то смысл? А нельзя свисток воткнуть в USB VIDEO? Ведь оба порта одновременно не будут задействованы, зачем их вообще, два?


    1. DrMefistO Автор
      09.01.2025 19:10

      Он попросту не маунтит девайсы типа свистка на других портах - судя по всему, это захардкожено.


  1. daggert
    09.01.2025 19:10

    Вы это называете бэкдором? Пф...

    Берем пачку камер Tiandy/Besder или т.п. и втыкаем их в сеть. Каждую настраиваем. Каждой даем пароль, айпи. После чего подключаем регистратор одной из этих фирм в сеть и нажимаем кнопку "автонастройка" - и все ваши камеры сами подключаются в рег, все камеры берут свои пароли (им отдает рег), все камеры можно настраивать через этот регистратор.


    1. DrMefistO Автор
      09.01.2025 19:10

      Ну я же не претендую на обнаружение "самого бэкдорного устройства":)

      Мне кажется, тут нет предела "совершенству".


    1. Lordbander
      09.01.2025 19:10

      Ну так они(камеры) все это делают по внутреннему протоколу вендора. Сделано для ламеров, для настройки аля plug&play. Что в этом плохого? Ну украл ты камеру, она без пароля заведется на другом регистраторе этого вендора. А вот к ONVIF, без хард-ресета ты ее не подключишь. А тут уже, как вендор замудрил - кнопочкой, или запросом через сайт, по серийнику камеры.

      Вопрос можно ли через регистратор "мастер"-пароль камеры махнуть???


      1. daggert
        09.01.2025 19:10

        Плохо то что оно перенастраивает айпи у камеры, даже если на ней был установлен пароль. Плохо что я могу с рега все параметры настроить по картинке. Мне не к чему даже пользователя на камере сбрасывать - бери и пользуйся.

        Это и проблема для меня потому что пользователь может поставить устройство новое и я всю настроенную сесть потеряю. Проблема эта и в том что камеру есть смысл воровать - даже сбрасывать не надо.

        Это дыра. Дыреень… тот-же хайвоч такого себе не позволяет - камеры видет, но без пароля ты их не добавишь.


        1. Lordbander
          09.01.2025 19:10

          Это и проблема для меня потому что пользователь может поставить устройство новое и я всю настроенную сесть потеряю. Проблема эта и в том что камеру есть смысл воровать - даже сбрасывать не надо.

          Ну да, прикольно )) пришел с мини региком, воткнулся вместо камеры и все подцепил в системе на себя. Если честно, то в такое даже не верится.


        1. LF69ssop
          09.01.2025 19:10

          Вам плохо, другим хорошо. Дуализм мироустройства.

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


    1. JBFW
      09.01.2025 19:10

      отключить на регистраторе DHCP сервер, и пусть ваш сервер (роутер?) адреса раздаст. А потом на нём же их и прибить гвоздями к маку камер.

      Это как раз не проблема, если вы - хозяин сети.


  1. Vest
    09.01.2025 19:10

    Мне было бы интересно почитать про TP-Link. Я как-то рассматривал их камеры для подключения к Synology.

    Но так и не определился, поэтому подзабил пока.


  1. mbait
    09.01.2025 19:10

    Надеюсь, "S" здесь не про Security

    Нет, "S" в SCAM - про scam =)