[AYUDA][PYTHON] Leer y guardar archivos .exe de forma hexadecimal en python???

Iniciado por Noxware, 20 Agosto 2014, 21:37 PM

0 Miembros y 1 Visitante están viendo este tema.

Noxware

Hola, yo uso el famoso editor de codigo llamado "Sublime Text" y como sabran si abres un archivo .exe con sublime text te sale algo como...


b800 0000 0000 0000 4000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 f800 0000
0e1f ba0e 00b4 09cd 21b8 014c cd21 5468
6973 2070 726f 6772 616d 2063 616e 6e6f
7420 6265 2072 756e 2069 6e20 444f 5320
6d6f 6465 2e0d 0d0a 2400 0000 0000 0000
6e1f 984b 2a7e f618 2a7e f618 2a7e f618
3976 9f18 287e f618 2f72 9618 287e f618
2f72 f918 317e f618 3976 ab18 287e f618
d05d ef18 2e7e f618 a976 ab18 3b7e f618
2a7e f718 1a7f f618 2f72 a918 967e f618
c675 a818 2b7e f618 2f72 ac18 2b7e f618
5269 6368 2a7e f618 0000 0000 0000 0000
0000 0000 0000 0000 5045 0000 4c01 0400
862e 0152 0000 0000 0000 0000 e000 0f01


pero obviamente mas largo....

probe pasar este codigo hexadecimal a otro .exe y como resultado el otro exe funciono igual q el otro (en otras palabras copie el programa)......

me gustaria saber como se lee y escriben archivos .exe (o de cualquier tipo) en Python
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

Eleкtro

Todo lo que necesitas para leer/escribir bytes en un stream lo tienes en el módulo 'IO': https://docs.python.org/2/library/io.html

Ejemplo:
>>> f = open('/tmp/IMG_5982.JPG', 'rb')
>>> data = f.read(10)
>>> data
'\x00\x00II*\x00\x08\x00\x00\x00'


>>> data[2]
'I'


Las secuencias de Bytes en Python se representan como strings, como puedes ver.

Pero puedes utilizar el método Ord() o Bin() para obtener una representación Decimal o Binaria respectivamente

>>> ord(data[2])
73

>>> hex(ord(data[2]))
'0x49'

>>> bin(ord(data[2]))
'0b1001001'


Tienes muchos ejemplos de todo ello en Google.

Saludos!








Noxware

hola Elektro, gracias... esto era lo q buscaba desde hace meses xD!!! ahora... como se modifica y reescribe ese codigo en otro archivo o en el mismo??? y como se hace para representar al reves (de decimal a string)
"La mejor forma de conocer a una persona es viendo su código... o en una partida de ajedrez...

PD: Si no tengo faltas de ortografía es porque use el autocorrector."

Eleкtro

Cita de: francoyo1998 en 21 Agosto 2014, 19:48 PM
como se hace para representar al reves (de decimal a string)

Creo que lo que buscas es la función Chr(): https://docs.python.org/2/library/functions.html#chr, o sino la función Str(): https://docs.python.org/2/library/functions.html#str

>>> f = open('File.txt', 'rb')
>>> data = f.read(1)
>>> print 'str: ' + str(ord(data[0]))
num : 97
>>> print 'char: ' + str(chr(ord(data[0])))
char: a
>>>


Cita de: francoyo1998 en 21 Agosto 2014, 19:48 PMcomo se modifica y reescribe ese codigo en otro archivo o en el mismo???

Aquí tienes ejemplos:

· http://stackoverflow.com/questions/16630789/python-writing-binary-files-bytes
· http://stackoverflow.com/questions/20955543/python-writing-binary
· http://stackoverflow.com/questions/17349918/python-write-string-of-bytes-to-file

Saludos