Dahua NetSDK Ошибка 30: NET_LOGIN_ERROR_LOCKED — Учетная запись заблокирована
Отказ в доступе ко всем службам устройства:
- Функция логина возвращает
0с кодом ошибки30(NET_LOGIN_ERROR_LOCKED). - В структуре
stOut.nErrorвозвращается код5(Account is locked). - Блокировка длится от 1 до 30 минут даже при последующем вводе абсолютно правильного пароля.
Код NET_LOGIN_ERROR_LOCKED (30) означает срабатывание встроенной системы защиты от перебора паролей (Brute-force Protection / Account Lockout). Учетная запись временно заморожена из-за превышения лимита ошибочных попыток авторизации.
1. Методы снятия блокировки
- Таймаут автоматической разблокировки: Дождитесь истечения времени блокировки (по умолчанию 300 секунд / 5 минут) без отправки каких-либо запросов к устройству. Каждая новая попытка сбросит таймер ожидания заново.
- Сброс через Web-интерфейс под другим аккаунтом: Войдите под учетной записью с правами суперадминистратора и разблокируйте оператора.
- Аппаратная перезагрузка: Перезапуск питания камеры/NVR сбрасывает оперативную память счетчиков блокировок (в большинстве версий прошивок).
2. Поиск источника неверных авторизаций в локальной сети
Если блокировка происходит постоянно, проверьте сетевой трафик:
# Поиск хостов, спамящих запросами на порт 37777 камеры (на Linux шлюзе)
tcpdump -nn -i eth0 dst host 192.168.1.108 and dst port 37777Частые виновники постоянных блокировок:
- Забытые старые службы мониторинга (Zabbix, Home Assistant, старый инстанс VMS).
- Подключенные мобильные клиенты DMSS/iDMSS со старым сохраненным паролем.
- Скрипты синхронизации времени по старому паролю.
3. Настройка политики блокировки в Web-интерфейсе
Для тестовых стендов перейдите в System -> Safety -> Account Lockout и увеличьте лимит попыток (с 5 до 10-20) либо уменьшите время блокировки до 1 минуты.
Частые вопросы (FAQ)
Поможет ли ввод правильного пароля, если аккаунт уже заблокирован (ошибка 30)?
Нет, пока действует таймер блокировки, устройство отклоняет любые пакеты авторизации, даже с корректным паролем.
Блокируется ли только логин или весь IP-адрес клиента?
В зависимости от настроек безопасности прошивки может блокироваться как конкретное имя пользователя (User Lock), так и IP-адрес источника (IP Lock / ошибка 31).
Как в коде приложения обработать ошибку 30?
При получении ошибки 30 приостановите поток повторных попыток на 5 минут (через std::this_thread::sleep_for), чтобы дать устройству снять бан.
Сбрасывается ли блокировка при программном ребуте устройства через SDK?
Если сессия администратора уже была открыта, вызов CLIENT_Reset / CLIENT_Reboot перезагрузит устройство и сбросит таймер блокировки.