【问题标题】:Script command to manipulate binary file (on linux)用于操作二进制文件的脚本命令(在 linux 上)
【发布时间】:2012-09-04 11:26:54
【问题描述】:

我正在寻找一种机制来使用唯一的设备 ID 来操作我的 eeprom 图像。我想在 make 文件中执行此操作,以便设备自动获取新 ID,然后将其更新为数据映像,然后刷新它。在伪代码中:

wget http://my.centralized.uid.service/new >new.id
binedit binary.image -write 0xE6 new.id
flash binary.image into device

所以首先我们将一个 id 放入一个单独的文件中,然后我们用这个 ID 文件的内容覆盖图像(从给定的偏移量)。然后闪现。但是第二部分怎么做呢?我查了bvi,它似乎有一些脚本能力,但我并没有完全理解它,老实说vi总是让我毛骨悚然。

提前感谢您的帮助!

【问题讨论】:

标签: linux shell


【解决方案1】:

(完全披露:我最初投票以重复关闭。此答案改编自引用的问题。)

ddnotrunc 选项一起使用:

offset=$(( 0xe6 ))
length=$( wc -c < new.id )
dd bs=1 if=new.id of=binary.image count=$length seek=$offset conv=notrunc

您可能想先在副本上尝试一下,以确保它正常工作。

【讨论】:

  • 你是对的,是重复的。我没有在原始关键字搜索中包含“修补”。答案正是我所追求的。谢谢!
【解决方案2】:

如果您知道要替换的文件的偏移量,则可以使用split 命令将初始文件拆分到偏移量为止。然后可以使用cat 命令将所需的部分连接在一起。

处理二进制文件时另一个有用的工具是od,它可以让您检查人类可读格式的二进制文件。

【讨论】:

  • mm,split/cat 方案很有创意,没想到。
【解决方案3】:

我可能会使用Perl 之类的东西。请参阅here,尤其是标记为更新随机访问文件的部分(例如here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-26
    • 1970-01-01
    • 2015-12-15
    • 1970-01-01
    • 2015-03-30
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多