在将十六进制字符串传递给“xxd -r”以查看其二进制内容之前,如何将其修改为 LE 格式?

在将十六进制字符串传递给“xxd -r”以查看其二进制内容之前,如何将其修改为 LE 格式?

当以 LE 格式存储在内存中时,十六进制字符串0068732f6e69622f表示 ASCII 字符串。/bin/sh

是否有任何 Linux 实用程序可以获取十六进制字符串并将其反转为字节 ( 2f62696e2f736800),以便xxd -r -ps显示/bin/sh

$ echo -n 0068732f6e69622f | xxd -r -ps
hs/nib/

我已经研究过xxd -e,但不可能将其与以下内容一起使用-r

-e little-endian dump (incompatible with -ps,-i,-r).

答案1

$ echo 0068732f6e69622f | rev | dd conv=swab 2>/dev/null | xxd -r -p
/bin/sh
  • rev反转输入字符串:0068732f6e69622f->f22696e6f2378600
  • dd conv=swab 2>/dev/null交换每对字节并丢弃ddstderr 上的嘈杂输出:f2-> 2f, 26-> 62, ...

相关内容