0

我的 linux 非常有限,几乎没有基本的 linux 命令。我需要替换十六进制/二进制文件中的一些字符:

输入:

# hexdump -C block.bin
00000000  11 11 50 04 42 00 00 00  58 00 00 00 3c 0e e2 d4  |..P.B...X...<...|
00000010  50 0b 00 00 00 80 00 00  00 00 00 00 00 00 d0 d7  |P...............|
00000020  1f 09 00 00 00 00 02 00  00 00 00 04 ff ff ff ff  |................|
00000030  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
00000040  28 31 98 5b d3 0e 05 00  00 00 00 00 00 00 00 00  |(1.[............|
00000050  00 00 00 00 00 00 00 00  64 00 00 00 00 00 10 00  |........d.......|
00000060  00 ff ff ff ff 00 00 00  00 03 01 0d 03 01 0d 01  |................|
00000070  00 00 00 00 0c 00 01 02  00 00 00 00 00 ff ff ff  |................|
00000080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000180  00 00 20 00 00 00 ff ff  ff ff 01 00 00 0c 00 00  |.. .............|
00000190  04 00 00 00 02 00 00 04  00 00 00 00 00 00 ff ff  |................|
000001a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  |................|
*
00000200  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|

我需要更改以下内容:

00000060  00 ff ff ff ff 00 00 00  00 03 01 0d 03 01 0d 01  |................|
00000070  00 00 00 00 0c 00 01 02  00 00 00 00 00 ff ff ff  |................|

到(并重写回同一个文件):

00000060  00 ff ff ff ff 00 00 00  00 03 01 0d 03 01 0d 02  |................|
00000070  01 00 00 00 0c 00 01 02  00 00 00 00 00 ff ff ff  |................|

就像我说过的,我有一些命令:hexdump、od、vi、nano、awk、sed、python。浏览互联网,许多解决方案需要第三方安装或使用“xxd”。两个我都不能用。

有什么建议么?

谢谢!

4

1 回答 1

3

我不认为用 sed 或 awk 尝试这个是一个理智的想法,所以我们坚持使用 python,它对于这项任务来说肯定足够强大。我在考虑这些方面:

#!/usr/bin/python

# open file in binary mode for reading and writing    
f = open("block.bin", "r+b")

# seek to position and read two bytes
f.seek(0x6f)
data = f.read(2)

# seek to position again
f.seek(0x6f)

# and write the transformed characters back
for d in data:
    f.write(chr(ord(d) + 1))

f.close()
于 2015-02-12T16:40:15.800 回答