坑爹的 SONY AS100V GPS
事情是这样的,为了记录自己的生活,也是出于对视频编辑的兴趣,买了一台 SONY 的 AS100V 运动摄像机。
公司到货,回家路上拍了一段,回家兴冲冲的连上电脑,想看看 GPS 数据,发现是 SONY 的私有各式,于是从网上找相关资料,想转成 Google Earth 的 KML 各式,中文搜,英文搜,找到那天凌晨三点多也没找到。。。
第二天睡醒,仔细看了一下这个文本数据,才发现 SONY 使用的是相对位置的 GPS 位置记录(熬夜都懵了),从 GPS 定位的那一刻开始,记录为原点(0,0),后面的位置是根据这个点在取偏移,没有最开始那个点的坐标,根本就不知道准确的坐标,坑吧。当然,可以通过自己定位初始坐标的方式获得误差不是很大的坐标,但是这样很不爽不是么。
根据程序员的第六感,AS100V 应该有工程模式/调试模式。以此为前提,想到了一个曲折的方案,这个模式下记录的 GPS 位置肯定是绝对位置,因为只有这样程序员才知道自己记录的位置到底对不对。激活这种模式的方式应该是存储卡里放入一个特殊的文件。但是是什么特殊的文件只有逆向 AS100V 的固件才知道。想知道如何进入调试模式需要得到固件 -> 解压固件 -> 逆向程序 -> 获得进入调试模式的方式 -> 进入调试模式 -> 获得绝对 GPS 位置。
首先是获得固件,这个简单,官方刚好在六月份提供了一个2.0版本的固件。把这个下载下来。是一个自解压缩文件,解压之后会有刷机程序和固件。开始以为刷机程序会先解压\解密固件再写入机器中,不是解压\解密到文件系统,是在内存中解压\解密再传输。但是逆了一下刷机程序发现不是这样的。刷机程序里只有写入、读取数据和获得机器信息的一些操作,看来是把加密的固件直接传输到设备中了。
只能想办法得到固件的格式,自己解析固件,最开始的想法是自己硬上,用编辑器看了一下 HEX 的格式,看了半天没看出门道,这时想到 SONY 应该不会针对每一个固件都设计一个新的固件格式。大部分摄像类固件应该是一样或者类似的格式,按着这个想法找了其他 SONY 录像产品的固件,解压缩一看,连刷固件的程序都是一摸一样的,不错。再看一下 HEX,确实有部分类似的地方,棒极了。
根据这种情况判断,应该已经有前辈研究过 SONY 的固件格式。按着这个想法搜了一下解压 SONY 固件的程序,果然搜到了。是一个解压 NEX 相机固件的程序,这个相机的固件格式和 AS100V 是一样的,所以试了一下,结果不行。不死心找了一下这个工具的源代码,还真找到了,用源代码一步一步的调试,跟踪到了一个分支,作者写了注释,这是第三代固件加密方式,更新日志里详细的写了没有解密的希望。(原文:fixed crashes with 3. generation -no decryption possible-)
事情就到此为止了,用了上个周末的两天时间,想获取 GPS 绝对坐标的希望基本破灭了。。。
不过我还没死心,打算给 SONY 写封邮件,说明一下情况,希望 SONY 能解决这个问题。。。否则。。。 SONY 你妹啊!!坑爹呢这是!!!
附:GPS文件样例
@Sonygps/ver5.0/wgs-84/20140711133516.000/d/
@Sonygpsoption/0/20140711133519.000/20140711133519.347/
#SGA,133519.347,0.0000,N,0.0000,E,1,0,,,M,,M,,*4D
#SMC,133519.347,A,0.0000,N,0.0000,E,1.69,,110714,,,A*56
#SGA,133520.340,0.0012,S,0.0013,W,1,0,,,M,,M,,*4E
#SMC,133520.340,A,0.0012,S,0.0013,W,1.67,,110714,,,A*5B
#SGA,133521.337,0.0026,S,0.0032,W,1,0,,,M,,M,,*4B
#SMC,133521.337,A,0.0026,S,0.0032,W,1.64,,110714,,,A*5D
#SGA,133522.326,0.0041,S,0.0081,W,1,0,,,M,,M,,*41
#SMC,133522.326,A,0.0041,S,0.0081,W,1.63,,110714,,,A*50
#SGA,133523.321,0.0026,S,0.0086,W,1,0,,,M,,M,,*41
#SMC,133523.321,A,0.0026,S,0.0086,W,1.57,,110714,,,A*57
#SGA,133524.324,0.0024,S,0.0069,W,1,0,,,M,,M,,*40
#SMC,133524.324,A,0.0024,S,0.0069,W,1.42,,110714,,,A*52
#SGA,133525.326,0.0020,S,0.0060,W,1,0,,,M,,M,,*4E
#SMC,133525.326,A,0.0020,S,0.0060,W,1.29,,110714,,,A*51
#SGA,133526.327,0.0021,S,0.0046,W,1,0,,,M,,M,,*49
#SMC,133526.327,A,0.0021,S,0.0046,W,1.57,,110714,,,A*5F
#SGA,133527.329,0.0021,S,0.0026,W,1,0,,,M,,M,,*40
#SMC,133527.329,A,0.0021,S,0.0026,W,1.74,,110714,,,A*57
坑爹的 SONY AS100V GPS的更多相关文章
- [BZOJ3538]坑爹的GPS
题目描述 Description 有一天,\(FJ\) 买了一辆车,但是,他一手下载了两个\(GPS\) 系统.好了现在麻烦的事情来了,\(GPS\) 有一个功能大概大家也知道,如果\(FJ\) 没有 ...
- Android GPS应用开发
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5715879.html GPS定位系统由三部分组成,即由GPS卫星组成的空间部分,若干地面组成的控制部分和普通 ...
- android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取
package com.jasgroup.cn.amhdeam; import java.io.IOException; import java.util.Iterator; import andro ...
- MTK MT33xx型GPS的NMEA协议解析实例
1)解析实现 gps_main.c #include <nmea/nmea.h> #include <string.h> #include <stdio.h> #i ...
- Qt - 读取GPS数据
1.GPS型号为ublox(EVK-M8L),配有USB接口,Qt版本5.7 2.实现步骤: (1)实现串口通信 采用Qt5.7 内置的串口操作类QSerialPort和QSerialPortInfo ...
- GPS 气压计高度测量
气压计测某个点的高度是不准的,因为天气.温度等原因会导致不同时刻同一地点气压不同,所以气压计测量不准.但气压计测量相对高度是很准的.GPS测相对高度不准,但测定点高度比较准.
- 趣味GPS
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 简介 GPS的全称是全球定位系统(the Global Positioning S ...
- Elasticsearch 的坑爹事——记录一次mapping field修改过程
Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...
- GPS各种地图坐标系转换(转载)
http://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WGS84坐标系 ...
随机推荐
- 安卓中級教程(6):annotation的基本用法
package com.example.ele_me.activity; import android.annotation.SuppressLint; import android.app.Acti ...
- amCharts图表组件
amCharts提供了JavaScript/HTML5 Charts.Javascript/HTML5 Stock Chart.JavaScript Maps三种图表组件.amCharts图形效果炫丽 ...
- Alfresco.widget.Resizer可拉动div模块
<#include "include/alfresco-template.ftl" /> <@templateHeader> <script type ...
- 掌握Thinkphp3.2.0----模版基础
我们将要学习一下 ThinkPHP 模版,ThinkPHP 内置了一个基于 XML 的性能卓越的模版引擎 ThinkTemplate,使用了动态编译和缓存技术,支持自定义标签库, 其实我还体会不到其中 ...
- [bzoj2463]谁能赢呢
我们通过观察可以发现,当n为偶数时,一定可以转化为一种先手必胜态,即棋盘可以被骨牌所覆盖, 如果n是奇数,那么去掉一格后一定能被1*2的骨牌覆盖,但是先手从左上角走,就进入了这个S态(必胜态),那么和 ...
- C#快捷键和注释
C#注释 //单行注释 /*....*/快注释 ///说明注释,一般用于封装的属性和方法上 #region和#endregion折叠注释,可以将代码折叠 static void ...
- solr添加安全设置
solr版本为5.2.1 配置在了外网,不希望任何人都能拿到数据,所以添加了安全设置,参考 http://www.jianshu.com/p/1e79edb2b817 按照上面的流程走了一遍 1./u ...
- virturalbox 本地win8 虚拟机为Linux-- 网络设置
网络地址转换 NAT(适合Linux临时上网,无法连接本地网络) ,Linux需要设置为自动连接 既DHCP,并service network restart 桥接 适合本地和虚拟机对接,虚拟机网络 ...
- C#测试运行时间
System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); //开始监视代码运行时间 ...
- inline--行内元素
其实在网页中有看不见的基线,就像作业本上面的一行一行的线,但是我们看不见. div是块状元素,独占一行,用div控制文字的颜色会使得文字换行,使用float可以改善,但是它不会浮在相应的位置: < ...