Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swap or replace bytes in a binary file from command line

There already is a beautiful trick in this thread to write bytes to binary file at desired address with dd ,is there any way to swap bytes(e.g swap 0x00 and 0xFF), or replace bytes with common tools (such as dd)?

like image 799
janjin Avatar asked Mar 24 '26 10:03

janjin


1 Answers

Would you please try the following:

xxd -p input_file | fold -w2 | perl -pe 's/00/ff/ || s/ff/00/' | xxd -r -p > output_file
  • xxd -p file dumps the binary data file in continuous hexdump style.
  • fold -w2 wraps the input lines by every two characters (= every bytes).
  • perl -pe 's/00/ff/ || s/ff/00/' swaps 00 and ff in the input string. The || logic works as if .. else .. condition. Otherwise the input 00 is once converted to ff and immediately converted back to 00 again.
  • xxd -r -p is the reversed version of xxd -p which converts the input hexadecimal strings into binaries.
like image 117
tshiono Avatar answered Mar 26 '26 04:03

tshiono