UART串口调试

2023-05-16

转载自:https://www.secpulse.com/archives/157847.html

UART串口调试

脉搏文库 TideSec

2021-04-23 4,356

0x00前言

 

前段时间陆陆续续的对光猫、路由器、摄像头等硬件接口调试进行了学习,但都没有进行记录,所以在此把学习过程简单记录下来,方便后续查阅。

 

0x01所需工具

 

1、TTL转USB版

2、万用表

3、TTL转USB版

4、SecureCRT 连接工具

5、电烙铁(可选)

6、公母杜邦线若干

7、路由器、光猫等设备

 

0x02硬件接口简介

 

硬件接口,例如UART、JTAG、I2C、SPI ,用于设备制造商在设计时的前期调试,生产时的程序烧录,以及诊断测试使用。

 

板上的调试端口保持打开状态可能造成的危害有,例如设备与云端和移动应用软件的通讯协议泄露、信息完整性校验的算法泄露、加密过程中所使用的秘钥泄露,再利用对这些信息的理解,从而影响更多同类型的设备。

0x03部分通信接口介绍

 

通信接口介绍-UART(通用异步接收器发送器)

 

通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种异步收发传输器,是电脑硬件的一部分。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连接上。

 

UART 允许两个硬件外围设备之间的异步串行通信。它们可以位于同一块电路板上(例如微控制器与电机或LED屏幕通信),也可以位于两个不同的设备之间(例如设备微控制器与PC通信)。它可以允许通过串行读取/写入设备。

 

在许多物联网设备中,板上的UART端口保持打开状态,任何人都可以通过串口连接和访问以获得shell,日志输出等。设备在通常情况下会带有一组引脚,当我们连接到微控制器UART RX和TX引脚时,便可用于发送和接收串行数据。


 

UART引脚作用介绍:

 

VCC:供电pin,一般是3.3v-5v,正极

 

GND:接地,负极

 

RXD:接收数据引脚

 

TXD:发送数据引脚

 

通信接口介绍- JTAG(微控制器调试接口)

 

JTAG属于微控制器调试接口。微控制器具有在运行期间使用指定引脚进行调试的规定,这些引脚连接到电路板上的引脚。这些引脚(端口)由开发人员和设计人员用于调试,读/写固件和微控制器内部存储器,生产后控制/测试微控制器引脚。这使得调试端口成为最关键的攻击面之一,因为它为攻击者提供了强大的功能和访问权限。除了JTAG之外,还包括cJTAG、SWD。

 

 

通信接口介绍- I2C、SPI

 

I2C

 

集成电路总线,是一种串行通信总线。内部集成电路是一种短距离通信协议,用于同一板上芯片之间的通信。I2C连接到微控制器I2C引脚,通常存储数据或代码。典型的攻击包括篡改数据,提取敏感信息,破坏数据等。我们分析EEPROM芯片上的静态数据,并通过嗅探I2C通信来执行运行时分析,可以了解安全隐患。

 

SPI

 

串行外设接口也是一种短距离通信协议,用于同一板上芯片之间的通信。与I2C相比,具有更高的吞吐量。
它用于与各种外围设备通信。闪存和EEPROM芯片也使用SPI。测试和分析的方法与I2C类似。

 

0x04芯片识别

 

遇到不太熟的芯片可以直接通过芯片上的型号进行资料查询:

 

1.https://www.21icsearch.com
2 https://www.datasheets.com/zh-cn
3.http://www.datasheetlocator.com/zh
4.https://www.datasheetpdf.com
5.https://www.ifixit.com
6.https://fccid.io

 

0x05寻找UART串口方法

 

调试UART设备前首先找到在板子上找到相应的引脚:

 

 

若已有明确标识引脚的板子,可以直接使用USB转TTL工具按照下图连接方式进行连接:

 

1、GND引脚对应TTL的GND

 

2、RXD引脚对应TTL的TXD

 

3、TXD引脚对应TTL的RXD

 

 

若PCB板子上没有明确标识出引脚的设备,还需要通过其它方法确定UART接口:

 

可以在PCB板上寻找并排的焊点或者通孔,常规来说数量大约为3-5个的通孔可来作为UART调试串口的初步定位。


 

1、定位GND


将万用表扭至蜂鸣档,将一只表笔抵住电源焊锡点,另一个表笔抵住通孔位置进行测试,发出蜂鸣声的通孔,就可以初步判定为GND。


 

2、定位VCC

 

因已知VCC电压为3.3V,将万用表扭至20V上,将一只表笔放置于GND上,另一只表笔依次对其它通孔进行测试,查看哪个是电压3.3V,发现有两个引脚均为3.3V。


 

因两个脚同时为3.3V或5V,所以我们利用VCC+GND 正负极相连短路来最终确定VCC引脚,我们将一根插线,接入GND,另一个端对两个均为3.5V的通孔进行测试,发现连接到第二个孔时,电源灯灭,故确定该通孔即为VCC引脚。

 

 

3、定位TXD

 

根据经验每次开机有数据传输的时候该引脚电压都会发生变化来判断TXD引脚即可,将表笔置于剩余未确定的口中重启设备观察电压变化即可。


 

4、定位RXD

 

其他三个引脚定位完毕,剩下的就是RXD引脚....

 

定位完毕后使用USB转TTL工具按照顺序接入电脑即可

 

 

打开SecureCRT-选择Serial-COM口-波特率即可连接到UART串口

 

成功连接

 

0x06问题排查

 

连接设备时乱码:

 

第一种是接线松动及线序接反。

 

这个问题可以按照上述步骤重新排查通孔位置及排查是否存在接触不良,重新焊接引脚即可。

 

第二种是波特率设置不对所导致的问题,可以尝试更换常用的波特率。

 

目前常用波特率为115200,但根据设备不同,遇到时可据情况判断合适波特率。

 

1.波特率:

 

每秒钟传送的二进制位数
国际上规定了一个标准波特率系列:

 

  •  

110、300、600、1200、1800、2400、4800、9600、14.4Kbps、19.2Kbps、 28.8Kbps 、33.6Kbps、56Kbps等

 

2.波特率因子


在波特率指定后,输入移位寄存器/输出移位寄存器在接收时钟/发送时钟控制下,按指定的波特率速度进行移位

 

连接设备时可读不可输入问题:

 

SecureCRT , Session Options -> Connection -> Serial -> Flow Control,将默认选中的 RTS/CTS 取消掉即可正常输入。


 

0x07参考致谢

 

https://www.jianshu.com/p/36540b602ef6
https://blog.csdn.net/oyaseng/article/details/81207999
https://paper.seebug.org/506/


 

 

E

N

D

 

本文作者:TideSec

本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/157847.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UART串口调试 的相关文章

  • TM4C123系列(四)————UART串口通信

    一 实验简介 使用TM4C123的串口通信功能实现单片机与PC端通信 二 UART介绍 TM4C123有八个串口 xff0c 其中UART0已经与USB集成 xff0c UART0建议只用来和PC端通信 xff0c 不要与外界通信 除此之外
  • 05-STM32F1 - 串行通信1-UART(3),printf,scanf重定向

    05 STM32F1 串行通信UART xff0c printf xff0c scanf重定向 在C 语言标准库中 xff0c fputc 函数是printf 函数内部的一个函数 xff0c 功能是将字符ch 写入到文件指针file所指向文
  • UART协议

    UART协议 简介 UART是通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART xff0c 是一种异步收发传输器 是设备间进行异步通信的关键
  • 串口通信UART

    串口基本概念 串口通讯 Serial Communication 是指外设和计算机间 xff0c 通过数据信号线 地线等 xff0c 按位进行传输数据的一种通讯方式 其通讯协议可分层为协议层和物理层 物理层规定通信协议中具有机械 电子功能的
  • UART详解

    UART 通用异步收发传输器 xff08 Universal Asynchronous Receiver Transmitter xff0c 通常称作UART 是一种异步全双工串行通信协议 xff0c 它将要传输的资料在串行通信与并行通信之
  • UART&RS232&RS485的区别

    UART RS232 RS485在串口通信中 xff0c 主要区别是电平的不同 xff0c 其中UART通常使用TTL电平 TTL TTL全名是晶体管 晶体管逻辑集成电路 Transistor Transistor Logic 输入高电平最
  • STM32 硬件UART接收超时检测设置

    STM32 硬件UART接收超时检测设置 本文作者 智御电子 xff0c 期待与电子爱好者交流学习 应用场景 在uart应用中有时候需要进行双工通信 xff0c 主机需要对从机的数据进行接收超时检测 xff0c 例如modbus协议 xff
  • UART(通用异步收发传输器)

    1 UART其在数据发送时将并行数据转换成串行数据来传输 xff0c 在数据接收时将接收到的 串行数据转换成并行数据 是异步串行通信的总称 2 而 RS232 RS449 RS423 RS422 和 RS485 等是对应各种异步串行通信口的
  • HAL_UART_IRQHandler(UART_HandleTypeDef *huart)里面的中断接收函数(作者自己生成的函数代码,中间有关闭接收中断,但是原子教程中没有关闭中断的语句注意区别)

    前言 1 UART Receive IT 2 HAL UART Receive 3 HAL UART Receive IT 前言 看了很长时间串口中断的HAL库 xff0c 最容易混淆的就是函数的名称 xff0c 主要集中在UART Rec
  • UART波形分析

    1 逻辑分析仪解码配置 波特率 xff1a 9600 2 逻辑分析仪结果 3 波特率计算 1除以9600 xff0c 结果如下 xff08 e 4表示10的负4次方 xff09 表示 0 00010416秒 61 104 16 微秒 找到发
  • 一文理解UART通信

    还记得当年的打印机 xff0c 鼠标和调制解调器吗 他们都有巨大笨重的连接器和粗电缆 xff0c 并且必须拧到你的电脑上 这些设备正是使用UART协议与计算机进行通信 虽然USB几乎完全取代了旧的电缆和连接器 xff0c 但UART绝对没有
  • UART串口通信协议详解

    UART xff1a 通信异步收发器 xff0c 串行 异步通信总线 xff0c 两条数据线 xff08 收发 xff09 xff0c 全双工 xff08 可以同时接收和发送 xff09 一 UART帧格式 xff08 UART协议 xff
  • UART,SPI,IIC,RS232通信时序和规则

    一 UART 1 串口通信方式 2 串口通信步骤 注意 xff1a 串口协议规定 xff0c 闲置时必须是高电平 校验位 xff1a 是使用奇偶校验 停止位必须高电平 一个0和多个0区分是靠掐时间 异步通信 xff1a 时钟各不一样 二 I
  • 4.RTT-UART-中断接收及轮询发送

    本期博客开始分享RTT的UART xff0c 利用战舰V3的uart2来输入输出一些字符串 UART xff08 Universal Asynchronous Receiver Transmitter xff09 通用异步收发传输器 xff
  • Node.js笔记:SerialPort(串口)模块使用(基于9.x.x)

    文章目录 目的 模块安装 基础使用 扫描端口 打开端口 发送数据 接收数据 错误处理 数据解析器 SerialPort类 构造方法 属性 事件 方法 命令行工具 总结 目的 上位机与各种电路模块间常常采用串口进行通讯 Node js中可以使
  • 嵌入式Linux应用开发笔记:串口

    文章目录 目的 基础说明 开发准备 设备树 应用程序 应用程序与演示 代码 演示 总结 设备树文件 目的 串口 UART 是嵌入式设备中比较常用的功能 这篇文章将记录下应用程序中串口操作相关内容 这篇文章中内容均在下面的开发板上进行测试 新
  • GD32E23x的USART被断点打断后重新运行,会一直进入中断的问题

    GD32E23x的USART被断点打断后重新运行 会一直进入中断的问题 GD32E230K8单片机USART0连接一个从机芯片 该芯片每100ms发来一串16Bytes的数据 MCU中断接收 没有开启FIFO 只开启了RBNE 接收缓存非空
  • UART通信原理

    UART 通信格式 串口全称叫做串行接口 通常也叫做 COM 接口 串行接口指的是数据一个一个的顺序传输 通信线路简单 使用两条线即可实现双向通信 一条用于发送 一条用于接收 串口通信距离远 但是速度相对会低 串口是一种很常用的工业接口 I
  • Verilog功能模块——Uart收发

    摘要 本文分享了一种通用的Uart收发模块 可实现Uart协议所支持的任意波特率 任意位宽数据 5 8 任意校验位 无校验 奇校验 偶校验 1校验 0校验 任意停止位 1 1 5 2 的数据传输 此模块需要搭配FIFO使用 以消除发送端和接
  • 英特尔伽利略裸机 UART

    我想编写一些 hello world 程序裸机申请于英特尔伽利略木板 当然 使用 UEFI 打印文本 到 UART 1 效果很好 但我想 手动 访问 UART 而不需要 UEFI 的任何帮助 在 QEMU 中我的代码运行良好 h file

随机推荐

  • linux进程控制函数--fork,exec,exit,wait,sleep

    1 fork 在linux系统中 xff0c 用户创建进程的唯一方法就是使用系统调用fork xff0c 大概要进行下面的操作 lt 1 gt 分配表项 xff0c 一个用户的进程项是有限的 xff1b lt 2 gt 创建子进程的进程标识
  • linux的用户模式和内核模式

    MS DOS等操作系统在单一的CPU模式下运行 xff0c 但是一些类Unix的操作系统则使用了双模式 xff0c 可以有效地实现时间共享 在Linux机器上 xff0c CPU要么处于受信任的内核模式 xff0c 要么处于受限制的用户模式
  • 阿里内推面试经历

    写在最前 其实主观上并不是很想写 xff0c 但坚持写完是希望能分享给准备进互联网实习或工作的同学或朋友一些经验和收获
  • 关于利用Openmp中使用的时间函数

    Openmp是一项并行化技术 xff0c 是可以提高串行化程序的运行效率的 xff0c 但需要使用正确的时间函数来进行衡量 首先 xff0c 先提出一个unix linux下的内核时间获取函数和一个omp h的一个库函数 1 clock 函
  • mybatis之映射文件

    mybatis框架如何实现java语句与数据库语句的分离 映射文件 通过在映射文件中写入动态sql语句 xff0c 完成增删改查操作 映射文件中的元素都包含在根节点 lt mapper gt lt mapper gt 下 xff0c map
  • mybatis之高级查询

    Mybatis中的高级查询主要通过关联查询 xff0c 集合查询或鉴别器来完成 其核心就是之前提到的通过resultMap标记来完成 1 关联查询 关联查询一般有三种方式 xff1a a 联合查询 利用resultMap的map xml中的
  • mybaits之动态sql

    mybaits除了提供连接数据库 xff0c 使java和数据库语句分离之外 xff0c 还有一个显著的特点就是使用动态sql语句 这些sql语句均写在map映射文件中 xff0c 并通过一系列标记来完成 1 if标记 常用形式 xff1a
  • 平衡二叉树-的四种旋转调整(代码,图解)

    平衡二叉树 的四种旋转调整 xff08 代码 xff0c 图解 xff09 1 右单旋 xff1a 新插入节点插入在较高左子树的左侧 xff08 左左右 xff09 xff0c 插入新节点二十 xff1a 1 修改parent和curLR的
  • 头文件里一般会加入的宏定义,为了避免一个头文件被重复调用

    华清视频里讲的 xff0c 写代码的时候 xff0c 头文件一般地都会加上一个类似这样的宏 xff0c 希望你从此以后再写头文件 xff0c 加上一个宏 加了这个有一个好处 xff0c 当你第一次包含tree h的时候 xff0c 如果没定
  • 自己组装Pixhawk F450无人机的一些细节

    首先参考文档为 xff1a 1 https mp weixin qq com s VXKU kIB v i0AX3zgtLig 2 https mp weixin qq com s Qzzl dQ6Tz2pXNp7Oj0lTg 3 http
  • 电机和桨叶要搭配选择

    拍自 四旋翼无人机的制作与飞行
  • 接收机PPM与SBUS

    最开始是自己弄ACfly的飞控时发现插接收机有两个位置 xff0c 一个PPM一个SBUS xff0c 我想直接移植Pixhawk的接收机或者无名的接收机到ACfly模块上 我最后发现Pixhawk和无名的也是留了两个给接收机 xff08
  • 现在发现如果无人机的电机不同,浆可能是不能混用的。

    现在发现如果无人机的电机不同 xff0c 浆可能是不能混用的 孔位不同 xff0c 我之前在无名那里买了很多浆 xff0c 觉得这次F330的浆没了可以用那个替 xff0c 我刚刚试了下发现插不进去 xff0c 不能通用 包括我刚才在店家那
  • 无人机电池似乎可以并联,串联组合

    之前总是见到这种奇怪的线 xff0c 一直不知道作什么用 xff0c 现在大概清楚了 是不是这样可以实现更长时间的续航 xff0c 我之前再ACfly的群里看到一个人的六轴是上面放了两个电池的 xff0c 他这可能也是并联的
  • 任务的三要素是任务主体函数,任务栈和任务控制块

    任务的三要素是任务主体函数 xff0c 任务栈和任务控制块 由xTaskCreateStatic 函数来把三者联合起立 下面拍自野火的 FreeRTOS内核实现与应用开发实战指南
  • 如何用Realsense D435i运行VINS-Mono等VIO算法 获取IMU同步数据

    摘自 xff1a https blog csdn net qq 41839222 article details 86552367 如何用Realsense D435i运行VINS Mono等VIO算法 获取IMU同步数据 Manii 20
  • Opencv安装与环境配置

    转载自 xff1a https blog csdn net sm16111 article details 81238324 Opencv安装与环境配置 代码敌敌畏 2018 07 27 15 46 24 50411 收藏 94 分类专栏
  • 串口参数详解:波特率,数据位,停止位,奇偶校验位

    转载自 xff1a https blog csdn net sinat 35705952 article details 89034455 串口参数详解 xff1a 波特率 xff0c 数据位 xff0c 停止位 xff0c 奇偶校验位 W
  • cpp-httplib库简单原理,听说你还不会开源库?

    cpp httplib库的原理 听说你还不会开源库 xff1f 介绍httplib h头文件的处理流程httplib h头文件的组成httplib h头文件搭建服务端与客户端的原理Get接口listen 0 0 0 0 8989 接口 介绍
  • UART串口调试

    转载自 xff1a https www secpulse com archives 157847 html UART串口调试 脉搏文库 TideSec 2021 04 23 4 356 0x00前言 前段时间陆陆续续的对光猫 路由器 摄像头