This commit is contained in:
Petro1990 2026-03-13 20:20:35 +01:00
parent 1e4522adaf
commit 783c73ff30
1 changed files with 0 additions and 55 deletions

View File

@ -1,55 +0,0 @@
#!/bin/sh
# rci_auth_test.sh
# Скрипт для тестирования авторизации Keenetic RCI через X-NDM-Challenge
USER="${1:-admin}"
PASS="${2:-password}"
IP="${3:-192.168.1.1}"
echo "=== Тест авторизации Keenetic RCI ($IP) ==="
# 1. Получаем challenge и realm
echo "Шаг 1: Получение challenge..."
resp_headers=$(curl -s -i "http://$IP/rci/system/hostname" | tr -d '\r')
realm=$(echo "$resp_headers" | grep -i "X-NDM-Realm" | cut -d' ' -f2)
challenge=$(echo "$resp_headers" | grep -i "X-NDM-Challenge" | cut -d' ' -f2)
if [ -z "$challenge" ]; then
echo "Ошибка: Не удалось получить challenge. Проверьте IP или доступность RCI."
exit 1
fi
echo " Realm: $realm"
echo " Challenge: $challenge"
# 2. Считаем MD5(login:realm:password)
# -n в echo важно, чтобы не было лишнего перевода строки
h1=$(echo -n "$USER:$realm:$PASS" | md5sum | cut -d' ' -f1)
echo "Шаг 2: MD5(login:realm:password) = $h1"
# 3. Считаем SHA256(challenge + h1)
# challenge — это бинарная строка? Нет, обычно это hex или string.
# В Keenetic challenge (salt) конкатенируется с MD5 хешем (в виде строки).
hash=$(echo -n "$challenge$h1" | sha256sum | cut -d' ' -f1)
echo "Шаг 3: SHA256(challenge + MD5) = $hash"
# 4. Пробуем авторизоваться
echo "Шаг 4: Попытка запроса с хешем..."
# Мы передаем HASH вместо пароля в Basic Auth
result=$(curl -s -u "$USER:$hash" "http://$IP/rci/system/hostname")
if echo "$result" | grep -q "hostname"; then
echo "БИНГО! Авторизация через Basic Auth (Password=Hash) успешна."
echo "Ответ: $result"
else
echo "Метод 1 (Basic Auth) не удался. Пробуем Метод 2 (X-NDM-Auth-Hash)..."
result=$(curl -s -H "X-NDM-Auth-Hash: $hash" "http://$IP/rci/system/hostname")
if echo "$result" | grep -q "hostname"; then
echo "БИНГО! Авторизация через заголовок X-NDM-Auth-Hash успешна."
echo "Ответ: $result"
else
echo "Упс... Оба метода не удались."
echo "Полный ответ:"
echo "$result"
fi
fi