28 marzo 2016

The Hacker's Playbook

Cuando leo libros técnicos me suelo encontrar tres clases de libros: aquellos que no te aportan nada nuevo, aquellos que son una mina de conocimientos y aquellos que aunque sólo arañan la superficie de los temas te aportan enlaces y referencias para seguir investigando. Creo que The Hacker's Playbook: Practical Guide to Penetration Testing"de Peter Kim se encuadra en la tercera categoría: su sola lectura no te convierte en un maestro del pentesting pero el estudio de todos los enlaces, referencias y recursos apuntados en el libro si que pueden ser un paso adelante muy grande para obtener dicha maestría.

El libro trata muchos temas aunque no profundamente: escaneos (web y de red), exploiting, elevación de privilegios, ataques de red (en redes cableadas e inalámbricas), ingeniería social, evasión de antivirus, password cracking, etc. Me parece que como texto introductorio está bien y me parece buena idea que se enfoque principalmente al uso de herramientas u "open source" o que al menos cuenten con una versión gratuita, sin embargo donde este libro sobresale es al enumerar recursos de la web donde profundizar en las materias tratadas. Hay una gran riqueza de enlaces y referencias a lo largo del libro, apuntando a cursos, tutoriales y, siendo esto muy importante, sitios donde practicar pentesting sin acabar con los GEOS llamando a tu puerta.

El texto está bien escrito y las explicaciones son concisas y fáciles de entender. El contenido está hábilmente estructurado y cubre casi todas las áreas del pentesting.

Teniendo en cuenta que no es un libro caro, su compra merece la pena y lo recomiendo para lectores con niveles introductorios y medios que quieran un rápido repaso del estado del arte del pentesting actual.

12 enero 2016

Functional Python Programming

Siempre quise saber de qué iba eso de la programación funcional, pero no me apetecía aprender un nuevo lenguaje para comprenderlo, al menos no por ahora. Por eso, cuando encontré un libro que trataba el tema desde el punto de vista de Python (Functional Python Programming de Steven Lott), no dudé en leérmelo.

Tras su lectura me di cuenta de que he estado usando un montón de principios de programación funcional sin ni siquiera saberlo: utilizar funciones cortas, no alterar estados externos desde el interior de las funciones, usar iteradores donde fuera posible, etc. Eso no significa que no aprendiese nada, por ejemplo me gustó bastante la parte que describía las posibilidades de la librería itertools, la cual no había utilizado hasta el momento.

También es cierto que incluye algunos consejos que no voy a seguir, como el de encadenar funciones. Al libro le gusta mucho el encadenamiento de funcione (pasar la llamada a una función como parámetro a otra), pero al hacerlo se crean líneas de código extremadamente largas y difíciles de leer que me parecen poco "pythonicas". Además, al libro le gusta mucho la recursión y ese es un concepto con el que no me siento cómodo y tampoco es que entendiese muy bien los ejemplos que aparecían en el libro sobre tail-optimization.

Con todo el libro es extenso, sistemático e incluye un montón de ejemplos por lo que creo que merece la pena leerlo aunque sea para quedarse con conceptos sueltos útiles para mejorar globalmente nuestro estilo de programación.