sábado, 5 de septiembre de 2009

PyCon 2009 Argentina! #2

Hola!,

Bueno, voy a seguir comentandoles un poco que fue lo que vi el segundo dia de conferencia de PyCon 2009 Argentina.

Bien temprano, nos desayunamos una charla llamada: "Entendiendo Unicode" por Facundo Bastista. Basicamente, la charla hablaba de Unicode (cuac!), detallando un poco el contenido, podriamos decir que transitamos por lo problemas mas comunes que un programador encuentra a la hora de tener diferentes codificaciones y basicamente lo que recomendaba Facundo era que almacenemos siempre nuestros datos en unicode, cuando los necesitemos los decodifiquemos, trabajemos con ellos y posteriormente los volvamos a codificar antes de guardarlos, de esta manera evitamos problemas de recibir datos en una codificacion y terminemos guardandolos en otra y asi luego nos perdamos entre tantas codificaciones. Obviamente, estuvo mostrando los modulos standards que nos provee python para trabajar con Unicode.

La segunda charla del dia fue la llamada: "PyQt + wxPython + PyGTK" por Roberto Alsina y Cia. En esta charla se discutieron los diferentes aspectos de cada uno de estos paquetes para desarrollar aplicaciones basadas en GUIs. Basicamente se hablo de PyGTK y sus bondades, wxPython y su flexibilidad y PyQt y su madurez. No fue una charla en la cual cada uno intentaba de convencernos que usemos su toolkit preferido sino simplemente contarnos que es lo que cada uno trae y nos permite desarrollar, luego queda a criterio del programador cual utilizar. A mi, particularmente, me gusta mucho wxPython asi que les recomiendo ese. Por que wxPython? basicamente lo que me convencio fue la facilidad para aprender a programar con el y su completa API, posee la mayoria de los widgets modernos y permite manipularlos de una manera muy sencilla. Vale aclarar que cada uno de estos toolkits es cross platform.

La tercera charla a la que asisti fue: "from wiimote import fun" por Juan Manuel Schilliaci y Hector Sanchez, una charla dedicada a wiimote y Python.

La charla se baso en un par de scripts y experimientos que se hicieron utilizando el wiimote y Python. Los muchachos realizaron varias demos entre las que recuerdo que se utilizo el wiimote como control remoto de un media player asi como el control remoto de un auto. Tambien, se programo un script para poder utilizar el wiimote como un instrumento utilizando Oxygen, y ademas tenian un script que permitia utilizar el wiimote para juegos realizados con PyGame.

La cuarta charla tuvo que ver con "Taint Mode en Python" por Juan Jose Conti.

Esta charla se basaba en un proyecto nuevo dedicado a encontrar bugs en la etapa de desarrollo del software mediante variables manchadas. Una variable manchada basicamente es una variable que contiene un input malicioso y puede terminar generando un error en nuestro programa. Juan nos comento diferentes tecnicas para poder marcar este tipo de variables y poder informarle al usuario de estos posibles fallos y asi corregirlos antes de que el software sea puesto en produccion.

La quinta charla, "Twisted para seres humanos" por Lucio Torre, tuvo que ver, obviamente, con Twisted, es un completo engine para desarrollar aplicaciones de red, como por ejemplo, un servidor web. Basicamente, presento este proyecto como una alternativa a la hora de trabajar con multi procesos y multi threads para poder atender miles de peticiones concurrentes. La API de Twisted presenta un par de funciones mediante las cuales pueden atenderse miles de peticiones concurrentes con muy pocos recursos.

La sexta y ultima charla a la cual asisti el dia sabado fue "Behind the scenes: Python bytecode" por Matias Bordese. Fue una de las charlas que mas esperaba cuando vi el cronograma y sin duda fue la que mas me gusto y tuvo que ver con el trabajo que hago. Basicamente, Matias, nos estuvo explicando como es que funciona python desde adentro, su byte code, como la vm los interpreta, como reconstruir un programa a partir de su byte code (como obtener su codigo fuente), como escribir un programa directamente utilizando el byte code y un pequeño ejemplo de RCE sobre un crackme para resolverlo utilizando justamente solo el byte code de python.

Luego de esto, hubos una hora de charlas relampago y una plenaria dicatada por Colin Winter, llamada "Unladen Swallow", pero ya habia sido demasiado para mi por un fin de semana, casi 18 horas en la semana de Python habia agotado mi cerebro :P

En conclusion puedo decir que para ser la primera vez que se da una conferencia de Python en español, fue excelente!, solo eso!. Ademas, esta conferencia fue pure Python Argentina!, made in Argentina asi que eso me alegra mas aun!.

Hasta el proximo post!.

6 comentarios:

Yibam desde MAdrid dijo...

Muchas gracias por tu informacion !!!!

Espero que salgan papers !!!

Muy bueno ...

Juanjo Conti dijo...

y? te gustó mi charla? Si a alguien le interesa, puede repasarla en http://www.juanjoconti.com.ar/2009/09/07/charla-taint-mode-en-python/

+NCR/CRC! [ReVeRsEr] dijo...

Hola Juan!, si, estuvo buena!, no sabia que existia esto de las variables manchadas y con tu charla lo aprendi. Tampoco sabia que habia un modulo para identificar dichas variablas. Ahora, una pregunta? que onda con los buffer overflows? tenes pensado hacer algo con eso? porque en la charla vi que comentastes sobre variables manchadas que afectan a sumideros sensibles (se me pego esa frase) a XSS, SQLi, pero no recuerdo haber escuchado nada de buffer overflows (digamos, stack overflows, heap overflows, command injections, format strings, etc).

Alguna idea de incluir algo asi?.

Juanjo Conti dijo...

Buffer overflow, y los otros tipos de vulnerabilidades que mencionás caen en el mismo grupo que XSS y SQLi: improper input validation.

Buffer overflow es muy común que programas escritos en lenguajes que acceden directamente a la memoria de la computadora, como C.

En programas escritos en Python, esto no pasa. Lo que pasa es que el intérprete de Python, CPython, está escrito en C y este SI puede tener vulnerabilidades de bufer overflow.

Mi módulo apunta a detectar vulnerabilidades de improper input validation en programas escritos en Python. Fuera de lo anterior, el módulo es muy flexible y si dentro de tu programa detectás un sumidero sensible a buffer overflow (que termine sonando al intérprete) podés agregar algo como BO a la lista KEYS y usarlo.

+NCR/CRC! [ReVeRsEr] dijo...

si, justamente por eso preguntaba, porque por ahi tenias idea de extenderlo para que ademas de detectar cosas en python, lo haga en otros lenguajes, no se, C/C++.

James dijo...

Some people want s to travel alone and some with their love ones, here's a perfect place for singles and couples to stay when you visit Argentina.




Hostels in El Chalten