Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ドラレコのデータを解析してみた

SuzukIoT
August 11, 2021

 ドラレコのデータを解析してみた

ドラレコに記録されているGPSとGセンサーの値を調べてみた話です。今回はPioneerのVREC-DH300Dを購入してデータを解析した結果を共有します

SuzukIoT

August 11, 2021
Tweet

More Decks by SuzukIoT

Other Decks in Programming

Transcript

  1. 愛車遍歴 • MAZDA Atenza SEDAN • ディーゼル 2200cc • FF2WD

    6MT とある漫画でディス られてます
  2. これまで運転してきた車 • 三菱 Λ(ラムダ)ギャラン エテルナ • FR / 5MT •

    パワステなし • 運転免許取り立て から 🔰 • ダイハツ ミラ Xリミテッド • FF / AT • 高性能HDDナビ搭載 妻
  3. GPSの情報 • 緯度経度 • 時刻 • 速度 • 高度 •

    進行方向 • 位置情報の精度 機種により記録されてない場合も ある
  4. Gセンサー • 通称:加速度センサー (Gは重力) – X軸、Y軸、Z軸の3軸が主流 – 強い衝撃が加わった事が分かる – 細かく見ると、急のつく操作を検知できる

    • 急加速、急減速、急ハンドル – ノイズ成分が多いので誤検知もある • 装置に加わる振動、傾きで値が変わる
  5. MP4ファイルの解析 • MP4(MOV)のファイル → BOXの集まり – Size(4バイト) FourCC (4バイト) 何のデータかを示す文字列

    Payload データ本体 • Payloadの中に子のBOXが入る事もある – つまり、階層構造となっている • 謎のFourCCがあるか? • Size の値より外に余分なデータが含まれてないか?
  6. 1データを見てみる 46 4D 41 53 00 00 00 00 00

    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 08 01 08 06 08 02 04 07 02 06 00 00 00 00 00 00 00 00 00 00 00 00 00 4F 46 4E 49 4D 4D 41 53 53 41 4D 4D 01 00 00 00 00 00 00 00 00 00 00 00 E5 07 07 1E 10 29 2E 1B 02 00 00 00 8E 37 DE 3D 20 7F 7C 3F 0B 2B 2C 3E 41 45 4E 8C 02 00 15 01 23 3B 0D 14 28 00 58 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 44 41 54 45 45 54 41 44 文字“FMAS” 文字“DATEE” 文字“TAD”
  7. E5 07 07 1E 10 29 2C 2021 (07 E5)

    年 7月 30日 16時 41分 44秒 時刻データの取得 動画に埋め込まれている日時と一致した 年はリトルエンディアン E5 07 → 58631 だったので最初は分 からなかった 時刻は日本時刻
  8. Gセンサーの取得 4バイトで1軸分のデータと想定して値を出してみる console.log(Buffer.from([0xd9, 0x64, 0x13, 0x3f]).readFloatLE(0)); console.log(Buffer.from([0x0e, 0x38, 0x60, 0x3c]).readFloatLE(0));

    console.log(Buffer.from([0x3c, 0xc9, 0x25, 0x97]).readFloatLE(0)); 0.5757575631141663 0.013685239478945732 -5.35683689084154e-25 G単位の値っぽい気はするけど、まだ断定できない D9 64 13 3F 0E 38 60 3C C9 25 97 BF