Python - decode('hex')
MRAB
python at mrabarnett.plus.com
Mon Feb 20 14:00:21 EST 2017
On 2017-02-20 17:55, Ganesh Pal wrote:
> Hello Python world,
>
> I am on Linux and Python 2.7 , I need some help to figure out what is
> going wrong in the below piece of code
>
> I am trying to replace seven bytes in the hexdumfile at a given offset
>
>
> Program 1 works fine
>
> #!/usr/bin/python
> from qa.utils.easy_popen import run
> import pdb
>
> def replace_hex(fname, offset, newdata):
> #pdb.set_trace()
> with open(fname, 'r+b') as f:
> #Show current contents
> f.seek(offset)
> stringdata = f.read(len(newdata))
> print 'Current data:'
> print '%08X: %s\n' % (offset, stringdata.encode('hex'))
>
> #Replace data at offset with newdata
> f.seek(offset)
> f.write(newdata)
There's no need to explicitly close the file because when you leave the
'with' statement, it'll close the file for you; that's why it's used!
> f.close()
It's best to unindent the following lines so that they're outside the
'with' statement (and the file will have been closed).
> #print the data
> cmd = 'hexdump -C %s' % (fname)
> print cmd
> out, err, ret = run(cmd)
> print "Hexdump file data for corrupting"
> print out, err, ret
> return fname
>
> fname = '/tmp/2017-02-20_08-42-22/file1.raw'
> offset = 0x1
> newdata = '64000101057804'.decode('hex')
>
> replace_hex(fname, offset, newdata)
>
>
> -200-1# python file_2.py
> Current data:
> 00000001: 6400010105789a
>
> hexdump -C /tmp/2017-02-20_08-42-22/file1.raw
> Hexdump file data for corrupting
> 00000000 06 64 00 01 01 05 78 04 73 1c ab 58 08 f9 8b 3b
> |.d....x.s..X...;| ==> Replaced
> 00000010 1e 00 a1 00 01 00 00 00 64 00 01 01 05 78 02 00
> |........d....x..|
>
[snip]
More information about the Python-list
mailing list