|
由于需要监控另外一个地方的植物缺水情况,之前买的100万像素摄像头根本看不清。见之前的帖子:https://www.mydigit.cn/thread-255164-1-1.html
于是在网上买了一个300万像素的正规室外监控摄像头,25元包邮当然是坏的。心想多半就是poe电源挂了,修电源还不简单吗。买来搞搞
拆开结构如下:
主控,电源板,灯控板
结果到手后,不启动。测主电源,12v正常。靠
现在摄像头,都做得极其小巧。诺大一个壳子里面就一个电源板一个主控板
这得得益于海思在十几年前,打破国外垄断,开始研发海思系列监控主控芯片。经过十几年的时间,成功把全球监控系统,做成了白菜价格。监控的大量普及,使得我国在治安和城市管理等方面,有极大促进。后续诞生了好几个国产厂家,都推出了系列的监控主控(有些是海思马甲)
小小监控主控,其实非常复杂。本质上是一套嵌入式系统,完整的linux系统,小电脑。并且因为摄像头必须要有视频编解码能力和ai等计算的要求,对cpu和硬编解码的要求并不低。这几年的主控,连ddr内存都集成进主控了,板子布局进一步简化,成本进一步降低。现在300万400万像素的模组(主板),就几十元。500万,800万的,也不过100多。
这个模组,用的mstar的msc313E主控芯片,和海思的大同小异。测量主板上各小电源,3.3v 1.8v 0.8v 全部都正常。用示波器测量晶振,无波形。更换晶振后,还是没波形。说明主控挂了
图中是主控和晶振:
以为小故障,事到如今,换主控是唯一出路。。。
找到一个电子群搞摄像监控的老哥,他非常大方的给我免费提供了几块料板。寄过来后,先用文宇815p二合一焊台的热风枪拆焊,用洗板水清洗干净备用。再拆掉原来的芯片,清理焊盘。。。然后经过了多达十几次的热风枪和烙铁焊接。因为qfn底部散热面积大,针脚非常密集。加上相比bga来说,也不会自动归位。所以焊接异常困难,个人感觉难度超过bga的植球和焊接。。。期间多次以为焊好了,结果测试一下好多短路或者断路。还好文宇815p二合一焊台非常给力,最后用小刀头仔细补焊一圈。大功告成
芯片如图:
接上电源和网线,用fping -g顺利搜索到了ip地址,看来有戏。进入web界面,默认密码123456哈哈。搞定了吗???NO,NO,NO。。。
web登录界面:
前面是预告片,下面正片开始。。。。
画面效果还不错,但是出现两行小字。。。“版权芯片检查失败 Copyright check failed”。尼码,肿么肥死,这还用个毛线
换个主控能出这个,看来摄像头软件部分对主控id之类的有校验。厂家应该对软件和硬件做了一些安全措施。现在单片机,都有id,供开发者进行鉴权等操作。嵌入式系统的安全措施就更多了。比如手机,cpu和nand存储器就是配对的。基本上都是软件实现。主控内部又什么security boot 之类的技术。包括一些液晶电视的主控和nand之间。就是防止你篡改程序或者私自更换部分配件。厂家这样做也无可厚非,但是摄像头几十元的东西有这种措施,可能是我孤陋寡闻了。
不管如何,这个东西不干掉,这个监控摄像头就没法投入使用。而且,各方面都正常,就是多两行字,你说气不气人。。。
在查了一圈资料后,了解到这个主控,网上有sdk之类的。但是我也不想像以前一样自己编译固件了。而且固件就算你能做出来,摄像头的各种参数调教你们有设备和专用程序也搞不定。破解思路是将就原来的固件,只要没用security boot 之类的技术,篡改固件在烧写回去。改掉linux中的程序就行了
执行过程比想象中计划还简单。因为这款模组的uboot功能很齐全,没有阉割掉一些功能。比如tftp。这样我只需在uboot中把spi flash读到内存,再通过tftp,传到电脑上,对固件文件进行分析和修改就行了。当然,需要焊接ttl线,常规的115200N8。。。懂的都懂
焊接的ttl线:
根据ttl的linux kernel的启动信息,了解到了spi flash的分块结构:
Creating 5 MTD partitions on "NOR_FLASH":
0x000000000000-0x000000020000 : "BOOT"
0x000000040000-0x0000001d0000 : "KERNEL"
0x0000001d0000-0x0000007b0000 : "SYSTEM"
0x000000003000-0x000000004000 : "MXPT"
这还不简单,直接用dd命令,把1d0000到7b0000的部分分离出来
dd if=msc313e+imx307.img of=313e.hsqs bs=1 skip=0x1d0000 count=0x5E0000
然后看下是什么分区,一般都是ubi,jffs2,squashfs之类的。这款是magic number是hsqs。。。。还用说吗。。。。
接下来用ubuntu 解开这个squashfs文件系统,然后得到所有厂家的文件,包括各种程序,数据等等
然后用grep 扫描一下字符串“Copyright check failed”,定位在了media_server这个可执行文件中。
单独拎出来,把其中的中英文字符串,改成空串。。。。C语言的结束符和就是空串。。。你懂的。。。改好后保存。。。估计这样就大功告成了。机制就是绕过了主控芯片id的检查机制,还是让media_server显示字符串,但因为字符串是两行空字符串,所以就等于“不显示”。懂了吧。。。妙啊!
这是改字符串的过程:
下一步,顺便把root密码改了,把telnetd打开,以便后续进去干坏事。你懂的,顺手就做了。。。简单。。。
然后重新把文件系统用mksquashfs打包。准备烧录
mksquashfs:
烧录也是异常简单,不需要编程器。直接放到电脑端tftp里面,在模组uboot中操作,装载到内存里。在用sf write写到spi flash的1d0000。这个模组的文件系统就更新好了
写入:
剩下就是见证奇迹的时刻
首先,用ttl登录进去,得到root的shell,nice
然后打开配置界面,干净的画面扑面而来。哈哈。搞定收工!
完毕,谢谢观看!
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|