3 ポイント 投稿者 GN⁺ 2023-07-03 | 1件のコメント | WhatsAppで共有
  • D-Link DCS-8000LH を mydlink アプリ・クラウドサービスに登録せず、ローカルで管理する IP カメラに変えるための作業記録とツール集
  • 元のファームウェア 2.01.03 は mydlink アプリ・クラウドサービスに縛られており、ローカルの NIPCA 互換 HTTP API や HTTP・HTTPS・RTSP のビデオストリーミングを提供しない
  • 達成された主な機能は、Bluetooth LE を通じたネットワーク・管理者パスワード設定、HTTP・HTTPS MPEG-TS 直接ストリーミング、直接 RTSP ストリーミング、LED・nightmode などの設定をサポートする NIPCA API 構成
  • 含まれる dcs8000lh-configure.py は、カメララベルの PIN Code と Bluetooth MAC アドレスを使って WiFi 検索、WiFi 設定、ネットワーク情報出力、システム情報ダンプ、カメラコマンド実行、telnetd・lighttpd・RTSP 有効化、unsigned firmware 許可を行う
  • 完全な変更にはカメラ内部のファイルシステムの 1 つを修正する必要があり、誤るとカメラが文鎮化するリスクがある
  • テストと開発の対象はファームウェア v2.01.03 と v2.02.02 で、最終的な全手順は v2.02.02 でのみテストされている
  • 必要な環境は、Bluetooth コントローラのある Linux PC、Python 3、bluepy、WPA2-PSK WiFi とパスワード、squashfs-toolsmksquashfs、バックアップ用の tftp サーバーまたはファイルアップロードを受け付ける Web サーバー
  • 修正後の HTTP・HTTPS ストリーミングは https://カメラIP/video/mpegts.cgi または https://カメラIP/video/flv.cgi にアクセスし、認証には admin ユーザーとカメラの PIN Code パスワードを使う
  • RTSP だけが必要なら、ファームウェアを修正せずに Bluetooth の --rtsp オプションで元の D-Link ファームウェア上の永続的な RTSP アクセスを有効化できる
  • userdata パーティションは mydlink クラウドツールに使われ、サンプルのファームウェア更新ではこのパーティションだけを変更し、D-Link カメラ OS の kernel と rootfs はそのまま残す
  • バックアップは変更前に必要で、pib パーティションにはモデル番号、ハードウェアリビジョン、MAC アドレス、機能ビット、秘密鍵、PIN Code、パスワードのような、そのカメラ固有のデータが入っている
  • ローカル Web サーバーは Web GUI ではなく、認証が必要な直接カメラ管理 API を提供し、NIPCA API によってカメラ設定の大半を curl のようなコマンドラインツールから制御できる

1件のコメント

 
GN⁺ 2023-07-03
Hacker Newsのコメント
  • ほぼすべてのIPカメラやUSBカメラでも、遅延を抑えつつカメラが対応する最高品質で同じような構成にできる
    興味があれば、こうした設定を手早くまとめるか、必要な設定ファイルを含むリポジトリとして公開することもできる

    • 私もスマートプラグで同じことをやりたい
      市販のスマートプラグで、どこからでも制御するためにクラウドへ接続しない製品が見つからない。どこからでも制御したいわけではなく、ただ自分のLAN内だけで制御したいだけ
      修正: 少なくとも amazon.in では見つけられなかった
      https://www.amazon.in/s?k=smart+plugs
    • 少し助言がほしい
      名前を検索しても出てこない中国製のIPカメラをもらって、屋外の防犯カメラとして使っている。カメラはSDカードに継続的に保存し、有料クラウドオプションは使っていない。KP WIFICAMアプリでインターネット越しにライブ映像も見られる
      SDカードに保存された直近数日分の録画もメニューから見たりダウンロードしたりできるが、10分単位に分割されているため、1日分だけ取ろうとしてもほぼ100個のファイルを手動でダウンロードしなければならない
      これらのクリップをSDカードからノートPCへ自動ダウンロードしたり、もっと簡単にしたりするにはどうすればいいだろう? モバイルアプリはどうやって録画一覧を取得し、ファイルをダウンロードしているのだろう?
      Agent-DVRを動かしてみたところ、ONVIF形式でカメラのフィードを見つけた。なので、モバイルアプリもこのプロトコルを使っている気がするが、https://stackoverflow.com/questions/29159422/get-data-from-l...、数日かけて開発環境を整えて自分でコードを書くことなく、Linuxで使えるようなツールはあるだろうか?
    • 「ほぼすべてのIPカメラ」と言うには、メーカーやハードウェアによってかなりばらばらな気がする
    • 複数のカメラをPCで管理し、スマホアプリでリモートアクセスできる管理アプリケーションを売れば成り立ちそう
      配偶者がカメラごとにアプリを4つも使っているが、それぞれ信じられないような問題があり、SDカードは小さすぎるうえ、購入前に十分説明されていなかったクラウドストレージ料金が法外に高い
      買い替えることもできるが、安い製品を買うと、すでに4回繰り返した失敗をまたやる可能性が高い
      ソフトウェアがカメラの6倍高くても、十分買う価値がある
      低賃金の国の誰かがカメラの壁を見ながら順番に監視してくれるサービスもあればいいのにと思う。西側の警備会社が月に数千ドルも請求している、まさにあのサービスだが、ほとんど強盗みたいなものだ
  • IPカメラのような重要な製品で、メーカーのクラウドなしにローカルで使える消費者向け製品がまったくないのは本当にいら立たしい
    Raspberry Piで構築できるのはわかっているが、モーター制御や高性能な動体検知通知のような一般製品の便利機能もほしい
    そういうものを全部自分で開発しなくていい製品なら、今の消費者向け製品価格の2〜3倍でも簡単に払える

    • ローカルでクラウドなしに使って制御できるPoEカメラはかなり多い
      私はローカルNASでSynology Surveillance Stationを動かしてReoLinkカメラを制御している。カメラの回転もできるし、動体検知もある
      ローカルIPカメラではさらに高度な用途も多い。昨日Synologyの「ディープラーニング」NVRを買ったが、ローカルのDomarカメラで、標準機能のズーム・パン・チルトに加えて人物検知、顔認識、ナンバープレート認識などもサポートしている
    • 選択肢は本当に多い。ONVIFをサポートするカメラを探せば、検索と制御のためのある程度標準化されたプロトコルに対応している
      私のカメラは全部安価なAliexpress製で、インターネットに接続させたことは一度もなく、怪しいメーカー製アプリもインストールしていない。Blue Irisが動く機器だけを同じVLANに置き、カメラ関連の作業をすべて処理している
      PTZ、非常に細かい動体検知、通知、外部アプリ実行トリガーまで対応していて、好きなように連携できる
      総コストは、安価なPoE IPカメラが1台あたり約30ドル、Blue Irisが80ドルほど
    • Apple HomeKit製品は、ほとんどがこういう使い方ができそう
    • 数日前の関連スレッド: https://news.ycombinator.com/item?id=36447024
    • ローカル専用、またはクラウドが任意の汎用IP KVM/DVRソリューションは多い
      ただ、小売の消費者向けチャネルで大々的にマーケティングされていないだけ
  • クラウドが嫌いな人や、もっともな理由で2層構成を望む人にはこれを勧める
    Wyze Cam V2を複数台と一緒に2年間使ってきたが、V3ほど低照度感度が良くない点を除けば、かなり堅牢で高速な構成で、特に問題なく動いている
    https://github.com/EliasKotlyar/Xiaomi-Dafang-Hacks

    • Wyze V2にDafang-hacksを入れた構成は以前はとても安定していたが、今はすでに販売終了しており、V3で確実に動くという検証もない
      Dafang-hacksのように信頼できる構成で使える20〜30ドル台の低価格カメラをしばらく探しているが、まだ納得できる代替品は見つかっていない
    • 録画は何を使っている?
      クラウドカメラの代替を考えたことはあるが、それでも録画、通知、オフサイトストレージは必要だ
      今どき、こういう構成では何が最適だろう? 自宅でZoneminderを動かして、SyncthingでVPSにオフサイト保存するような形だろうか?
  • このチュートリアルはものすごく徹底している
    Bjornがこの手法を開発し、非常に丁寧に文書化するために費やした時間は相当なものだったように思える

  • かっこよくてハッカー精神があるのは理解するけど、用途の深刻さを考えると「なぜ?」としか思えない
    泥棒が物を盗むのを防ぐ唯一の手段を、出来の悪いD-Linkカメラのファームウェア改造に頼りたいのだろうか? Amcrest、Dahua、TP-LinkのまともなIPカメラを数百ドルで買ってPoEで接続すれば、少なくとも誰が盗んだのか特定できる可能性は出てくる
    適切な場所に高品質のカメラを置かなければ、結局は物が盗まれていくぼやけた写真が1枚残るだけになる。経験上そうだ

    • Nestカメラが忍術を身につけていない限り、泥棒が何かを盗むのを防ぎはしない
      カメラは空間を監視し、最良の場合でも悪事を働く人物を法廷で使える程度の詳細さで録画する装置だ。品質が十分で事件をきちんと記録できているなら、機能面で改造したD-LinkとNestカメラの間に大きな違いはない
    • ZoneminderやFrigateのようなものとうまく動くAmcrestカメラ製品を知っている?
  • D-Linkも複数のカメラでサービス終了を進めていて、これはクラウドサービスを止めてカメラを役立たずにし、新製品を買わせるということだ
    DCS-5030Lを改造しようとしているところだ。すでにSPI EPROMファームウェアをダンプしてあり、セキュアブートをパッチするためにGhidraでu-bootを逆アセンブルした

  • 写真ではIDは一部黒塗りされていたが、その下のバーコードは隠されていなかった
    その値が単なるエンコード形式なのかは分からないが、留意すべきだ

    • エンコードされた版ではあるようだけど、スクリーンショットを撮ってBinary Eyeに共有してもスキャンはできなかった
      [1] https://github.com/markusfisch/BinaryEye
    • 失礼に聞こえるつもりはないけど、画像を見たのだろうか? そのQRコードは、QRのように見えない円形オーバーレイではっきりぼかされている
  • 純粋にローカルネットワークアクセスだけを使うネットワークカメラでは、ONVIF対応製品を選んでNetcam Studioにつないできた
    https://www.netcamstudio.com/
    そのうえでカメラIPの外部ネットワークアクセスを遮断すれば、メーカーのサーバーに連絡するのを防げる

    • Netcam StudioはLinuxをサポートしておらず、さらに重要なことにクローズドソースなので、そのプログラムの外部アクセスも遮断しなければならない
  • 普通のUSBカメラを使って、ustreamerでMJPEGをHTTP配信している
    意外とうまく動くが、処理と保存は全部自前で実装しなければならない。得られるのはスクリーンショットURLとストリーミングURLだけだ

  • このアイデアは気に入った
    うちのIPカメラは全部FTPで自分のサーバーに上げて、サーバーが即座にGoogle Driveへアップロードする。完璧に動いて安上がりだが、それでもインターネットにつながった中国製カメラであることに変わりはない
    こういうふうに変換できるカメラ一覧はあるだろうか?

    • スキャナー用にFTP→GDrive プロキシデーモンを自作した
      もともとはUSB→GDriveが欲しかったのだが、BrotherスキャナーはUSBでは画面上のスキャン設定の上書きを許さず、FTPでは許すことが分かった
      この転送には何を使っている?
    • アイデアはあるが、少し作業が必要だ
      カメラ専用のネットワークを別に作り、たとえば別のWi-Fiルーターを置く
      カメラが映像を送っているサーバーIPを突き止める
      PCやRaspberry Piをこのカメラ用Wi-FiルーターのWANポートにつなぐ
      先ほど見つけたカメラサーバーIPをすべてこのPCやRaspberry Piに割り当てる
      そうすればカメラからサーバーへ向かう全トラフィックを受け取れるはずで、その後は好きなように処理できる
    • Xiaomiカメラとホワイトラベル製品の大半はだいたい動く
      Yiカメラにカスタムファームウェアをサイドロードして、安定したWi-Fiカメラとして使っている。そのVLANにはインターネットアクセスが一切ない
    • 構成をもう少し詳しく説明してもらえる?
      こういうことをやろうとして長いこと苦労してきた。調べてもFTP/SFTP対応が抜けているものばかりで、LTEで写真をメールアドレスに送ろうとするようなものばかりだ
      目的は単純な気象カメラだ。1分ごとに画像を1枚アップロードできればそれでいい。2000年代の古いウェブカメラのような単純なものだ
      rPi3とLogitechカメラで未解決の問題にぶつかってしまい、嫌になってほとんど諦めていた