Перейти к содержанию

ihvkzoaunybmgbbufg

Участники форума
  • Постов

    1
  • Зарегистрирован

  • Посещение

Оборудование

  • Кинетик
    Giga KN-1011

Посетители профиля

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

Достижения ihvkzoaunybmgbbufg

Новичок

Новичок (1/5)

0

Репутация

  1. Ваша заботливая поддержка отправила регистрироваться на форуме и строчить обращение, поэтому я здесь. В ручке /rci/show/ip/hotspot/host версии OS 4.2.1 не хватает policy в ответе. Других способов получить policy для host нет, в /rci/show/running-config тоже. Необходимо добавить. Возражения не принимаю, там обязано быть это поле, и нет его только по чьему-то недосмотру А на полдник держите сниппет для аутентификации на Python #!/usr/bin/env python3 import argparse import hashlib import netifaces import requests def parse_args() -> argparse.Namespace: parser = argparse.ArgumentParser() parser.add_argument("--login", "-l", default="login") parser.add_argument("--password", "-p", default="password") parser.add_argument("--policy", "-t", action=argparse.BooleanOptionalAction) return parser.parse_args() def hash_password(login: str, password: str, challenge: str, realm: str) -> str: md5 = hashlib.md5(f"{login}:{realm}:{password}".encode()).hexdigest() return hashlib.sha256(f"{challenge}{md5}".encode()).hexdigest() def authenticate(url: str, login: str, password: str) -> requests.Session: session = requests.Session() response = session.get(url) # returns 401; do not call raise_for_status challenge = response.headers["X-NDM-Challenge"] realm = response.headers["X-NDM-Realm"] password_hash = hash_password(login, password, challenge, realm) response = session.post(url, json={"login": login, "password": password_hash}) response.raise_for_status() return session def main() -> None: args = parse_args() gateway, interface = netifaces.gateways()["default"][netifaces.AF_INET] with open(f"/sys/class/net/{interface}/address", "rt") as f: mac = f.read().strip() session = authenticate(f"http://{gateway}/auth", args.login, args.password) response = session.post( f"http://{gateway}/rci/ip/hotspot/host", json={"mac": mac, "policy": "Policy0" if args.policy else False}, ) response.raise_for_status() print( ( status[0] if len(status := response.json().get("policy", {}).get("status", [])) > 0 else {} ).get("message", "gateway sent no message"), ) if __name__ == "__main__": main()
×
×
  • Создать...

Важная информация

На этом сайте используются файлы cookie. Нажимая "Я принимаю" или продолжая просмотр сайта, вы разрешаете их использование: Политика конфиденциальности.