事情是这样的,为了记录自己的生活,也是出于对视频编辑的兴趣,买了一台 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的更多相关文章

  1. [BZOJ3538]坑爹的GPS

    题目描述 Description 有一天,\(FJ\) 买了一辆车,但是,他一手下载了两个\(GPS\) 系统.好了现在麻烦的事情来了,\(GPS\) 有一个功能大概大家也知道,如果\(FJ\) 没有 ...

  2. Android GPS应用开发

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/5715879.html GPS定位系统由三部分组成,即由GPS卫星组成的空间部分,若干地面组成的控制部分和普通 ...

  3. android GPS定位源码 地图显示位置源码 有用到的小伙伴自提取

    package com.jasgroup.cn.amhdeam; import java.io.IOException; import java.util.Iterator; import andro ...

  4. MTK MT33xx型GPS的NMEA协议解析实例

    1)解析实现 gps_main.c #include <nmea/nmea.h> #include <string.h> #include <stdio.h> #i ...

  5. Qt - 读取GPS数据

    1.GPS型号为ublox(EVK-M8L),配有USB接口,Qt版本5.7 2.实现步骤: (1)实现串口通信 采用Qt5.7 内置的串口操作类QSerialPort和QSerialPortInfo ...

  6. GPS 气压计高度测量

    气压计测某个点的高度是不准的,因为天气.温度等原因会导致不同时刻同一地点气压不同,所以气压计测量不准.但气压计测量相对高度是很准的.GPS测相对高度不准,但测定点高度比较准.

  7. 趣味GPS

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 简介 GPS的全称是全球定位系统(the Global Positioning S ...

  8. Elasticsearch 的坑爹事——记录一次mapping field修改过程

    Elasticsearch 的坑爹事 本文记录一次Elasticsearch mapping field修改过程 团队使用Elasticsearch做日志的分类检索分析服务,使用了类似如下的_mapp ...

  9. GPS各种地图坐标系转换(转载)

    http://my.oschina.net/fankun2013/blog/338100 地图供应商比较多,产生了许多地图坐标.地图坐标正确转换是个问题.在之前开发地图应用的时候发现从WGS84坐标系 ...

随机推荐

  1. 如何提高Java并行程序性能??

    在Java程序中,多线程几乎已经无处不在.与单线程相比,多线程程序的设计和实现略微困难,但通过多线程,我们却可以获得多核CPU带来的性能飞跃,从这个角度说,多线程是一种值得尝试的技术.那么如何写出高效 ...

  2. Oracle总结

    摘自:http://www.cnblogs.com/linjiqin/category/283838.html oracle decode用法 select decode( x , 1 , ‘x is ...

  3. php http头设置相关信息

    HTTP 状态码 状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response. HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别 1XX 提示信 ...

  4. C#网络编程之---TCP协议的同步通信(二)

    上一篇学习日记C#网络编程之--TCP协议(一)中以服务端接受客户端的请求连接结尾既然服务端已经与客户端建立了连接,那么沟通通道已经打通,载满数据的小火车就可以彼此传送和接收了.现在让我们来看看数据的 ...

  5. UNIX中的文件类型

    Unix的文件类型信息包含在stat结构的st_mode成员中可以用宏确定文件类型: 普通文件(S_ISREG()):包含某种形式数据的常用文件类型 目录文件(S_ISDIR()):这种文件包含其他文 ...

  6. Asp.net Mvc Entity Framework Code First 数据库迁移

    1.创建Mvc项目 2.安装Entity Framework 2.1.如下图打开程序包管理器控制台: 2.2.输入命令Install-Package EntityFramework,即可安装Entit ...

  7. 【OpenWRT】【RT5350】【三】MakeFile文件编写规则和OpenWRT驱动开发步骤

    一.Makefile文件编写 http://www.cnblogs.com/majiangjiang/articles/3218002.html 可以看下上面的博客,总结的比较全了,在此不再复述 二. ...

  8. 使用HttpClient连接池进行https单双向验证

    https单双向验证环境的搭建参见:http://www.cnblogs.com/YDDMAX/p/5368404.html 一.单向握手 示例程序: package com.ydd.study.he ...

  9. SQL SERVER数据库备份时出现“操作系统错误5(拒绝访问)。BACKUP DATABASE 正在异常终止。”错误的解决办法

    一般备份文件选择的目录为磁盘根目录或备份所选分区未授予sqlserver用户读写权限时会出现此错误. 解决办法就是给sqlserver用户授予权限: 选择要备份的文件夹 ,右键-->属性--&g ...

  10. Windows Server 2008 R2域控组策略设置禁用USB

    问题: Windows Server 2008 R2域控服务器如何禁用客户端使用USB移动存储(客户端操作系统需要 Windows Vista以上的操作系统,XP以下的操作系统不能禁用USB移动存储) ...