Bash

在將十六進製字元串傳遞給“xxd -r”以查看其二進制內容之前,如何將其修改為 LE 格式?

  • January 27, 2021

十六進製字元串0068732f6e69622f表示 ASCII 字元串/bin/sh,當它以 LE 格式儲存在記憶體中時。

是否有任何 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).

$ 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, …

引用自:https://unix.stackexchange.com/questions/631239