2012-09-04 40 views
4

我正在寻找一种机制来操纵我的eeprom图像与唯一的设备ID。我想在make文件中这样做,以便设备自动获得一个新的ID,然后将其更新到数据映像,然后将其刷新。在伪代码:脚本命令来操纵二进制文件(在Linux上)

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

所以首先我们得到一个ID到一个单独的文件,然后我们覆盖映像(自定的偏移量),与此ID文件的内容。然后闪光。但如何做第二部分?我抬起头,看起来有一些脚本功能,但我没有完全理解它,老实说,vi总是给我一些毛骨悚然的东西。

感谢您的帮助!

+0

可能重复[Bash脚本:如何修补文件? (在一个给定的文件位置写一个给定的字符串)](http://stackoverflow.com/questions/5196096/bash-scripting-how-to-patch-files-write-a-given-string-in-a -given-position-of) – chepner

回答

2

(全面披露:我做了初步投票关闭为重复这个答案是从引用的问题改编。)

使用ddnotrunc选项:

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

您可能希望首先在一个拷贝上试试这个,只是为了确保它能正常工作。

+0

你是对的,是重复的。我没有在原始关键字搜索中加入“修补”。答案正是我所追求的。谢谢! –

0

我也许会用Perl之类的东西。见here特别是部分标记更新一个随机访问文件(例如here

2

如果你知道你想从替换文件的偏移量,你可以使用split命令分割初始文件直到抵消。然后可以使用cat命令将所需的部分连接在一起。

使用二进制文件时另一个有用的工具是od这将允许您检查二进制文件的可读格式。

+0

毫米,拆分/猫解决方案是相当创新的,从来没有想到这一点。 –

相关问题