find and replace string in binary file
emile
emile at fenx.com
Tue Mar 4 19:13:00 EST 2014
On 03/04/2014 02:44 PM, Chris Angelico wrote:
> On Wed, Mar 5, 2014 at 12:18 AM, Peter Otten <__peter__ at web.de> wrote:
>> loial wrote:
>>
>>> How do I read a binary file, find/identify a character string and replace
>>> it with another character string and write out to another file?
>>>
>>> Its the finding of the string in a binary file that I am not clear on.
>>
>> That's not possible. You have to convert either binary to string or string
>> to binary before you can replace. Whatever you choose, you have to know the
>> encoding of the file.
>
> If it's actually a binary file (as in, an executable, or an image, or
> something), then the *file* won't have an encoding, so you'll need to
> know the encoding of the particular string you want and encode your
> string to bytes.
On 2.7 it's as easy as it sounds without having to think much about
encodings and such. I find it mostly just works.
emile at paj39:~$ which python
/usr/bin/python
emile at paj39:~$ python
Python 2.7.3 (default, Sep 26 2013, 16:38:10)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> image = open('/usr/bin/python','rb').read()
>>> image.find("""Type "help", "copyright", "credits" """)
1491592
>>> image = image[:1491592]+"Echo"+image[1491592+4:]
>>> open('/home/emile/pyecho','wb').write(image)
>>>
emile at paj39:~$ chmod a+x /home/emile/pyecho
emile at paj39:~$ /home/emile/pyecho
Python 2.7.3 (default, Sep 26 2013, 16:38:10)
[GCC 4.7.2] on linux2
Echo "help", "copyright", "credits" or "license" for more information.
YMMV,
Emile
More information about the Python-list
mailing list