登录 立即注册

找到2210个回复 (用户: 老虎会游泳)

老虎会游泳 77楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

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

图片.png(326.98 KB)

老虎会游泳 76楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)
老虎会游泳 74楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@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)

老虎会游泳 71楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

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

图片.png(46.67 KB)

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

记录格式:

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

  • : 冒号代表了每个记录的开始
  • ……
  • cc 是校验和的校验码。是计算了所有前面的数据的和后,除以256后的余数,一般是补码,所以要对和取反再加一。
老虎会游泳 70楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

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

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

图片.png(878.71 KB)

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

老虎会游泳 68楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@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
        }
老虎会游泳 44楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,还有这一段:

burn_mcu_firmware()
{
        /usr/sbin/oraymcu_helper -f /usr/share/oray_mcu_firmware.hex
        [ $? -eq 0 ] || {
                echo "burn mcu failed..."
                sleep 2
                /usr/sbin/oraymcu_helper -f /usr/share/oray_mcu_firmware.hex
        }
        return $?
}
老虎会游泳 66楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

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

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

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

老虎会游泳 58楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,我通常会这样做(admin密码是oray.com):

scp -P44022 oraymcu_helper oray_mcu_firmware.hex admin@192.168.x.x:.
ssh -p44022 admin@192.168.x.x
# chmod +x ./oraymcu_helper
# ./oraymcu_helper -f ./oray_mcu_firmware.hex

至于 /usr/sbin/oraymcu_helper -f /usr/share/oray_mcu_firmware.hex,它最大的用途是告诉你这两个文件在压缩包里的什么位置,以及命令的参数类型。

老虎会游泳 65楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

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

老虎会游泳 60楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

结果得到./oraymcu_helper: can't load library 'libstdc++.so.6',看起来还有一些库要上传

老虎会游泳 55楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,注意:固件应该不适用于控控A2 pro,弄错可能会导致USB失灵。

老虎会游泳 54楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,我猜可以,你先解压固件获得/usr/sbin/oraymcu_helper/usr/share/oray_mcu_firmware.hex,然后修改oray_mcu_firmware.hex里的id,把它和oraymcu_helper一起用scp传到控控,然后用命令刷入,再断电重启即可(reboot命令没有用,要物理断电才能重启单片机)。

固件:kvm_upgrade_1.4.0_firmware.bz2(12.77 MB)(使用7-zip解压,然后再用7-zip解压rootfs.squashfs

控控的SSH监听在44022和44033端口。44022端口的用户名是admin,密码是oray.com,会话根目录被chroot了(所以要自己传文件上去)。44033的用户名是root,密码未知,会话根目录未被chroot,但因为不知道密码我们也连不上。

老虎会游泳 51楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,如果我给你这张图以及这个命令,你知道怎么修改吗?

图片.png(391.16 KB)

/usr/sbin/oraymcu_helper -f /usr/share/oray_mcu_firmware.hex

注意ID要按照 Little Endian 反转:0483:572b -> 83042b57

老虎会游泳 50楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

控控的现有USB设备id:

Bus 004 Device 002: ID 0483:572b STMicroelectronics

按 Little Endian 反转:83042b57

老虎会游泳 49楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

STM32F103C8T6是一款基于ARM Cortex-M 内核STM32系列的32位的微控制器,程序存储器容量是64KB,需要电压2V~3.6V,工作温度为-40°C ~ 85°C。

STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。

https://blog.csdn.net/fantastic_sky/article/details/110229474

老虎会游泳 47楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,嗯,我尝试找一下如何修改吧。

老虎会游泳 45楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,所以,硬件ID很可能在/usr/share/oray_mcu_firmware.hex里,修改它然后刷入可能就可以。

老虎会游泳 42楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,注意这句话

1、负责产品硬件选型,使用海思hi3516a处理器,使用ADV7611 HDMI采集芯片并使用stm32f130c8t6单片机作为usb device模拟鼠标键盘设备;

USB是一个单独的单片机实现的,它有单独的固件。

/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
        }
老虎会游泳 40楼回复 老虎会游泳向日葵控控A2(OrayKVM)U盘救砖/USB恢复模式说明/免U盘刷机教程 (2022-09-25//)

@Caddi,如果你真的没有授权问题,那么我可以尝试一下看看能不能找到修改方法。

下一页 上一页 (53 / 111页)

10月24日 03:15 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1