本文讲的是利用Arduino对路由器进行调试,居然这么简单!

在生产嵌入式系统,如路由器或网络摄像头时,制造商就已预留了一些调试端口。不过对于一般的用户来说,这些预留的调试端口显然是用不到的,因为它们通常是被焊接的并受到设备外壳的保护。但是对于攻击者来说,访问这些端口就显得轻而易举了,对他们来说这些预留的端口就是连接系统的一个外部设备而已。这些端口通常会通过串行通信协议进行通信,并且包括JTAG,SPI和UART等接口。通常研究人员会利用诸如BusPirate,JTAGulator或Shikra之类的定制硬件与设备接口进行连接。

在本文中,我们将使用Arduino Uno / Nano / Mega来模拟路由器上的调试引脚硬件连接 ,然后使用Arduino作为USB到串行转换器与设备进行通信,并由此获得对该设备的控制。请注意,该项目是通过通用异步收发器(UART)进行创建的,其他项目如JTAGenum已被创建,可以通过其他接口与Arduino进行通信。

首先,需要识别物理调试引脚,在本文中,我们很幸运有一个已经被焊接在路由器上的调试端口:

为便于参考,我们将分别从左到右分配引脚:pin0-pin4。我们会在这5个引脚中,一一寻找能够Tx(发送)和Rx(接收)的引脚,以便能够与路由器进行通信。幸运的是,我们可以用万用表对引脚进行连续性测试,以识别可以跟这个引脚相连的公共端(GND)。最后发现,GND原来是pin1(从左起第二个)。

接下来,我们就要确定是哪个引脚正在传输数据(Tx)以及Arduino所在的波特率。我们可以使用Arduino的SoftwareSerial库来模拟所有未知引脚上的串行连接,并在设备启动通信过程,任何传输数据的端口都可能是我们的Tx。

首先,将MDSec UartFuzz代码项目上传到您的Arduino

接下来,将路由器连接公共端的引脚(pin1)连接到Arduino的公共端。然后将路由器的引脚从0-4(不包括公共端)顺序插入到Arduino引脚9-12(这些值在代码中互相关联,可以根据需要进行更改和扩展):

引脚配置:

开始启动包括路由器在内的运行,使用Arduino IDE的串行显示器,就可以看到该软件正在运行。请注意,由于我们是需要通过引脚进行数据传输,所以请务必不断地重新设置设备,以确保引导过程正在发送数据:

设备输出:

由于有时其他引脚会在通电或关闭时跳转或传输数据,所以用户要选择引脚或寻找更多的数据。我们建议用户最好多进行一些分析,看看哪个引脚会反复发送数据。在我们的案例中,pin0就是我们所寻找到干扰因素。我们还可以看到,软件使我们的波特率变得模糊,看起来像115200的速率的明文显示如下:

请注意,“wps eNabled”有一些损坏,这是由于SoftwareSerial是使用Bit-Banging来实现的,但显然不如UART那么精确,这一点我们已在寻找明文时考虑到这一点了。现在我们知道了公共端,Tx和波特率,就可以尝试从设备中进行读取并找到Rx。

将Arduino转换成TTL-Serial-to-USB转换器,通过删除ATmega芯片,或简单地将复位和公共端连接在一起(这取决于路由器的型号),然后重新进行电路连接:

引脚配置:

请注意,通常Tx要始终与Rx保持连接。可以利用Arduino Uno进行反转,可以尝试在你的Arduino pin0(Rx)进行反转,如果这不适合你,可以使用你最喜欢的软件来连接到串行控制台,本文使用的是minicom,并将波特率设置为了115200,重置路由器:

但在引导过程结束时,我们似乎没有得到一个shell或一个提示,这样就使Rx很难进行测试。可是我们确实看到启动过程可能会中断,最后一个过程就是将一根电线连接到Arduino的Rx引脚(通常应该是Tx引脚,因为会发送数据),并且继续绑定路由器上剩余的3个引脚,并按ctrl + c进行引导。如果它中断,则问题就出在Rx。

Rx和Tx通信的最终接线如下:

中断引导过程可以让用户访问#hi引导加载程序shell:

现在就可以使用tftp命令来上传自定义内核映像以进一步利用路由器。

原文发布时间为:2017年5月24日
本文作者:xiaohui
本文来自云栖社区合作伙伴嘶吼,了解相关信息可以关注嘶吼网站。
原文链接

利用Arduino对路由器进行调试,居然这么简单!相关推荐

  1. 利用Arduino IDE对ATMEGA8等单片机编程

    简 介: 根据 Programming ATmega8 Using Arduino IDE - Arduino Project Hub 所描述的方法,测试了在Arduino IDE中增加对于ATmeg ...

  2. 利用Arduino Nano 对于另外的Arduino控制板下载Bootloader

    简 介: 测试了利用Nano板对于基于MEGA328的Arduino的Bootloader下载,在此基础之上,利用了FT232TL的USB-TTL UART模块对测试MEGA328下载执行程序. 关键 ...

  3. linux单网卡主路由做路由器,利用SuSE做路由器,单网卡配置nat

    利用SuSE做路由器,单网卡配置nat 发布时间:2006-08-25 17:10:34来源:红联作者:严寒 由于我们实验室本科生来作毕业设计,ip地址不够用,我的SuSE就暂时做了router. e ...

  4. 怎么在火狐中调试html,如何利用火狐浏览器开发工具调试网页颜色搭配?

    如何利用火狐浏览器开发工具调试网页颜色搭配?如果你对网站的整体颜色不满意,完全可以在火狐浏览器的Web开发工具中使用查看器来调整预期的效果,再将色码实施到该位置,这样就可以很方便的处理颜色调试问题. ...

  5. 如何利用Arduino和TFT LCD操控NeoPixel LED灯条

    原文地址:https://circuitdigest.com/microcontroller-projects/neopixel-rgb-led-strip-with-arduino 如何利用Ardu ...

  6. 利用ZendStudio对PHP动态调试

    利用ZendStudio对PHP动态调试 本文系统环境:win10-64 本文工具:ZendStudio13.6.1.Xdebug.phpstudy.firefox 动态调试php代码一般可使用php ...

  7. 利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法三)

    利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法三) 24BYJ48步进电机 本文不涉及指定圈数的转动,旨在控制步进正反转以及停止的控制.(知道其原理,实现指定圈数 ...

  8. 利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法二)

    利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法二) 继续写第二种方法,主要是受到之前写流水灯的程序原理启发. 24BYJ48步进电机 本文不涉及指定圈数的转动,旨 ...

  9. python firmata协议利用arduino操控麦克纳姆轮小车(附完整代码)

    python firmata协议利用arduino操控麦克纳姆轮小车 前言 一.python中pyfirmata的环境 材料 二.使用步骤 1.小车的安装方式 我在这采用的是X型安装方式 总结 前言 ...

最新文章

  1. 自定义ImageView系列
  2. [YTU]_2877(结构体---职工信息结构体)
  3. 区块链BaaS云服务(3)甲骨文 Oracle Blockchain Platform
  4. 办公出口ip多个地址_如何正确分配与高效管理IP地址
  5. BZOJ4107 : [Wf2015]Asteroids
  6. sql server 2008表中计算机,电脑删除SQLsever2008表格数据出现“不能删除”怎么办
  7. 如何更好地理解Javascript对象的自有属性和原型继承属性
  8. 买下个月的iPhone新机要花多少钱?
  9. Git教程——查看修改日志 (log diff)
  10. python快速编程入门课本中的名片管理器_python——实现名片管理器
  11. java俄罗斯方块简单代码_Java简易俄罗斯方块
  12. COPY NAV导航网格寻路 -- 光照射线法
  13. 安卓夜神模拟器设置代理
  14. iOS 字体pt和px的转换
  15. 如何将手机中的Word文档转换成PDF文件?
  16. At least one JAR was scanned for TLDs yet contained no TLDs.问题解决方式
  17. Iphone 游戏引擎剖析
  18. depot_tools更新失败
  19. [博客杂志]2007年中国最红的十大美女明星
  20. 追风去 不如造风来——致敬蚂蚁区块链创新大赛中的参与者们

热门文章

  1. 17 行代码实现的简易 Javascript 字符串模板
  2. Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
  3. 苹果新漏洞 “Shrootless” 可使攻击者在macOS 系统上安装后门
  4. 无人机在高楼区做倾斜摄影的地籍建模项目报告
  5. WebView断网提示
  6. vue 监听state 任意值变化、监听mutations actions
  7. SteveY对Amazon和Google平台的吐槽
  8. ubuntu两个conda安装和切换
  9. Net中的AOP系列之《将AOP作为架构工具》
  10. iOS tableview嵌套collectionview