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@latest现在 cameradar 二进制文件位于你的 $GOPATH/bin 中。
可用标志请参阅 配置参考。
以下步骤总结了适用于 Android 的 Termux 设置方法。 请使用 F-Droid 或 Termux 官方网站上的 Termux 117,而不是 Google Play 版本。
在 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:// URL 访问 RTSPS 流。
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 支持两种发现后端:
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@latest现在 cameradar 二进制文件位于 $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
在子网上使用自定义字典、端口 554、5554、8554、322 和 8322 运行 cameradar
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
版权所有 2026 Ullaakut
特此免费授予任何获得本软件及相关文档文件(“软件”)副本的人,在不受限制的情况下处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许获得本软件的人这样做,但须遵守以下条件:
上述版权声明和本许可声明应包含在本软件的所有副本或实质性部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对因本软件或本软件的使用或其他交易而导致的任何索赔、损害或其他责任负责,无论是合同行为、侵权行为还是其他行为。