[pyar] HelloWorld ofuscado

Pablo Ziliani pablo en kultroom.com
Mar Jul 6 22:13:45 ART 2010


Juan M. wrote:
> phrase = ['0x48', '0x4F', '0x4C', '0x41', '0x20', '0x4D', '0x55',
> '0x4E', '0x44', '0x4F']
> for h in phrase:
>  print chr(int(h,16)),
>
> es un "helloworld" ofuscado, como podrán apreciar, entonces:
> 1) se pueden expresar caracteres mediante valores (hexadecimales?)?
>   

int() convierte un objeto a entero. Si el objeto es una string, el 
segundo argumento permite especificar la base en la que fue expresado. 
En el ejemplo que pasaste, las strings de la lista incluyen 
innecesariamente el prefijo "0x". La primera linea podría haber sido:

 >>> phrase =  ['48', '4F', '4C', '41', '20', '4D', '55', '4E', '44', '4F']

sin que cambie el resultado del int() con base explícita posterior. Otra 
opción hubiera sido usar enteros (de verdad) en lugar de strings:

 >>> phrase = [0x48, 0x4F, 0x4C, 0x41, 0x20, 0x4D, 0x55, 0x4E, 0x44, 0x4F]

(fijate que no tiene las comillas de las strings). En este caso el 
prefijo 0x sirve para que el intérprete entienda que el número está 
expresado de manera hexadecimal. De esta forma, la conversión mediante 
int() es innecesaria (ya es un entero). Todas estas son formas 
equivalentes de expresar el mismo objeto (entero):

 >>> 65
65
 >>> 0101
65
 >>> 0x41
65
 >>> 0b1000001
65

> 2) Notese que el identado es reconocido teniendo un (1) espacio
> solamente, en lugar de los clásicos cuatro o simplemente un TAB...
>   

Cosas como estas y muchas más están muy bien explicadas y dejan de 
sorprenderte una vez que lees el tutorial o alguna introducción a 
Python. Quizás te convenga empezar por acá: 
http://python.org.ar/pyar/Tutorial


> Obviamente, si se quisiera trabajar en un proyecto con python, no es muy
> conveniente ofuscar así el código,

en cambio si no trabajaras en un proyecto con Python, tampoco

> pero sería interesante al menos saber
> como hacerlo... alguna recomendación?

No hacerlo. Es perder tiempo y probablemente pasen dos cosas:
a) tu programa es intrascendente y el tiempo invertido en ofuscarlo lo 
perdiste en mejorarlo, o
b) tu programa cura el cancer y acaba con la guerra en Medio Oriente, 15 
minutos después de que lo distribuiste pensando en hacerte rico viene 
Carlín Calvo (el hacker) y lo desencriptó.

(normalmente es más a que b)

Claro que si te morís de ganas, con un par de keywords predecibles 
Google (http://www.google.com/search?q=obfuscate+python) dice que te des 
una vuelta por acá:
http://pawsense.com/python..obfuscator/



More information about the pyar mailing list