Montando un sistema de descargas oculto ( 1 ): las bases

La idea era mostrar primero un posible escenario de control total de internet, pero se volvió demasiado post-apocalíptico. Na' , imaginaos simplemente que queremos distribuir eh...código fuente, pero sin que nadie se dé cuenta de que su servidor lo aloja. Una opción es utilizar algo conocido como esteganografía, como dice en la Wikipedia:
La esteganografía es la disciplina en la que se estudian y aplican
técnicas que permiten el ocultamiento de mensajes u objetos, dentro
de otros, llamados portadores, de modo que no se perciba su
existencia. Es una mezcla de artes y continue.

untagged

Resolviendo dominios .42 en un servidor BIND9 casero (DNS)

Pues nada, veamos como hacer que nuestro DNS casero resuelva direcciones con el TLD .42, si no sabes que es esto, mejor hechale un vistazo al proyecto https:// www.42registry.org/faq-es.php
"42 Registry es, principalmente, una experiencia como otras tantas de
las que abundan en Internet hoy en día. Es una organización sin
ánimo de lucro, orientada a proponer un TLD_(Dominio_de_Primer
Nivel) para agrupar a una comunidad concreta."

Voy a suponer una distro basada en Debian ( Ubuntu, Trisquel ... Debian... ), pero la idea es la misma para todos, solo hay que cambiar continue.

untagged

El juego de la vida con Processing [ Java ]

Pues nada, ahí va una implementación del juego_de_la_vida_de_Conway ( ejemplo clásico de automata celular ) hecho con processing [ http://pastebin.com/ MS6ACY4k ]

Lo único que hay que hacer para usar Processing es descargarlo y ejecutarlo.

Nota: en gnome parece que hace logout al user si no se quitan los efectos de ventanas ( Systema > Preferencias > Apariencia > Efectos visuales )

Una vez ejecutado solo hay que pegar el código en el editor y darle a "play".

Haz click en una "célula" para invertir su estado y pulsa un botón del teclado para reanudar/detener la simulación.

En cuanto a Processing, es ( según la web ) "un lenguaje continue.

untagged

GUI's en python con [ GTK | QT4 ] y [XML | HTML... ]

Hoy traigo una librería que aún no está acabada, pero puede que interese a la gente que no le guste complicarse lo más mínimo con las interfaces, pero que aún así le interese hacer unas GUI para los script [ guiml.zip ].

La idea es simple, le pasas un pedazo de HTML a la "librería" y esta selecciona el Toolkit disponible (por ahora solo soporta Gtk y Qt4, cuando le heche el guante a algo que tenga tk instalado lo añado ) hace una GUI basandose en eso, por ejemplo, para Simple test

Decide
Con Gtk: Con Qt4: No está completa y Qt4 es un peligro ( he visto cosas continue.

untagged

La curva del dragón con Logo

Nada, que después de encontrarse uno con que alguien se las arreglo para hacer este fractal con redcode [ http://impomatic.blogspot.com/2011/01/dragon-curve- in-redcode.html ] (para quitarse el sombrero, vaya :P !) no se puede menos que intentarlo en otro lenguaje, y a falta de poder tirar de los gráficos de tortuga el python por cosas de la vida, la siguiente opción es logo.

Realmente no tiene mucha complicación, la wikipedia nos da la_fórmula_lista para_programar, simplemente hay que hacer:

===============================================================================

G = B ^ (B >> 1)

===============================================================================

(El ^ es XOR y el>>1 es mover todos los bits una posición a la derecha). Y después hacer AND de este "G" y el NOT del continue.

untagged

Historias desde los confines de random()

Pues eso, hoy toca un script al estilo de cierto juego analógico, ese en el que hay que escribir una frase en un trozo de papel sabiendo sólo con que palabra empezar (última palabra que escribió la persona anterior) y pasarsela a la siguiente hasta que vuelva a la primera.

Lo que hace el script [ randomstories.zip ] es tomar un número cualquiera de palabras de una página de wikipedia, y repetir el proceso haciendo que la primera palabra encaje con la última hasta alcanzar el tamaño máximo del mensaje. El archivo que hay que ejecutar es randomstories.py .

El código es bastante lento... unos 10 min para continue.

untagged

Rompiendo captchas

Por cosas de la vida, últimamente ando trasteando con las arañas, crawleando cosas varias... y al final era inevitable toparse con los CAPTCHAs, así que se me ha presentado la ocasión de intentar vencerlos, por ahora esto es lo poco que he conseguido [ captcha_baker.py ], lo poco que hace el propio script es leer los pixels de la primera línea y pasar a blanco los que estén cerca de estos, y a negro el resto. Después corta las letras por las columnas en blanco.

El valor de la "cercanía" es modificable (de hecho la idea viene del parámetro "umbral" de la selección de color de GIMP).

Depende de continue.

untagged

Acelerenado `route`, `netstat` y parecidos [tip]

Los comandos de red como route, netstat, e incluso programas como nmap tienen la constumbre de intentar convertir las IP's en nombres de red después de realizar su función principal. Por muy útil que sea a veces, en otros momentos es excesivamente pesado, por ejemplo si utilizamos:

===============================================================================

netstat

Para descubrir las conexiones activas, después de obtenerlas intentará convertir las IP en nombres de red, y en muchos normales no resultará en nada útil (seguramente acabe mostrando las IP o nombres genéricos).

Estos mismos comandos suelen aceptar el flag -n que evita esa resolución, el cambio salta a la vista:

Hasta otra

untagged

Escaneando un servidor FTP

Para hacer una araña que explore un servidor FTP se puede aprovechar el_ftplib de_python... solo tiene un impedimento, que cuando se pide la lista de archivos en un directorio se devuelve por stdout, lo que es bastante molesto para algo como esto.

La solución más sencilla es substituir la salida estándar ( sys.stdout ) por un objeto que almacene los datos, el único método que hace falta en el objeto es objeto.write(string) , el que se usa para mostrar strings por la pantalla, esto puede servir:

class catcher():

def clean(self):

  self.trap = ""

def readlines(self):

  return self.trap.split("\n")

def readline(self):

  l = self.readlines()

  res = l.pop(0)

  self.trap 
continue.

untagged

Leyendo las cookies y logins de Firefox con Python y SQLite

Aprovecho la oportunidad para decir Felices navidad! / Bo nadal! / Merry christmas!

Ahora sí... recordemos que Firefox guardaba alguna información en forma de bases de datos SQLite (interesantes por el hecho de que no requiere un demonio externo, sino que toda la información lo maneja la librería sobre un archivo), veamos como hacer un script que nos muestre las cookies para dominios concretos.

Las cookies se guardan en el archivo "cookies.sqlite" en la carpeta del perfil del programa, un "file" confirma que es una base de datos sqlite3, se puede abrir con

=============================================================================== sqlite3 cookies.sqlite ===============================================================================

Veamos que tablas tiene

=============================================================================== sqlite> .table moz_cookies sqlite> ===============================================================================

Entonces solo hay una tabla, "moz_cookies", veamos como funciona

=============================================================================== sqlite> .schema moz_cookies CREATE TABLE continue.

untagged

Previous » « Next