Ale*_*der 10 embedded busybox hexdump
给定一个二进制文件,如何在安装了的最小系统上仅使用sed
和cut
等标准工具将其转换为十六进制字符串并返回busybox
?
这些工具不可用:
perl
python
xxd
(带有vim)gcc
hexdump
命令随附busybox
,但与随附的命令不同util-linux
。
我正在寻找将文件转换为十六进制字符串的脚本或命令,以及将其转换回二进制的相应脚本或命令。中间格式不必是十六进制,它可以是 base64 或其他格式。
这适用于磁盘空间有限的嵌入式设备。
Ale*_*der 13
这是我想出的(基于几个在线资源和一些实验)。
hex2bin
):#!/bin/sh
sed 's/\([0-9A-F]\{2\}\)/\\\\\\x\1/gI' "$1" | xargs printf
Run Code Online (Sandbox Code Playgroud)
bin2hex
):#!/bin/sh
hexdump -v -e '1/1 "%02x"' "$1"
Run Code Online (Sandbox Code Playgroud)
./bin2hex binary_file_1 | ./hex2bin - > binary_file_2
diff -s binary_file_1 binary_file_2
Run Code Online (Sandbox Code Playgroud)
这适用于busybox,但不幸的是,hex2bin 受到给定参数的最大长度的限制xargs
,因此此方法仅适用于小文件(在我的桌面系统上小于 32 KiB)。