查看二进制而不是十六进制

查看二进制而不是十六进制

Debian jess 64

我想知道是否可以以 00101000 形式查看文件的二进制文件并对其进行编辑,我可以查看它,但以十六进制形式查看,我希望以 8 位数形式查看和编辑它,我已经能够以正确的形式查看它,只是不编辑它,所以我相信这是可能的,

因此,这个故事的寓意是尝试以 8 位数形式查看二进制文件并对其进行编辑,而不是十六进制。

答案1

xxd,您可以使用该-b标志

echo 'hello world' | xxd -b

这将输出

0000000: 01101000 01100101 01101100 01101100 01101111 00100000  hello 
0000006: 01110111 01101111 01110010 01101100 01100100 00001010  world.

您可以将其重定向到一个可以编辑的文件

echo 'hello world' | xxd -b > dumped_bits.txt

进而,将列留在原处你可以用这个(虽然很hacky)脚本转换回来

#!/bin/bash
# name this file something like `bits_to_binary.sh`

# strip anything that's not a bit string like `0000000:` or `world`
bits=`sed -ze 's/\w*[^ 01]\w*//g' -e 's/ //g' -e 's/\n//' $1`

# and convert the bit representation to binary
printf "obase=16;ibase=2;${bits}\n" | bc | xxd -r -p

通过组合这些步骤,您可以

echo 'hello world' | xxd -b > dumped_bits.txt
# edit dumped_bits.txt
./bits_to_binary.sh dumped_bits.txt
# hooray! the binary output from the edited bits!

答案2

以二进制模式使用 vim:

vim -b filetohack.bin

相关内容