[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: How can I write a shell script to update one octet in binary file (like I do manually with hexedit program) ?



On Tuesday 02 December 2008 13:33, KLEIN Stéphane wrote:
> Hi,
>
> I need to update one octet in a binary file (it's disk image file
> raw).
>
> To do that, I use hexedit and I do update manualy.
>
> Now, I would like to script this task, I know address of octet to
> update and the new value.
>
> Do you know a tool to do that ?
> [...]

Hi,

this is an example.  Suppose you have the original file "orig":

  $ hexdump -v -x orig
  0000000  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000010  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000020  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000030  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000040  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000050  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000060  0e0e  0e0e
  0000064

and you want to apply some arbitrary length patch at some point in the 
file.  You have the following "patch" file, in this case 10 bytes:

  $ hexdump -v -x patch
  0000000  7a7a  7a7a  7a7a  7a7a  7a7a
  000000a

Now, with this command we insert the content of "patch" in "orig" at 
byte 20:

  $ dd if=patch bs=1 conv=notrunc of=orig seek=20 count=10
  10+0 records in
  10+0 records out
  10 bytes (10 B) copied, 7.8222e-05 seconds, 128 kB/s

And here is the result:
  $ hexdump -v -x orig
  0000000  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000010  0e0e  0e0e  7a7a  7a7a  7a7a  7a7a  7a7a  0e0e
  0000020  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000030  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000040  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000050  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e  0e0e
  0000060  0e0e  0e0e
  0000064

Best regards,


alfredo


Reply to: