此次的问题是固件升级过程中断电(猜测),导致升级失败,flash中有一个分区被擦除了,所以导致不能用。
折腾了两天,至于怎么折腾的不写了
如何获取更新包下载地址:
首先通过tcpdump抓包:
把tcpdump拷贝到sd卡,之后用串口进入shell,这个操作是在其它的V380摄像头上实现的,执行如下命令:
tcpdump –w info.cap
之后到手机里V380软件里,点击一下固件版本更新,好,至此包已经被抓下来了。
把sd卡插到电脑上,用Wireshark打开info.cap,其中有一个http请求,这就是我们关注的重点了:
红框中,上面的是请求,下面的是响应。
这是请求地址:http://ipcupdate.av380.net/?param=eyJzb2Z0X2lkIjoiVjM4MEUyX0NBIiwiZGV2X2lkIjoxNDU2ODcyOCwidmVyc2lvbiI6MjA1MDkwNSwidGltZXN0YW1wIjoxNjExNDI2OTg2IH0=
这是响应内容:
哈哈,固件下载地址已经出来了。当然这个只是其它的V380的固件下载地址,并不适合我们已经挂掉的V380。
下载适合我们的更新包:
观察这个请求地址:http://ipcupdate.av380.net/?param=eyJzb2Z0X2lkIjoiVjM4MEUyX0NBIiwiZGV2X2lkIjoxNDU2ODcyOCwidmVyc2lvbiI6MjA1MDkwNSwidGltZXN0YW1wIjoxNjExNDI2OTg2IH0=
不难发现param参数使用base64编码,我们把它解码一下,如下:
至此就一目了然,现在就是根据监控里的/mnt/mtd/mvconf/patchmanage.conf来改参数了:
dev_id在监控上贴着有,就在那个二维码旁边(其实写其它的没关系)
改好后把json数据重新编码成base64,替换上边链接的param参数,再次请求即可:
哈哈,把这个链接的文件下载下来,按这个命名:
也就是命名为:12918a546632de6e1a7c06db23aeaa87.patch
如何修复:
首先逆向看了一下ELF文件hu_updater,如下是他的升级核心代码:
所以我们把12918a546632de6e1a7c06db23aeaa87.patch拷贝到/tmp/updatepatch下。
另外,我们还需要改动/mnt/mtd/mvconf/patchmanage.conf文件:
执行命令:
./hu_updater
串口会出现擦除分区等等进度显示,稍等一会儿升级完成会自动重启,完成修复。
跟着我写的教程来即可,至于折腾过程涉及一些Linux嵌入式、网络、逆向等等步骤我就不写了,感兴趣可以自己找资料看。
V380的串口有密码的,关于如何去掉密码,看我另外一篇文章:https://blog.csdn.net/qq_28824733/article/details/113091446