登录 立即注册

首页 > 绿虎论坛 > 电脑 > 教程 (发帖)

向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程


『回复列表(101|隐藏机器人聊天)』

62.

@Caddi,嗯,就在固件里。控控ssh的/lib目录是可写的,直接scp到/lib就可以。

admin密码是oray.com

scp -P44022 libstdc++.so.6 [email protected]:/lib
scp -P44022 oraymcu_helper oray_mcu_firmware.hex [email protected]:.
ssh -p44022 [email protected]
# busybox chmod +x ./oraymcu_helper
# ./oraymcu_helper -f ./oray_mcu_firmware.hex

oray_mcu_firmware.hex(57.75 KB)
oraymcu_helper(19.04 KB)
libstdc++.so.6(737.75 KB)


亲自提取固件时的注意事项:

libstdc++.so.6libstdc++.so.6.0.19的符号连接,所以应该提取后者,再重命名为前者。

(/@Ta/2022-10-28 21:25//)

64. 收到文件,谢谢!@老虎会游泳,请问您尝试这样是可以成功了吗
(/@Ta/2022-09-25 15:43//)

65.

@Caddi,我还没刷。等我试试。

(/@Ta/2022-09-25 15:44//)

66.

@Caddi,注意我在教程中可能会写错SSH端口,用户名和密码,因为我的固件和默认固件不一样。

你应该使用44022端口,用户名是admin,密码是oray.com

对于scp命令,端口用-P指定,而ssh命令则是-p

(/@Ta/2022-09-25 15:50//)

67. 我仔细看了一下,您62楼教程里写的是对的
另外我偏个题,请教hex文件里写的这堆数字怎么能转换成中文来看(什么编码方式?我比较好奇😂)@老虎会游泳
(/@Ta/2022-09-25 15:54//)

68.

@Caddi,我虽然刷入成功了

图片.png(194.11 KB)

但重启后ID没有变,我正在查找原样。也许MCU固件被以下脚本还原了(/etc/init.d/S16mcu_helper):

        cur_version=$(cat /etc/version | grep 'mcu' | awk -F ':' {'print $2'})
        mcu_version=$(/usr/sbin/oraymcu_helper -v | awk -F ',' {'print $2'} | awk -F ':' {'print $2'})
        #读取mcu版本号失败或者与本固件的mcu版本不匹配,则将本固件的mcu固件刷入到mcu中
        [ $? -ne 0 -o "$mcu_version" != "$cur_version" ] && {
                burn_mcu_firmware
        }
(/@Ta/2022-09-25 16:08//)

69. 可以理解成控控官方内置了防止刷新的程序?
(/@Ta/2022-09-25 16:10//)

70.

@Caddi.hex是用bin2hex方式存储的单片机固件,对于stm32f103c8t6,采用ARM32机器语言。

IDA Pro可以把它转换为ARM32汇编语言,就像这样:

图片.png(878.71 KB)

但转换后的汇编语言只能用来看(因为转换不完整,不可能得到原始源代码),不能用来修改或编译。想修改还是只能修改.hex文件本身。

(/@Ta/2022-09-25 16:18//)

71.

@Caddi,我还有另一个线索,IDA Pro提示我文件校验和不正确。这是一个“Intel Hex”文件,看起来它内置校验和,可能需要使用专用编辑器进行修改。

图片.png(46.67 KB)

Intel Hex文件格式:https://zhuanlan.zhihu.com/p/420620471

记录格式:

一个英特尔HEX 文件由一些HEX记录组成。每个记录由如下所示的五部分组成:
:llaaaatt[dd……]cc

  • : 冒号代表了每个记录的开始
  • ……
  • cc 是校验和的校验码。是计算了所有前面的数据的和后,除以256后的余数,一般是补码,所以要对和取反再加一。
(/@Ta/2022-09-25 16:28//)

72. 猜测他校验和这里需要重新计算改变之后的INTEL HEX
(/@Ta/2022-09-25 16:31//)

73. @老虎会游泳,不能随便修改oray_mcu_firmware.hex中的字符,这样理解对吗
(/@Ta/2022-09-25 16:32//)

74.

@Caddi,我写了个python脚本用来重算一行的校验和:

intel-hex-checksum.py(593 Bytes)

import re
import sys
from functools import reduce

print('请输入要计算校验和的行:')
line = sys.stdin.readline().strip()

checksum = int(line[-2:], 16)
parts = re.findall('.{2}', line[1:-2])
parts = map(lambda x: int(x, 16), parts)
new_checksum = 256 - reduce(lambda a, b: (a + b) % 256, parts)

if checksum == new_checksum:
    print('校验和匹配,该行无需修改')
else:
    print('校验和不匹配,原校验和:%d,应该改为:%d' % (checksum, new_checksum))
    print('正确的行:')
    print('{}{:02X}'.format(line[:-2], new_checksum))

图片.png(90.33 KB)

(/@Ta/2022-09-25 16:51//)

75. 好强😭老虎哥给个微信吧,我请您喝奶茶@老虎会游泳,辛苦您了
(/@Ta/2022-09-25 16:47//)

76.
(/@Ta/2022-09-25 16:53//)

77.

在修复校验和之后,修改就成功了

图片.png(326.98 KB)

(/@Ta/2022-09-25 17:16//)

78.

注意:oray_mcu_firmware.hex是从控控固件1.4.0版本提取的,不适用于其他固件。如果你的控控固件版本低于1.4.0,你应该先升级到该版本再刷入。

(/@Ta/2022-09-27 21:53//)

79.

@Caddi,结果如何老虎应该给你解决了吧。
一加8Pro

(/@Ta/2022-09-28 18:35//)

80.

@老虎会游泳,oray_mcu_firmware.hex
改好的固件来个呗。我之前就想过,但是不知道怎么弄。

一加8Pro

(/@Ta/2022-09-28 20:28//)

81.

@罐子oray_mcu_firmware_mod.hex(57.75 KB)

你可以自己和未修改的固件进行对比

(/@Ta/2022-09-28 20:34//)

82.

@老虎会游泳,嗯嗯。
一加8Pro

(/@Ta/2022-09-28 20:36//)

下一页 上一页 4/6页,共101楼

回复需要登录

11月22日 04:43 星期五

本站由hu60wap6华为CPU驱动

备案号: 京ICP备18041936号-1