致敬下H大的breed帖子:https://www.right.com.cn/forum/thread-161906-1-1.html
H大的这个breed很好用,但是可能是因为NDA的关系,不开源就有点可惜。最近遇到一个TL-WAR308路由器,但是去了H大的仓库看了下http://breed.hackpascal.net/,发现只有breed-qca953x-letv-lba-047-ch.bin这个breed能用,但是这个breed的reset键设置的是gpio17,而我的路由器复位键是gpio 14。去帖子上看了下说明,发现只有结尾是blank的breed才能通过环境变量设置gpio,我这个没带blank就不行。
那该怎么办呢?就硬怼。首先使用binwalk来分析breed固件的结构:

binwalk breed-qca953x-letv-lba-047-ch.binDECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
10228         0x27F4          Copyright string: "Copyright (C) 2020 HackPascal <hackpascal@gmail.com>"
10648         0x2998          LZMA compressed data, properties: 0x6D, dictionary size: 33554432 bytes, uncompressed size: 289721 bytes

发现breed固件又两部分组成,一部分是前面部分的raw数据,另一部分是通过LZMA压缩过的数据。
使用命令:binwalk -e breed-qca953x-letv-lba-047-ch.bin
解压出一个名为2998的文件以及一个名为2998.7z的文件,这个应该就是LZMA解压出来的数据以及LZMA压缩数据。
使用010editor在这里面看了看,好像没有明细看到定义gpio的地方,于是就想到做对比。
使用相同方法分别解压h大的固件breed-qca956x-uart_rx18_tx20-reset1.bin和breed-qca956x-uart_rx18_tx20-reset2.bin,发现了神奇的现象:

发现这两个固件的lzma解压出来的部分只有一处不同,而且恰好对应reset1 和reset2
即24 04 00 01 24 05 00 01与24 04 00 02 24 05 00 01
再次比对了下breed-mt7620-reset11.bin和breed-mt7620-reset12.bin发现也是只有一位不同,也恰好对应的是0xB和0xC也就是reset11和reset12

即0B 00 04 24 01 00 05 24和0C 00 04 24 01 00 05 24
发现和前面那对固件差不多,那应该是大小端不同的原因导致不同。
由于我要刷的路由器固件是qca9533的所以更应该参考qca956x即前面这对固件的信息。
那么接下来的问题就是对lzma解压出来的数据进行修改然后重新打包回lzma。
使用binwalk解压breed-qca953x-letv-lba-047-ch.bin果然发现了24 04 00 11 24 05 00 01,0x11是17,那么改成0xe就可以改成14了

但是lzma算法有很多种参数形式,到底哪种合适呢?
于是我使用7z看了一下发现算法是 LZMA:25:lc1:lp2
也就是数据字典大小是25的LZMA算法。
正好,我看了下openwrt的工具链里面提供这个工具
https://downloads.openwrt.org/releases/17.01.0/targets/ar71xx/generic/lede-sdk-17.01.0-ar71xx-generic_gcc-5.4.0_musl-1.1.16.Linux-x86_64.tar.xz
解压工具链使用工具链里面的lzma工具可以看到一些选项:

ubuntu@ubuntu:~/lede-sdk-17.01.0-ar71xx-generic_gcc-5.4.0_musl-1.1.16.Linux-x86_64/staging_dir/host/bin$ ./lzma -hLZMA 4.65 : Igor Pavlov : Public domain : 2009-02-03Usage:  LZMA <e|d> inputFile outputFile [<switches>...]e: encode filed: decode fileb: Benchmark
<Switches>-a{N}:  set compression mode - [0, 1], default: 1 (max)-d{N}:  set dictionary size - [12, 30], default: 23 (8MB)-fb{N}: set number of fast bytes - [5, 273], default: 128-mc{N}: set number of cycles for match finder-lc{N}: set number of literal context bits - [0, 8], default: 3-lp{N}: set number of literal pos bits - [0, 4], default: 0-pb{N}: set number of pos bits - [0, 4], default: 2-mf{MF_ID}: set Match Finder: [bt2, bt3, bt4, hc4], default: bt4-mt{N}: set number of CPU threads-eos:   write End Of Stream marker-si:    read data from stdin-so:    write data to stdout

那么,我们使用dictionary size为25,number of literal context bits为1,number of literal pos bits为2的LZMA算法就行了。

./lzma e -d25  -lc1 -lp2 2998 2998.lzma

把压缩好的数据2998.lzma替换到breed里面相同偏移的位置就可以了。因为这种lzma算法压缩出来的数据开头是6D 00 00 00对应前面的2998.7z
之后插电开机发现果然修改成功了。
把压缩好的数据2998.lzma替换到breed里面相同偏移的位置就可以了。因为这种lzma算法压缩出来的数据开头是6D 00 00 00对应前面的2998.7z
之后插电开机发现果然修改成功了。
至于怎么检测复位键属于哪个GPIO使用breed里面的内置命令btntst就可以了(详见H大原帖五楼),通过ttl连上breed之后,开启了btntest之后会显示类似下面这种信息,序号对应的就是breed。

GPIO#14  (<gpio0,14>) changed to 0
GPIO#14  (<gpio0,14>) changed to 1

如果是led的可以用gpio get set命令来测,可以看到lo和hi高低电位的变化。

手工使用二进制工具修改H大的breed的gpio复位键的心得相关推荐

  1. mysql blob longblob_MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    <MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)>要点: 本文介绍了MYSQL教程Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理 ...

  2. 微信公众平台最实用的工具和技巧大集合

    推荐语 这不是一篇纯工具的文章,还配有一些使用感受以及小技巧.微信公众平台的编辑本就是个累活儿,希望本文能够助你提高工作效率.下面是微信公众平台最实用的工具和技巧大集合 如果觉得有帮助,欢迎转发和收藏 ...

  3. 用计算机修改图片或照片,如何利用电脑自带的画图工具修改图片的基本属性

    大多数人可能对photoshop都很熟悉,也会熟练的运用,但是多数人可能都没有注意到电脑自带工具"画图",它不但但是画画功能,它还可以对图片做简单修改.下面小编就为大家介绍如何利用 ...

  4. IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour

    IC卡解密从零开始学1 (也许会有2) 解密工具V2 V3大放送 By:lookyour 前段时间发了一个破解的PN532工具,详见 =========================== IC卡解密 ...

  5. android内核名修改工具,修改手机内核绕过ptrace

    前面一篇文章<Android反调试手段收集>在讲常用的反调试方法中有一条是检测进程的TracerPid的值正常情况下为0,在被调试时变成父进程的pid,应对这种情况我们可以通过修改手机内核 ...

  6. 利用H大的padavan老毛子固件实现深澜校园网下原生ipv6NAT

    网络环境:校园网pppoe拨号获得ipv4和ipv6双栈地址 我们学校的校园网虽然能够分配原生ipv6地址,但是因为是/64的地址,没法再通过SLAAC进一步细分,所以在路由器上只能通过NAT66这种 ...

  7. 中文分词工具比较 6大中文分词器测试(哈工大LTP、中科院计算所NLPIR、清华大学THULAC和jieba、FoolNLTK、HanLP)

    中文分词工具比较 6大中文分词器测试(jieba.FoolNLTK.HanLP.THULAC.nlpir.ltp) 哈工大LTP.中科院计算所NLPIR.清华大学THULAC和jieba 个人接触的分 ...

  8. 【S1官方核心】18128核心纯净雅黑H大全力打造的1.9精品

    [S1官方核心]H大全力打造精品,[18128核心]纯净雅黑,1.9定制,强烈推荐长期使用 18128核心是官方发布的S1核心,18533.19199.19202都不是S1机型的官方核心,是别的机型移 ...

  9. 使用admodify工具修改用户主目录时的注意事项

    如果使用admodify工具修改用户的主目录时,连接到不要用 \\server\Homes\%username%,而要用下面的\\server\Homes\%'sAMAccountName'%, 并且 ...

最新文章

  1. u-boot中filesize环境变量【转载】
  2. hoj 13788 Dwarves
  3. 客户端独立弹出详细的实现过程
  4. 任意阶幻方(魔方矩阵)C语言实现
  5. Entity Framework(二)
  6. 当AI遇上云计算,北京 · DevRun 华为云开发者大会
  7. mac pycharm安装设置_入门python,这样操作,简单易学(安装教程)
  8. 谈谈我对-大学-游戏-追名逐利-等10个话题的一些简要看法
  9. Java异常的正确使用姿势
  10. python import自定义模块方法
  11. Google 团队效能研究 | 为什么雇用最聪明的人是远远不够的? 1
  12. STM32F10X 工程复制 STM32F10x_StdPeriph_Lib_V3.5.0 文件到工程文件夹
  13. python精通 epub_精通Python自然语言处理 pdf epub mobi txt 下载
  14. 角度值计算机符号,数学角度符号_请问各种数学符号的读音比如αβγδελζηθξσφψω等等的读音_淘题吧...
  15. mysql 时间 本周 本月_MySQL日期查询:本周、本月、本季、本年
  16. 创业之初需要准备的六个方面
  17. 七张图,学会做有价值的经营分析
  18. 多因素身份认证之手机推送认证
  19. html网页关键字批量替换,织梦(DEDECMS)批量替换文章,标题,关键字,标签等等内容的SQL命令...
  20. 分享国产32位单片机灵动微MM32F主流型和超值型

热门文章

  1. 卷积神经网络:汇聚层
  2. 【SQL】Attempt to do update or delete using transaction manager that does not support these operations
  3. 52.响应式剪贴蒙版视差滚动效果
  4. #力扣LeetCode883. 三维形体投影面积 @FDDLC
  5. phpstudy配置oracle,【phpstudy】安装Oracle 客户端 并连接
  6. 计算机课程设计答辩评语,课程设计指导教师评语
  7. 关于mnist数据集下载的相关问题
  8. 我开始了我向往的城市生活
  9. matlab画散点密度图
  10. 《C语言从入门到精通》学习笔记001-C语言概述