首页
社区
课程
招聘
[原创]智能硬件入门-小知识汇总
发表于: 2018-6-10 15:08 24650

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

bxc 活跃值
6
2018-6-10 15:08
24650

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


  • 硬件调试
    • 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要多吧,功能都差不多,都是提供一个远程的终端,可以运行一些命令。
以上内容为本人研究智能硬件设备时得到的经验,有些可能有所偏差,如果错误,请指正。
  • 硬件调试
    • 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要多吧,功能都差不多,都是提供一个远程的终端,可以运行一些命令。
以上内容为本人研究智能硬件设备时得到的经验,有些可能有所偏差,如果错误,请指正。
以上内容为本人研究智能硬件设备时得到的经验,有些可能有所偏差,如果错误,请指正。
  • 硬件调试
    • 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要多吧,功能都差不多,都是提供一个远程的终端,可以运行一些命令。
  • 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要多吧,功能都差不多,都是提供一个远程的终端,可以运行一些命令。
  • 硬件调试
  • UART:即通常所说的TTL电平的串口,是我接触到智能硬件中,最为广泛的调试接口,通常用于与嵌入式系统调试通信。如果嵌入式系统为Linux的话,一般UART接口对应的就是一个虚拟控制台(tty设备)。

  • [招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

    最后于 2018-6-10 15:08 被bxc编辑 ,原因:
    收藏
    免费 4
    支持
    分享
    最新回复 (18)
    雪    币: 47147
    活跃值: (20445)
    能力值: (RANK:350 )
    在线值:
    发帖
    回帖
    粉丝
    2
    感谢分享!
    2018-6-10 15:42
    0
    雪    币: 3907
    活跃值: (5817)
    能力值: ( LV12,RANK:200 )
    在线值:
    发帖
    回帖
    粉丝
    3
    Nice  Work!
    2018-6-10 18:26
    0
    雪    币: 285
    活跃值: (1095)
    能力值: ( LV13,RANK:405 )
    在线值:
    发帖
    回帖
    粉丝
    4
    mark
    2018-6-10 19:51
    0
    雪    币: 282
    活跃值: (31)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    5
    mark,thanks
    2018-6-10 19:54
    0
    雪    币: 41
    活跃值: (823)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    6
    mark
    2018-6-11 08:42
    0
    雪    币: 1694
    活跃值: (253)
    能力值: ( LV8,RANK:130 )
    在线值:
    发帖
    回帖
    粉丝
    7
    感谢分享
    2018-6-11 09:06
    0
    雪    币: 1535
    活跃值: (695)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    8
    666  感谢楼主分享!
    2018-6-11 09:50
    0
    雪    币: 6818
    活跃值: (153)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    9
    2018-6-11 23:14
    0
    雪    币: 206
    活跃值: (254)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    10
    楼主,我在调试一块板子上的TTL串口,用万用表测试的时候很久才会有一个电压波动,用xshell连接到电脑上之后一直显示connectd,但是没有任何交互。这个串口会不会没有数据传输啊
    2018-7-3 18:16
    0
    雪    币: 206
    活跃值: (254)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    11
    OK了,问题已经解决了(*^_^*)
    2018-7-3 20:48
    0
    雪    币: 3549
    活跃值: (941)
    能力值: ( LV6,RANK:80 )
    在线值:
    发帖
    回帖
    粉丝
    12
    感谢分享
    2018-7-4 15:14
    0
    雪    币: 3566
    活跃值: (3234)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    13
    感谢楼主分享
    2018-7-4 17:27
    0
    雪    币: 7048
    活跃值: (3527)
    能力值: ( LV12,RANK:340 )
    在线值:
    发帖
    回帖
    粉丝
    14
    张three 楼主,我在调试一块板子上的TTL串口,用万用表测试的时候很久才会有一个电压波动,用xshell连接到电脑上之后一直显示connectd,但是没有任何交互。这个串口会不会没有数据传输啊
    有没有TTL信号得用逻辑分析仪,万用表那个测不出来的。。
    2018-7-6 13:30
    0
    雪    币: 206
    活跃值: (254)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    15
    买。。。买不起
    2018-7-12 11:45
    0
    雪    币: 122
    活跃值: (360)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    16
    不错
    2021-3-9 07:43
    0
    雪    币: 5008
    活跃值: (1147)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    17
    张three 买。。。买不起[em_39]
    逻辑分析仪某宝上面几十一个的就能简单用
    2021-3-9 09:39
    0
    雪    币: 5
    能力值: ( LV1,RANK:0 )
    在线值:
    发帖
    回帖
    粉丝
    18
    25包邮逻辑分析仪
    2021-8-9 10:50
    0
    雪    币: 189
    活跃值: (495)
    能力值: ( LV2,RANK:10 )
    在线值:
    发帖
    回帖
    粉丝
    19
    感谢分享,问下,我焊接下来的NOR Flash 芯片:SPANSION S29AL016D70TFI01@TSOP48,能否外接一个读卡器之类的硬件,可以实现像U盘一样读取里面的数据文件?还是要怎么处理,谢谢!
    2023-5-13 16:55
    0
    游客
    登录 | 注册 方可回帖
    返回
    //