0x00 嵌入式---浅谈路由器重要硬件

0x00 Flash

  1. RAM:

    1. 可读可写

    2. 内存,一般在电路板上有多个引脚的芯片,就是内存芯片。

      1. 这里说的内存一般都是运行内存,对应计算机的内存条。

      2. 通常人们说的存储内存对应计算机中的硬盘(外设)

        1. nand flash(文件系统、系统内核,不能直接运行代码,需要写入必须先擦除)

  2. ROM:

    1. 易读难写

      1. eeprom

      2. nor flash(bootload、BIOS,可直接运行代码)

  3. 特性:长期保存数据,掉电也不丢失数据,读写速度一般

  4. Flash(闪存)和RAM(内存)的区别:

    1. 判断方式:

      1. 可以通过引脚的位置判断,引脚在长方形的长边上的是RAM,在短边的是Flash

      2. 如果看不到引脚,也可以查询表面的型号标识判断

    2. RAM是断电后丢失数据的,临时存储数据,速度较快

    3. Flash是掉电后不会丢失数据的,拥有长期保存数据的功能,速度一般

0x01 Serial

  1. 串口,是采用串行通信方式的扩展接口。串行接口是指数据一位一位的顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信,从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。

  2. 路由器中最多的是异步串行,是指UART(Universal Asynchronous Receiver/Transmitter),通用异步接收/发送。UART是一个并行输入成为串行输出的芯片,通常集成在主板上。UART包括TTL电平的串口和RS232电平的串口。

    1. TTL电平一般是3.3/5V供电,它定义0.8V一下是低电平,而2.0V以上是高电平,路由器中以这种为主。

      1. RS232是负逻辑电平,它定义+5~+12V是低电平,而-12~-5V为高电平。

  3. 为了安全,厂商一般将串口阉割了,为了能调试、固件解析,可以找到路由器中的串口,并将其焊接,再用TTL串口转接线,获得一个shell。

0x02 TTL

  1. 引脚定义:

    1. VCC:电源正极

    2. GND:电源地

    3. RXD:数据接收

    4. TXD:数据发送

  2. 传输逻辑:

    1. 起始位:发送器是通过发送起始位而开始一个字符传送的,起始位数据线处于逻辑0状态,提示接收器数据传输即将开始。

    2. 数据位(Data Bits):起始位之后就是传送数据位。数据位一般为8位一个字节的数据(也有6、7位的情况),低位(LSB)在前,高位(MSB)在后。

    3. 校验位:可以认为是一个特殊的数据位。校验位一般用来判断接收的数据位有没有错误,一般是奇偶校验。在使用中,该位常常取消。

    4. 停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。

    5. 波特率:UART的传送速率,用于说明数据传送的快慢。在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。如波特率9600bps(位/秒)。

    6. TTL转串口(必备工具)

0x03 JTAG

  1. JTAG(Joint Test Action Group 联合测试工作组):是一个国际标准测试协议,主要用于芯片内部测试。简单地说,JTAG协议接收用来控制CPU的。

  2. JTAG接口:

    1. TCK:测试时钟输入

    2. TMS:测试模式选择,TMS用来设置JTAG口处于某种特定的测试模式

    3. TDI:测试数据输入,数据通过TDI输入JTAG口

    4. TDO:测试数据输出,数据通过TDO从JTAG口输出

    5. VCC:电源正极

    6. GND:电源地

  3. 另外作用:JTAG可以读取nor flash(bootload存放处),当路由器变砖时,可以通过JTAG将做好的bootload重新写入到nor flash中(救砖方法)。

  4. 生产厂家:

    1. J-Link(常用)

    2. ULINK

    3. ST-Link

    4. 。。。

常用的路由器存储结构

  1. nor flash + nand flash

  2. CFI(eeprom、epcs串行flash)+ nand flash

  3. nand flash(改良,添加了stepstone(4K 启动引导向区))

  4. 运行的方式:先运行 nor flash 中的bootload或BIOS,bootload或BIOS初始化内存、外设等,再运行nand flash中的系统内核(将代码片段一点点搬运到bootload已经初始完成的内存里面再运行,而不是在nand flash中运行)

有些路由器可能系统文件是只读,或者可写,但是当写入之后,重启路由器,写入的读写就没了,因为路由器启动是通过重新解压tgz文件,而我们写入的文件是解压之后的文件,所以要想真正写入文件,可以替换解压之前的tgz文件中,或者通过类似web中的LFI,因为配置文件不会被重写,可以找到什么读取了配置文件,然后该程序是否调用了system或者其他系统函数,再想办法绕过校验。

发布了31 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/q759451733/article/details/101863939