
CameradarはRTSPビデオ監視カメラに侵入します
Cameradar は、許可されたターゲット上の RTSP エンドポイントをスキャンし、辞書攻撃を使用してその認証情報とルートをブルートフォースします。
/live.sdp)の探索を試みます。

Docker をインストールし、以下を実行します。
docker run --rm -t --net=host ullaakut/cameradar --targets <target>
例:
docker run --rm -t --net=host ullaakut/cameradar --targets 192.168.100.0/24
これにより、対象サブネット上のポート 554、5554、8554 がスキャンされ、RTSP ストリームの列挙が試みられます。すべてのオプションについては、設定リファレンス を参照してください。
ターゲットは CIDR、IP、IP 範囲、またはホスト名で指定できます。
172.16.100.0/24172.16.100.10localhost172.16.100.10-20カスタム辞書を使用するには、辞書をマウントして両方のフラグを指定します。
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
Docker が利用できない場合やローカルビルドが必要な場合は、こちらを使用してください。
go install github.com/Ullaakut/cameradar/v6/cmd/cameradar@latestcameradar バイナリが $GOPATH/bin に配置されます。利用可能なフラグについては、設定リファレンス を参照してください。
以下の手順は、Android で動作する Termux のセットアップ手順をまとめたものです。Google Play ではなく、F-Droid または公式 Termux サイトから Termux 117 を使用してください。
Termux に必要なパッケージをインストールします。
pkg update
pkg install mc wget git nmap proot-distro
Alpine をインストールしてログインします。
proot-distro install alpine
proot-distro login alpine
apk add wget git go gcc clang musl-dev make
モジュールパスを作成し、リポジトリをクローンします。
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
辞書をコピーし、バイナリを実行します。
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
<target> は、テストを許可されている IP、範囲、ホスト、またはサブネットに置き換えてください。
デフォルトのポートは 554、5554、8554、http、322、8322 です。
ポートを指定しない場合、Cameradar はこれらを使用します。
カスタムポートをスキャンする例:
docker run --rm -t --net=host \
ullaakut/cameradar \
--ports "18554,19000-19010" \
--targets localhost
デフォルトの辞書は、独自のルートファイルや認証情報ファイルに置き換えることができます。
リポジトリには 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 ストリームにアクセスするには、rtsps:// URL を使用します。
SSL_CERT_FILE に CA 証明書(自己署名の場合はサーバー証明書)を指定します。ローカルバイナリでの例:
SSL_CERT_FILE=/path/to/ca-or-server.crt \
cameradar \
--targets localhost \
--ports 8322 \
--skip-scan \
--custom-routes routes.txt \
--custom-credentials credentials.json
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
SSL_CERT_FILE を使用したくない場合は、実行環境のシステムトラストストアに CA 証明書を追加してください。
--skip-scan で探索をスキップRTSP エンドポイントをすでに把握している場合、探索をスキップして各ターゲットとポートをストリーム候補として扱うことができます。このモードでは探索は実行されず、制限されたネットワークや既知のインベントリに対して攻撃を行いたい場合に便利です。
スキップスキャンの意味:
例:
docker run --rm -t --net=host \
ullaakut/cameradar \
--skip-scan \
--ports "554,8554" \
--targets 192.168.1.10
この例では、Cameradar は 192.168.1.10 のポート 554 および 8554 に対して辞書攻撃を試みます。
--scanner で探索スキャナーを選択Cameradar は 2 つの探索バックエンドをサポートしています。
nmap (デフォルト)masscanより信頼性の高い RTSP 探索が必要な場合は nmap を使用します。サービス識別を実行し、RTSP を他のオープンポートとより適切に区別できます。
非常に大規模なネットワークをスキャンする場合は masscan を使用します。一般的に高速で大規模スキャンに効率的ですが、サービス探索は行いません。
docker run --rm -t --net=host \
ullaakut/cameradar \
--scanner masscan \
--ports "554,8554" \
--targets 192.168.1.0/24
[!WARNING]
--scan-speedはnmapスキャナーにのみ適用されます。
--framecheck で誤検出を削減一部のカメラは RTSP の動作に完全に準拠しておらず、ルートや認証情報が間違っている場合でも 200 OK を返すことがあります。
--framecheck を有効にすると、Cameradar は再生を試みて RTP パケットを待つことで、各 200 OK を検証します。
フレームチェックの意味:
200 OK を受け入れます。--framecheck はデフォルトで無効です。これは RTSP リクエストを追加し、攻撃時間を大幅に増加させる可能性があるためです。
Docker での例:
docker run --rm -t --net=host \
ullaakut/cameradar \
--targets 192.168.1.0/24 \
--ports "554,8554" \
--framecheck
ローカルバイナリと環境変数での例:
FRAMECHECK=true \
cameradar \
--targets 192.168.1.0/24 \
--ports "554,8554"
Cameradar はペネトレーションテストツールです。 自分が所有している、またはテストする明示的な許可を得ているネットワークとデバイスのみをスキャンしてください。 許可されていないシステムやストリームにアクセスするためにこのツールを使用しないでください。 不明な場合は、スキャンを中止し、スキャン前に書面による承認を得てください。
Cameradar は結果を読みやすいターミナル UI で表示します。
発見内容はコンソールにログ出力されます。
レポートには、発見されたホスト、識別されたデバイスモデル、有効なルートまたは認証情報が含まれます。
--output フラグでパスを指定すると、Cameradar は発見されたストリームを含む M3U プレイリストも書き出します。
VLC Media Player を使用してストリームに接続します。
rtsp://username:password@address:port/route
セキュアな RTSP エンドポイントの場合は、以下を使用します。
rtsps://username:password@address:port/route
ファイルには IP、ホスト名、IP 範囲、サブネットを含めることができます。 エントリは改行で区切ります。 例:
0.0.0.0
localhost
192.17.0.0/16
192.168.1.140-255
192.168.2-3.0-255
--skip-scan を使用すると、Cameradar は各エントリを明示的な IP アドレスに展開してからターゲットリストを構築します。
完全な CLI および環境変数リファレンスは 設定リファレンス で管理されています。
サポートされているすべてのフラグ、デフォルト値、受け入れ可能な値、環境変数のマッピングが含まれています。
リポジトリのルートで次のコマンドを実行します。
docker build . -t cameradar
生成されるイメージの名前は cameradar です。
go install github.com/Ullaakut/cameradar/v6/cmd/cameradar@latestcameradar バイナリが $GOPATH/bin/cameradar に配置されます。
トラブルシューティング & FAQ を参照してください。
自分のマシンで cameradar を実行し、デフォルトポートをスキャンする
docker run --rm -t --net=host ullaakut/cameradar --targets localhost
入力ファイルを使用し、ポート 8554 でログを有効にして cameradar を実行する
docker run --rm -t --net=host -v /tmp:/tmp ullaakut/cameradar --targets /tmp/test.txt --ports 8554
カスタム辞書を使用してサブネット上で cameradar を実行し、ポート 554、5554、8554、322、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
masscan 探索で cameradar を実行する
docker run --rm -t --net=host ullaakut/cameradar --scanner masscan --targets 192.168.0.0/24 --ports 554,8554
Copyright 2026 Ullaakut
ここに、本ソフトウェアおよび関連文書ファイル(以下「ソフトウェア」)の複製物を入手するすべての人に対し、ソフトウェアを無制限に扱うことを許可します。これには、ソフトウェアの複製、変更、結合、出版、配布、サブライセンス、および/または販売の権利、およびソフトウェアを提供された者にこれらを許可することを含みますが、これに限定されません。
上記の著作権表示およびこの許可表示は、ソフトウェアのすべての複製または実質的な部分に含まれるものとします。
ソフトウェアは「現状のまま」提供され、明示的か黙示的かを問わず、いかなる種類の保証もありません。これには、商品性、特定目的への適合性、および非侵害の保証が含まれますが、これに限定されません。いかなる場合も、著作者または著作権者は、契約、不法行為、その他の行為の態様を問わず、ソフトウェアまたはソフトウェアの使用やその他の取引に起因または関連するいかなる請求、損害、その他の責任も負わないものとします。