6

[原创]智能硬件入门-小知识汇总

bxc 2018-6-10 15:08 1350
最近没研究出什么干货,就把以前研究智能硬件时学到的一些小知识、小技巧,张贴出来,方便新手学习吧~

  • 硬件调试
    • UART:即通常所说的TTL电平的串口,是我接触到智能硬件中,最为广泛的调试接口,通常用于与嵌入式系统调试通信。如果嵌入式系统为Linux的话,一般UART接口对应的就是一个虚拟控制台(tty设备)。
    • JTAG:JTAG接口好像最初设计出来只是为了验证PCB线路连接的,后来逐渐发展为了硬件级别的调试接口。使用JTAG去调试硬件,软件,几乎可以完全接管CPU,随意的打断CPU运行,以及设置断点。但因为各种架构乃至于CPU之间的JTAG指令并不一样(印象中IEEE的JTAG标准好像只规定了2条指令的比特码,分别是BYPASS和EXTEST指令,并且没有规定指令比特码的长度,其它指令是由厂商指定的,而大部分调试用的指令,则是厂商扩展的,可以说JTAG标准没有规定JTAG接口可用于调试CPU内核),所以没有通用的JTAG调试器,好在ARM系列的CPU,JTAG指令比较通用,可以配合OpenOCD来调试嵌入式系统固件。
    • USB-OTG:接触过一个华为的4G CPE设备,有暴露一个USB接口,平时可插U盘当存储。经过特定操作后,该USB接口可用USB公对公线直连PC电脑,做4G Modem,还可以开启telnet。
  • 提取固件
    • 拆Flash方法:提取嵌入式系统的固件最简单暴力的方法一般就是拆Flash上编程器(常见的Flash一般是SOP8,SOP16,TSOP48引脚的。有经验的人,一块PCB上一眼就能看出哪个IC是Flash),不过这个方法要求具备一定的焊接能力,还需要有额外的硬件辅助,才能读出固件,对个人玩家来说,不是很理想。
    • 读取mtd设备:如果嵌入式操作系统是Linux,那么通常存储固件的Flash会被挂载到/dev/mtd*设备上。可以通过cat /proc/mtd命令查看各个mtd块的用途。然后使用cat /dev/mtd0 > /mnt/usb0_0/mtd0.bin命令导出mtd0的内容,实现dump系统固件的目的。
  • 固件分析
    • binwalk:这个工具是很多大牛用来分析二进制固件用的,不过本人没用过,就不多做概述了。
    • squashfs: 就我接触过的智能硬件,大多数系统固件都是squashfs格式,或者是封装的该格式。这种格式在Windows可以直接用7Zip解压,但高级的解包打包操作,只能在Linux系统下进行。这种格式有个文件头魔法字:sqsh或者hsqs,可以在16进制编辑工具里搜索它们,来定位文件系统的位置。
  • 软件调试
    • Telnet:绝大多数智能硬件都会留有telnet功能,但一般都不会默认开放的,需要运行厂商特定的工具,或者执行一些特定的操作,才能打开设备的Telnet端口(比如华为ONT的使能工具,雄迈IPC的一个名为OpenTelnet的工具)。这时就拿到设备系统的Shell权限了。
    • SSH:开放这个端口的设备比较少,可能是因为ssh占用资源比Telnet要多吧,功能都差不多,都是提供一个远程的终端,可以运行一些命令。
以上内容为本人研究智能硬件设备时得到的经验,有些可能有所偏差,如果错误,请指正。


快讯:[看雪招聘]十八年来,看雪平台输出了大量安全人才,影响三代安全人才!

最后于 2018-6-10 15:08 被bxc编辑 ,原因:
最新回复 (14)
kanxue 2018-6-10 15:42
2
感谢分享!
roysue 2018-6-10 18:26
3
Nice  Work!
sudozhange 2018-6-10 19:51
4
mark
装睡的稻草人 2018-6-10 19:54
5
mark,thanks
金奔腾 2018-6-11 08:42
6
mark
黯夏子风 2018-6-11 09:06
7
感谢分享
开花的水管 2018-6-11 09:50
8
666  感谢楼主分享!
聖blue 2018-6-11 23:14
9
张three 2018-7-3 18:16
10
楼主,我在调试一块板子上的TTL串口,用万用表测试的时候很久才会有一个电压波动,用xshell连接到电脑上之后一直显示connectd,但是没有任何交互。这个串口会不会没有数据传输啊
张three 2018-7-3 20:48
11
OK了,问题已经解决了(*^_^*)
smartdon 2018-7-4 15:14
12
感谢分享
fmam 2018-7-4 17:27
13
感谢楼主分享
bxc 2018-7-6 13:30
14
张three 楼主,我在调试一块板子上的TTL串口,用万用表测试的时候很久才会有一个电压波动,用xshell连接到电脑上之后一直显示connectd,但是没有任何交互。这个串口会不会没有数据传输啊
有没有TTL信号得用逻辑分析仪,万用表那个测不出来的。。
张three 2018-7-12 11:45
15
买。。。买不起
返回