Slide 1

Slide 1 text

『fSpy』を⽤いた写真の分析 第17回 初⼼者のためのセキュリティ勉強会(オンライン開催) meow ( @meow_noisy) 2022/03/28(⽉)

Slide 2

Slide 2 text

発表概要 u 「SNSにアップロードされた写真の分析がしたい」という動機で、 u カメラパラメータ推定ツール『fSpy』の紹介 u 『fSpy』を⽤いた⼨法計測、カメラの位置、⾓度の推定⽅法を説明 u ケーススタディを通して、写真の公開⾏為がプライバシー上の リスクの増加につながることを説明

Slide 3

Slide 3 text

おしながき u 写真の分析について u 『fSpy』について u 本来の使い⽅ u 写真の分析への応⽤ u ケーススタディ1: ⼨法計測 u ケーススタディ2: カメラ位置の推定 u まとめ

Slide 4

Slide 4 text

写真の分析について

Slide 5

Slide 5 text

背景 u 先⽉、SNSにアップロードされた写真の分析をしていた時、 分析できそうだけどどうすればいいかわからないことが あった u カメラまでの距離の推定 u カメラを⾒上げた時の⾓度の推定 u 以前紹介した透視図法的アプローチの応⽤で実現できそう 被写体 カメラ 何メートル? 何度?

Slide 6

Slide 6 text

透視図法的アプローチ u ラムダ情報局さんの紹介していた⽅法 u 【特定厨】写真から⾃宅を特定する⽅法 u https://www.youtube.com/watch?v=9ZgEEkUPL00 u 写真内から消失点を⾒つけ、(パースのついた)正⽅形のグ リッドを作図することで、撮影⽅向を求める 画像はYoutubeの動画から

Slide 7

Slide 7 text

透視図法的アプローチの応⽤可能性 u 動画の例ではグリッドを地⾯に対して引いていたが ⾼さに対してもいけそう u グリッドが引ければ⽐率からものの⾼さを推定できそう u ただ、写真からの作図はさすがに⾯倒 u ツールがないかを探す u → 写真分析⽤途のものは無かったが、Blenderのプラグインを 裏技的に使うことで実現可能であることがわかった

Slide 8

Slide 8 text

『fSpy』について 本来の使い⽅、写真の分析への応⽤

Slide 9

Slide 9 text

『fSpy』とは u もともとは3DCGソフト『Blender』のプラグイン u https://fspy.io/ u 1枚の写真からカメラパラメータ(カメラ位置、⾓度)を推定する u 本来の⽬的は写真と同様の3D空間を⽣成することを⽀援すること u スタンドアロンになったアプリも提供されている u https://github.com/stuffmatic/fSpy/releases/tag/v1.0.3 u マルチプラットフォーム: Windows / Mac / Linux

Slide 10

Slide 10 text

『fSpy』の(本来の)使い⽅ u 空間的には平⾏(だけどパースのついた)関係にある線の ペアを⼈が指定する(消失点を与える) u 右下図だと⾚線ペア、薄緑ペアが空間的に平⾏関係にある u なるべく⾓度がついている平⾏関係を⾒つけた⽅が良いとのこと u それだけでカメラパラメータが計算される 注: 線が薄いので別途強調した線を引いている

Slide 11

Slide 11 text

『fSpy』の(本来の)使い⽅ u 正⽅形グリッドをプロットすることができる u うまく空間を捉えられているかの確認ができる xyグリッド yzグリッド xzグリッド

Slide 12

Slide 12 text

『fSpy』の(本来の)使い⽅ u ⽣成したカメラパラメータの情報を.fspyファイルに保存 u Blenderで.fspy ファイルをインポートすると、そのカメラ パラメータのカメラオブジェクトを空間上に⽣成可能

Slide 13

Slide 13 text

『fSpy』で推定したカメラパラメータを 写真の分析に活かす 1. グリッドをものさし代わりにできる u 正確なサイズはわからないが、基準からの相対サイズ⽐率を 知ることができる u パースが付いた状態なのでかなり使い勝⼿が良い 2. 撮影位置の特定(後述) u オブジェクトの相対位置、カメラの⾓度を計算 階段の幅は 階段の⾼さ 約1.5つ分

Slide 14

Slide 14 text

オブジェクトとの相対距離 u Camera positionの情報 u カメラとグリッドの中⼼からの距離となる u このときの数値はグリッドの個数になる u Blenderで空間を確認した⽅がわかりやすい fSpy上のグリッドの中⼼ fSpyの情報 (xがグリッド3.1つ分、 yがマイナス⽅向に7.94つ分... という意味) Blenderにおけるカメラの位置 Camera position の座標 に対応

Slide 15

Slide 15 text

カメラの⾓度 u Blenderで読み込むとカメラの⾓度がわかる u 各軸の⾓度を⾸の動きに例えて説明する u x: ⾸を前後に倒している⾓度 u 真下向いている時が0度。真正⾯が90度。真上が180度。 u y: ⾸を傾ける⾓度 u プラスだと右側に傾く。マイナスだと左側。 u z: ⾸を横に振る⾓度 u プラスの⾓度だと左に、マイナスの⾓度だと右。 u 先程の画像の例だと、26度⾒下げて、2度左に 傾けて、22度左に向けて撮影している

Slide 16

Slide 16 text

ケーススタディ1: ⼨法計測

Slide 17

Slide 17 text

お題 u 幕張メッセ(TGS2018)で取った写真 u ⼿前の男性の⾝⻑をチェス盤状の床のマスの⻑さからざっくり 計算してみる

Slide 18

Slide 18 text

床の1マスあたりの⻑さを図る u Google EarthのPro版(ネイティブ版)の定規機能を使う u 全部で11マスあるが22.35mなので1マスは2.03m程度

Slide 19

Slide 19 text

fSpyに補助線を与える u 今回はx(横⽅向;⾚⾊)とy(奥⾏き;緑⾊)を指定 u これだけでカメラパラメータが計算完了

Slide 20

Slide 20 text

xzグリッドをプロット u グリッドはなるべく床のマスと男性の関係がわかる場所ま で移動しておく

Slide 21

Slide 21 text

グリッドの数、⽐率から概算する u 床1マスはグリッド6.8つ分 u 男性はグリッド5.8つ分 u よって、男性の⾝⻑は = 5.8 / 6.8 * 2.03 ≒ 1.73 m 5.8つ 6.8つ(2.03m)

Slide 22

Slide 22 text

ケーススタディ2: カメラ位置の推定

Slide 23

Slide 23 text

お題 u とある建物から撮った札幌駅の⾵景 u この写真を元に撮影した時の情報を推定する 1. 撮影位置 2. カメラの⽅向 3. 部屋の階 時計も写っているので、どういう⽂脈で撮影したのか考えると⾯⽩いかもしれない

Slide 24

Slide 24 text

fSpyに補助線を与える u 今回はx軸(横⽅向)とz軸(⾼さ; ⻘⾊)の2つにしてみた

Slide 25

Slide 25 text

xzグリッドをプロット

Slide 26

Slide 26 text

現実におけるグリッドの⻑さを調査 u 3マスで22.91m

Slide 27

Slide 27 text

撮影位置の推定 u グリッドの中⼼から何個分離れているか u Camera positionを⾒る u グリッドの中⼼から-x軸⽅向に-5.8個分、 -y軸⽅向に-8.1個分 x y 中⼼

Slide 28

Slide 28 text

①撮影位置の推定 u 中⼼からy軸⽅向に2マス 進んだ場所を基準に逆算する u -x軸⽅向に-5.8個分、 -y軸⽅向に-10.1個分 の場所 x y

Slide 29

Slide 29 text

①撮影位置の推定 u 中⼼からy軸⽅向に2マス 進んだ場所を基準に逆算する u -x軸⽅向に-5.8個分、 -y軸⽅向に-10.1個分 の場所 u ホテルグレイスリー札幌 であるとわかる u ⼤体どのあたりの部屋かもわかる u ただし右図は衛星写真なので ⾒た⽬と2次元上の位置は異なる x y

Slide 30

Slide 30 text

②カメラの⽅向の推定 u Blenderでfspyのファイルをインポート u ⼤体10度くらい⾒下げて、右⽅向に17度くらい回転して撮影している ことがわかる

Slide 31

Slide 31 text

②カメラの⽅向の推定 u デジタル分度器で17度の⽅向をプロット u ホテル室内でこの⽅向で撮っていることがわかる https://www.ginifab.com/feeds/angle_measurement/ デジタル分度器→

Slide 32

Slide 32 text

③階の推定 u 消失点は⽬線(アイレベル)の⾼さにくることを利⽤ u ⼤体DAIMARUのロゴの下らへんにくる u (なお、⽬線はカメラの傾きに依存しない) ⽬線

Slide 33

Slide 33 text

③階の推定 u Google Earthで 標⾼を⽰すポリゴンオブジェクトを⽣成 u 標⾼45mでだいたい DAIMARUロゴの下まで浸かる

Slide 34

Slide 34 text

③階の推定 u ホテルグレイスリー札幌の オブジェクトの浸⽔ラインを確認 u ここが撮影した⾼さになる u → 12階から撮影している

Slide 35

Slide 35 text

まとめ u 『 fSpy 』を(半ば裏技的に)⽤いて、写真内の物体の ⼨法計測やカメラ位置の推定を⾏った u どの位置からどういう⾓度で撮影しているのかがわかる u ⾔うまでもないが、部屋の外から⾒える景⾊の写真を アップロードするのは危険

Slide 36

Slide 36 text

おまけ: 4⽉ OSINT問の出るCTF u 『**** *** ***** ***』(伏せた理由はお察しください) u 🇺🇦⽀援のクラウドファンディングが成⽴されたことにより 開催 u 参加⽅法は下記 u https://www.justgiving.com/fundraising/capturethetalent u 4/2から開催予定 u 無料(のはず)

Slide 37

Slide 37 text

参考⽂献(スライド内で⾔及したもの以外) u パースフリークス u http://www.persfreaks.jp/

Slide 38

Slide 38 text

ご清聴ありがとうございました @meow_noisy この発表以外にもSNSにおけるプライバシー保護のノウハウを多数紹介しています。 ご興味があれば、ユーザ名から⼀覧いただければと思います。 クリック