いまどきのカメラで遊ぼう #kernelvm

29
いまどきの カメラで遊ぼう KIM_TPDN http://kim.tpdn.org http://d.tpdn.kim http://金正日.jp

description

第2回カーネル/VM探検隊@つくば LT http://connpass.com/event/7293/

Transcript of いまどきのカメラで遊ぼう #kernelvm

Page 1: いまどきのカメラで遊ぼう #kernelvm

いまどきのカメラで遊ぼう KIM_TPDN

http://kim.tpdn.orghttp://d.tpdn.kimhttp://金正日.jp

Page 2: いまどきのカメラで遊ぼう #kernelvm

KIM_TPDN

クソ野郎

● 筑波● エナジー冷蔵庫● 男性用メイド服宅配テ

ロ● 北朝鮮● どう考えてもロクなこ

とやってない

http://金正日.jp

Page 3: いまどきのカメラで遊ぼう #kernelvm

このLTのレイヤー

高いたぶん

カーネルでもVMでもない

Page 4: いまどきのカメラで遊ぼう #kernelvm

Keyword

Page 5: いまどきのカメラで遊ぼう #kernelvm

(健全な)趣味:

写真撮影

Page 6: いまどきのカメラで遊ぼう #kernelvm

趣味:ペンタックス(?)

● 安い● いろいろと独自性強

い● 撮影に直接関わる以

外の機能を載せたがらない

Page 7: いまどきのカメラで遊ぼう #kernelvm

最近買ったカメラ

● 超望遠● 流行りの機能てんこ

盛り● 遊べる● 文明の利器● これであそぼう

Page 8: いまどきのカメラで遊ぼう #kernelvm

いまどきのカメラに

よく搭載されている機能

Page 9: いまどきのカメラで遊ぼう #kernelvm

無線接続でカメラ操作(スマホ連携)

Page 10: いまどきのカメラで遊ぼう #kernelvm

どうやってんの?

● カメラが無線LANのアクセスポイントになる● スマホでカメラに接続● 専用アプリ起動● あるプロトコルでTCPで通信してカメラを操作

専用アプリでなんてやってらんねーよな?

Page 11: いまどきのカメラで遊ぼう #kernelvm

自分で作ったソフトで操作したい

● 自動化万歳– スマホとかどうでもいいのでRasPiと組み合わせて

アレしたい● とんでもない機能を追加できる?● 漢のロマン

Page 12: いまどきのカメラで遊ぼう #kernelvm

できるの?

● ほとんどの場合プロトコル詳細は未公開– ただし変態ソニーは除く

(SDK配布してくれてる)

● 有名なカメラメーカー(というかキヤノン)に関してはみんなのおもちゃいろいろと魔改造されまくってる

● そうでないメーカーは自分でどうにかするしかない(???)

Page 13: いまどきのカメラで遊ぼう #kernelvm

実際にやってみよう?

Page 14: いまどきのカメラで遊ぼう #kernelvm

シプキャンにもっていった

Page 15: いまどきのカメラで遊ぼう #kernelvm

プロトコルを解析しよう

● カメラが無線LANのアクセスポイントになって通信する形になってる– ミツミ製の無線LANモジュールが搭載されている

● 公式Androidアプリの存在– こいつを解析するのはいまのところやめておく– (お察し)

● Wiresharkでパケット見れる

Page 16: いまどきのカメラで遊ぼう #kernelvm

何がいる?

● root化端末– busybox(ncを使うため)– tcpdump

● PC– adb– Wireshark

Page 17: いまどきのカメラで遊ぼう #kernelvm

こんな感じで解析

Page 18: いまどきのカメラで遊ぼう #kernelvm

こんな感じでやってた

● カメラとスマホの通信● →tcpdump● →nc● →localhostのどこかのポート● →adb forward● →Wireshark

Page 19: いまどきのカメラで遊ぼう #kernelvm

真面目に解析してたが…

● ぶっちゃけいってゼロからプロトコル作ってるなんてこと無くね?

● 絶対なんか規格あるだろ

Page 20: いまどきのカメラで遊ぼう #kernelvm

先生に頼ろう!

特にこいつは特にこいつは神神→→

Page 21: いまどきのカメラで遊ぼう #kernelvm

プロトコルについて

Page 22: いまどきのカメラで遊ぼう #kernelvm

プロトコル何だった?

PTP-IP

※偉大なるlibgphoto2に感謝

Page 23: いまどきのカメラで遊ぼう #kernelvm

PTP-IP

● カメラとPCなどをTCPで接続する規格– USB接続でお馴染み?のPTPからきてる– CIPAとかISOとかで規格化されてる– 個人だと仕様書見せてくれない()

● 各カメラメーカーが拡張可能– リモートで画面みながら撮影するコマンドとか

Page 24: いまどきのカメラで遊ぼう #kernelvm

http://www.gphoto.org/doc/ptpip.php

Page 25: いまどきのカメラで遊ぼう #kernelvm

規格があるなら誰か作ってるんじゃね?

● ないこともない(ググれば出る)– ただし、ほとんどがRICOH THETAを対象に– アレは(液晶がないからなのか)割と適当でも動くようになっ

てる感ある● Bluetoothヘッドホンとかを連想

● 一方で、普通のデジカメはチェック厳しめ– きっちりパラメータ見てる

● ミスると無慈悲なコネクション即切断– さらに処理中だと無慈悲なカメラの電源オフ\

● 独自機能にかかわるコマンドは自分で解析するしかない

Page 26: いまどきのカメラで遊ぼう #kernelvm

libgphoto使えば?

● 独自実装されたコマンドを実行できるものではない

● まず、僕のカメラ(Finepix S1)はポート番号がISOに沿ったものではない– gphotoではポート番号ソース決め打ち– 一応netcat通せばできないこともない…

Page 27: いまどきのカメラで遊ぼう #kernelvm

で?

Page 28: いまどきのカメラで遊ぼう #kernelvm

現状と今後

● 8月はいろいろいじってたが、それ以降はいじってない

● 気が向いたら、最終的には自作クライアントによって超望遠無線Webカメラ的なものをつくることを目標にして少しずつやっていく– もともとない機能をつけたい

Page 29: いまどきのカメラで遊ぼう #kernelvm

このプレゼンのファイルはこちら

http://主体の色鮮やかな太陽.金正日.同志.asia