Retour aux mises à jour
New releaseJul 26, 2026

cameradar v6.2.1

Cameradar s'infiltre dans les caméras de vidéosurveillance RTSP

Partager

Cameradar

Coverage Status

Outil d'accès aux flux RTSP

Cameradar scanne les points de terminaison RTSP sur des cibles autorisées et utilise des attaques par dictionnaire pour forcer leurs identifiants et routes.

Ce que fait Cameradar

  • Détecte les hôtes RTSP ouverts sur les cibles accessibles.
  • Détecte le modèle de l'appareil qui diffuse le flux RTSP.
  • Tente une découverte basée sur un dictionnaire des routes de flux (par exemple, /live.sdp).
  • Tente une découverte basée sur un dictionnaire des identifiants de caméra.
  • Produit un rapport des résultats.

Table des matières


Démarrage rapide avec Docker

Installez Docker et exécutez :

docker run --rm -t --net=host ullaakut/cameradar --targets <target>

Exemple :

docker run --rm -t --net=host ullaakut/cameradar --targets 192.168.100.0/24

Cela scanne les ports 554, 5554 et 8554 sur le sous-réseau cible. Il tente d'énumérer les flux RTSP. Pour toutes les options, consultez la Référence de configuration.

  • Les cibles peuvent être des CIDR, des IP, des plages d'IP ou un nom d'hôte.

    • Sous-réseau : 172.16.100.0/24
    • IP : 172.16.100.10
    • Hôte : localhost
    • Plage : 172.16.100.10-20
  • Pour utiliser des dictionnaires personnalisés, montez-les et passez les deux drapeaux :

    docker run --rm -t --net=host \
        -v /path/to/dictionaries:/tmp/dictionaries \
        ullaakut/cameradar \
        --custom-routes /tmp/dictionaries/my_routes \
        --custom-credentials /tmp/dictionaries/my_credentials.json \
        --targets 192.168.100.0/24
    

Installation du binaire

Utilisez cette option si Docker n'est pas disponible ou si vous voulez une compilation locale.

Dépendances

  • Go 1.25 ou ultérieur

Étapes

  1. go install github.com/Ullaakut/cameradar/v6/cmd/cameradar@latest

Le binaire cameradar se trouve maintenant dans votre $GOPATH/bin. Pour les drapeaux disponibles, consultez la Référence de configuration.

Installation sur Android (Termux)

Ces étapes résument une configuration Termux fonctionnelle pour Android. Utilisez Termux 117 depuis F-Droid ou le site officiel de Termux, pas Google Play.

1) Configurer Termux et Alpine

Installez les paquets requis dans Termux :

pkg update
pkg install mc wget git nmap proot-distro

Installez Alpine et connectez-vous :

proot-distro install alpine
proot-distro login alpine

2) Installer les outils de compilation dans Alpine

apk add wget git go gcc clang musl-dev make

3) Compiler Cameradar

Créez un chemin de module et clonez le dépôt :

mkdir -p go/pkg/mod/github.com/Ullaakut
cd go/pkg/mod/github.com/Ullaakut
git clone https://github.com/Ullaakut/cameradar.git
cd cameradar/cmd/cameradar
go install

4) Exécuter Cameradar

Copiez les dictionnaires et exécutez le binaire :

mkdir -p /tmp
cp -r ../../dictionaries /tmp/dictionaries
/go/bin/cameradar --targets=<target> --custom-credentials=/tmp/dictionaries/credentials.json --custom-routes=/tmp/dictionaries/routes --ui=plain --debug 

Remplacez <target> par une IP, une plage, un hôte ou un sous-réseau que vous êtes autorisé à tester.

Configuration

Les ports par défaut sont 554, 5554, 8554, http, 322 et 8322. Si vous ne spécifiez pas de ports, Cameradar les utilise.

Exemple de scan de ports personnalisés :

docker run --rm -t --net=host \
    ullaakut/cameradar \
    --ports "18554,19000-19010" \
    --targets localhost

Vous pouvez remplacer les dictionnaires par défaut par vos propres fichiers de routes et d'identifiants. Le dépôt fournit des dictionnaires de base dans le dossier dictionaries.

docker run --rm -t --net=host \
    -v /my/folder/with/dictionaries:/tmp/dictionaries \
    ullaakut/cameradar \
    --custom-routes /tmp/dictionaries/my_routes \
    --custom-credentials /tmp/dictionaries/my_credentials.json \
    --targets 172.19.124.0/24

RTSPS et certificats TLS

Utilisez des URL rtsps:// pour accéder aux flux RTSPS.

  • Si le certificat du flux est émis par une autorité de certification publique de confiance, aucune configuration supplémentaire n'est nécessaire.
  • Si le certificat du flux est auto-signé ou émis par une autorité de certification privée, le magasin de confiance du système d'exploitation peut le rejeter.
  • Dans ce cas, pointez SSL_CERT_FILE vers le certificat de l'autorité de certification (ou le certificat du serveur pour une configuration auto-signée) lors de l'exécution de Cameradar.

Exemple avec le binaire local :

SSL_CERT_FILE=/path/to/ca-or-server.crt \
        cameradar \
        --targets localhost \
        --ports 8322 \
        --skip-scan \
        --custom-routes routes.txt \
        --custom-credentials credentials.json

Exemple avec Docker :

docker run --rm -t --net=host \
        -e SSL_CERT_FILE=/tmp/certs/server.crt \
        -v /path/to/certs:/tmp/certs:ro \
        ullaakut/cameradar \
        --targets localhost \
        --ports 8322

Si vous préférez ne pas utiliser SSL_CERT_FILE, ajoutez votre certificat d'autorité de certification au magasin de confiance du système utilisé par votre environnement d'exécution.

Ignorer la découverte avec --skip-scan

Si vous connaissez déjà les points de terminaison RTSP, vous pouvez ignorer la découverte et traiter chaque cible et port comme un candidat de flux. Ce mode n'exécute pas de découverte et peut être utile sur des réseaux restreints ou lorsque vous voulez attaquer un inventaire connu.

Ignorer la découverte signifie :

  • Cameradar n'exécute pas de découverte et ne détecte pas les modèles d'appareils.
  • Les cibles sont résolues en adresses IP. Les noms d'hôte sont résolus via DNS.
  • Les blocs CIDR et les plages IPv4 sont étendus à chaque adresse de la plage.
  • Les grandes plages créent de nombreuses cibles, utilisez-les donc avec précaution.

Exemple :

docker run --rm -t --net=host \
    ullaakut/cameradar \
    --skip-scan \
    --ports "554,8554" \
    --targets 192.168.1.10

Dans cet exemple, Cameradar tente des attaques par dictionnaire contre les ports 554 et 8554 de 192.168.1.10.

Choisir le scanner de découverte avec --scanner

Cameradar prend en charge deux moteurs de découverte :

  • nmap (par défaut)
  • masscan

Utilisez nmap lorsque vous voulez une découverte RTSP plus fiable : il effectue une identification de service et peut mieux distinguer RTSP des autres ports ouverts.

Utilisez masscan lorsque vous scannez de très grands réseaux : il est généralement plus rapide et plus efficace à grande échelle, mais il ne fournit pas de découverte de service.

docker run --rm -t --net=host \
    ullaakut/cameradar \
    --scanner masscan \
    --ports "554,8554" \
    --targets 192.168.1.0/24

[!WARNING]
--scan-speed s'applique uniquement au scanner nmap.

Réduire les faux positifs avec --framecheck

Certaines caméras ne suivent pas complètement le comportement RTSP et peuvent renvoyer 200 OK même lorsque la route ou les identifiants sont incorrects.

Lorsque vous activez --framecheck, Cameradar valide chaque 200 OK en tentant une lecture et en attendant un paquet RTP.

Framecheck signifie :

  • Cameradar n'accepte 200 OK que lorsqu'il peut confirmer la génération d'images.
  • Si aucun paquet RTP n'arrive, Cameradar traite le résultat comme un faux positif et continue l'attaque.
  • Les vérifications de route restent compatibles avec les défis d'authentification observés lors du sondage.

--framecheck est désactivé par défaut car il ajoute des requêtes RTSP et peut augmenter considérablement la durée de l'attaque.

Exemple avec Docker :

docker run --rm -t --net=host \
        ullaakut/cameradar \
        --targets 192.168.1.0/24 \
        --ports "554,8554" \
        --framecheck

Exemple avec binaire local et variable d'environnement :

FRAMECHECK=true \
        cameradar \
        --targets 192.168.1.0/24 \
        --ports "554,8554"

Sécurité et utilisation responsable

Cameradar est un outil de test de pénétration. Ne scannez que les réseaux et appareils que vous possédez ou pour lesquels vous avez une autorisation explicite de tester. N'utilisez pas cet outil pour accéder à des systèmes ou flux non autorisés. En cas de doute, arrêtez-vous et obtenez une approbation écrite avant de scanner.

Sortie

Cameradar présente les résultats dans une interface utilisateur terminale lisible. Il enregistre les résultats dans la console. Le rapport inclut les hôtes découverts, les modèles d'appareils identifiés, et les routes ou identifiants valides. Si vous spécifiez un chemin pour le drapeau --output, Cameradar écrit également une playlist M3U avec les flux découverts.

Vérifier l'accès à la caméra

Utilisez VLC Media Player pour vous connecter à un flux :

rtsp://username:password@address:port/route

Pour les points de terminaison RTSP sécurisés, utilisez :

rtsps://username:password@address:port/route

Format du fichier d'entrée

Le fichier peut contenir des IP, des noms d'hôte, des plages d'IP et des sous-réseaux. Séparez les entrées par des sauts de ligne. Exemple :

0.0.0.0
localhost
192.17.0.0/16
192.168.1.140-255
192.168.2-3.0-255

Lorsque vous utilisez --skip-scan, Cameradar développe chaque entrée en adresses IP explicites avant de construire la liste des cibles.

Options en ligne de commande et variables d'environnement

La référence complète de l'interface en ligne de commande et des variables d'environnement est maintenue dans la Référence de configuration. Cela inclut tous les drapeaux supportés, les valeurs par défaut, les valeurs acceptées et le mappage des variables d'environnement.

Compiler et contribuer

Compilation Docker

Exécutez la commande suivante à la racine du dépôt :

docker build . -t cameradar

L'image résultante est nommée cameradar.

Compilation Go

  1. go install github.com/Ullaakut/cameradar/v6/cmd/cameradar@latest

Le binaire cameradar se trouve maintenant dans $GOPATH/bin/cameradar.

Questions fréquentes

Voir Dépannage et FAQ

Exemples

Exécuter cameradar sur votre propre machine pour scanner les ports par défaut

docker run --rm -t --net=host ullaakut/cameradar --targets localhost

Exécuter cameradar avec un fichier d'entrée, logs activés sur le port 8554

docker run --rm -t --net=host -v /tmp:/tmp ullaakut/cameradar --targets /tmp/test.txt --ports 8554

Exécuter cameradar sur un sous-réseau avec des dictionnaires personnalisés, sur les ports 554, 5554, 8554, 322 et 8322

docker run --rm -t --net=host -v /tmp:/tmp ullaakut/cameradar --targets 192.168.0.0/24 --custom-credentials "/tmp/dictionaries/credentials.json" --custom-routes "/tmp/dictionaries/routes" --ports 554,5554,8554

Exécuter cameradar avec la découverte masscan

docker run --rm -t --net=host ullaakut/cameradar --scanner masscan --targets 192.168.0.0/24 --ports 554,8554

Licence

Copyright 2026 Ullaakut

Permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, copier, modifier, fusionner, publier, distribuer, sous-licencier et/ou vendre des copies du Logiciel, et d'autoriser les personnes auxquelles le Logiciel est fourni à le faire, sous réserve des conditions suivantes :

L'avis de copyright ci-dessus et cet avis d'autorisation doivent être inclus dans toutes les copies ou parties substantielles du Logiciel.

LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE, D'ADAPTATION À UN USAGE PARTICULIER ET DE NON-CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU TITULAIRES DE COPYRIGHT NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU SON UTILISATION, OU D'AUTRES INTERACTIONS AVEC LE LOGICIEL.

Catégories