Qwatch(TS-WLCAM)ゲットしたから画像ぶっこ抜いてみた.

Qwatch

知り合いがQWatchっていうネットワークカメラ買ったんだけど,持ってる回線がプライベートIPしか割り当てられて無くて使えなかったので僕が一時的に借りてます. IO-DATAの提供するDDNSUPnPで外部に公開される仕組みになっていて,使い勝手は良さそうです. でもわざわざアプリとか認証付きのWebページで見てもつまらないので,データぶっこ抜いてみました.

Web画面

f:id:miettal:20131006034820p:plain

Web画面むっちゃしょぼくてウケた.

HTML

<img id="MJPEG_streaming" src="http://192.168.0.36:/snapshot.cgi" align="CENTER" width="640" height="480" _pageexpand_="8">

肝心のHTMLを見たところ,動画はimgタグだった... id属性から察するにMotion JPEGとなっているみたい. Motion JPEGはただ連続したJPEGになっているだけで,今回のようにHTMLにかかれている場合はMotion JPEG over HTTPでboundaryで区切られたマルチパートなHTTPボディになってる.

ソースコード gist6844563 普通にソケットでHTTPリクエスト飛ばしてるだけ. ぐぐったら,PythonでMotion JPEG over HTTPのプログラム書いてる人がいたんでそれを改良してみた.変更点はboundaryの判定がうまくいかなかったところの書き直し,Basic認証の追加,連続保存にしたところ.

実行

% python grab_mjpeg_frame.py 192.168.0.36 80 /snapshot.cgi IO-WLCAM password destfile.jpg
destfile00000000000000000000.jpg
destfile00000000000000000001.jpg
destfile00000000000000000002.jpg
destfile00000000000000000003.jpg
destfile00000000000000000004.jpg
destfile00000000000000000005.jpg
destfile00000000000000000006.jpg
destfile00000000000000000007.jpg
destfile00000000000000000008.jpg

割とうまくいった.