ASCII Art con Python [Actualizada]

[Actualizado, añadidos más caracteres y arreglado el problema con el unicode]

Hoy traigo algo curioso, un script que hace ASCII Art a partir de una frase cualquiera.

El script se puede descargar aquí [asciichars.py]

Los parámetros son ./asciichars.py [ -s ] [ ]

El espaciado es (obviamente) el espacio entre los caracteres, por defecto 8. Y la frase, lo que aparecera en el ASCII Art (si no se especifica, se pedirá durante la ejecución).

La verdad, no tengo muy claro como explicarlo :D, así que para muestra un botón ./asciichars.py -s 10 "#28" [http://2.bp.blogspot.com/_26RJWnubh-w/TC-NvUoIdsI/AAAAAAAAAK0/nbH_dWlPMXQ/ s1600/Pantallazo.png]

Los caracteres que hay son:

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

0 1 2 3 4 5 6 7 8 9 A B continue.

untagged

Instalando Granola en Trisquel

Actualización: desde que se escribió esto, cambairon algunas cosas (granola ahora usa licencias comerciales para "orgaizaciones" y cosas así, con lo que desconozco si se puede seguir considerando libre, que no gratuito )

Navengando por Linux_Hispano me encontre con un software que tiene muy buena pinta, Granola, completamente libre (gracias al canal #trisquel por responder esta duda) y dedicado al ahorro de energía. La instalación es bastante simple, el típico shellscript, pero no funciona del todo bien en esta distro, así que hay que hacer un par de apaños, intentando ejecutar el shellscript... [http://1.bp.blogspot.com/_26RJWnubh-w/TC5PZmQGFNI/AAAAAAAAAKk/RVPS7iDyHrk/ s320/Pantallazo.png] "Perdón, pero parece que estas utilizando una distribución o versión sin soporte" Si se busca el string en continue.

untagged

Un bot IRC

Aprovechando el PyIC escribí un bot que se une a un canal y responde a los típicos mensajes de "@loquesea" y "!loquesea", que están definidos en una base de datos SQLite3, la idea es algo así: Se crea un archivo SQLite3 (por defecto el nombre es "dbase.db", si quieres puedes cambiarlo en la línea 12) con 2 tablas, "talks" y "commands". La tabla "talks" tendría como mínimo 2 columnas, la primera es la palabra a la que responde, y la segunda, con lo que responde, por ejemplo, si la base de datos tiene esta fila:

=============================================================================== busca | http://www.lmgtfy.com/?q= ===============================================================================

El chat sería algo así

=============================================================================== : @busca loquesea < bot >: humano: http://www.lmgtfy.com/?q=loquesea ===============================================================================

La continue.

untagged

IRC con Python (PyIC)

Si quieres programar algo que use IRC en Python puedes hacerlo tu mismo con sockets, puedes usar una librería y programarlo_por_eventos_con_pyirclib , PyIRC ...

A la hora de ver este tema, buscaba algo que se encargase de las cosas que no son interesantes del IRC (PING-PONG's, parseado de mensajes) y que no sea orientado a eventos, pero que siguiese permitiendo hacer cosas "poco comunes", como hacer que un archivo que se nos ofreció por esta red lo descargue directamente un servidor FTP (para eso hace falta algo mas, que la librería que trae python no lo permite), pero...

A falta de algo ya escrito, se programa, y eso es continue.

untagged

Descargando una lista de webproxys

No ando con mucho tiempo para programar, asi que se me ocurrio hacer un pequeño script en python aprovechando el pycrawler para que descargue una lista de webproxies, el codigo no es gran cosa, pero funciona :)

Nota: la lista se descarga de proxy.org

Este es el codigo (o para descargar [proxylist.py])

!/usr/bin/env python

import pycrawler import sys if (len(sys.argv) > 1):     f = open(sys.argv[1],'w') else:     f = open(raw_input('Se guardara en: '),'w')

print "Descargando lista de proxy's..." c = pycrawler.crawler() site = c.crawlsite('proxy.org')

Se buscan los proxys en la pagina

for e in site.element_list:     if (e.tag_type == "option") and ('value' in e.property):         if ("." in e.property['value']):             print "->",e.property['value']             f.write(e.property['value']+"\n")

f.close()

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

Hasta otra

untagged

pyCrawler 0.2

Pues hay actualizacion del pyCrawler, los cambios son bastante significativos... y lo que es mas importante, ahora hace algo util! :D

El motivo fue que ultimamente aprovechaba el codigo del primer_pyCrawler para los scripts que usasen la web, pero no es que sea un codigo muy pythonico (de hecho es bastante malo y tiene algunos bugs), asi que aproveche para reescribirlo desde cero... no le doy mas vueltas:

  • Pasa de ser un script a ser mas bien una libreria
  • Pasa de administrar las conexiones a mano (con sockets) a hacerlo con urllib, que es estandar, y lo hace mucho mejor
  • Se limpio el codigo para hacerlo mas comprensible

Se puede continue.

untagged

Trasteando con Gambas

Ando trasteando con Gambas, que (a parte del marisco) como sabreis es un IDE/ compilador/lenguaje para programacion "visual" bajo GNU/linux, y que al parecer es bastante similar a Basic, y su nombre ya avisa de que "Gambas Almost Means Basic" (Gambas casi significa Basic)

Asi que para probar, monte un programilla que mostrara las temperaturas del pc [http://1.bp.blogspot.com/_26RJWnubh-w/TBa0bEdgr2I/AAAAAAAAAGM/DorL90LAL8c/ s320/Pantallazo-1.png]

El programilla no tiene mucha cosa (solo lee en /proc/acpi/thermal_zone/*/ temperature), asi que no me liare con eso... De la prueba saque algunas conclusiones sobre Gambas:
* Es sencillo si el objetivo es hacer un programa que se base mucho en la
interfaz grafica
continue.

untagged

Fortunes con javascript y perl

¿Quien no conoce las miticas frases que suelen salir cuando se hace login en un sistema? (al menos en Slackware), tambien conocidas como Galletas de la suerte, fortunes, o algo asi...

¿Seria curioso poder usarlas tambien en una pagina web y que cada vez que carge la pagina salga una diferente, no?, pues no es demasiado dificil. Si las instalaste " sudo apt-get install fortune " puedes encontrar varias en /usr/ share/games/fortunes/ , el formato que siguen es bastante sencillo, es texto plano, separando una "galleta" de otra con una linea con solo un %, seria algo asi:

Frase nº 1 % Frase nº 2 % Frase nº 3 ...

Siendo tan sencillo el formato, continue.

untagged

Introduccion a la criptografia, con Python: ElGamal (V -1 )

Y vamos por la quinta parte de Introduccion a la criptografia, se dividira en dos porque ya que hablamos de cifrado asimetrico vale la pena ver un cifrado/ descifrado y un algoritmo de firma/comprobacion, el problema es que si bien ElGamal cumple perfectamente su parte en lo primero, no tiene un esquema de firmado con el que comparta la generacion de claves (tambien hay un algoritmo de firma ElGamal, pero no es el mismo, y ademas no se considera del todo seguro), asi que ademas veremos un esquema de solo firma ( DSA ) en la segunda parte. Sin mas espera...

¿Que es ElGamal?

El procedimiento de cifrado/descifrado ElGamal se 
continue.

untagged

Probando shellcodes

Pues hoy vengo con poca cosa, andaba escribiendo algo para pasar el rato... un programilla para probar shellcodes ¿porque no?

Y este es el resultado [ shellcode_tester.c ] o al final coloreado con Pygments

La compilacion es simple, solo hay que hacer gcc shellcode_tester.c -o shellcode_tester

Las opciones al lanzarlo son: ./shellcode_tester [-nv] [-nw] [-nr] [-f ] -nv: No verbose (no se imprimira nada por pantalla)[--no-verbose] -nw: No write (no se permitira escribir en la memoria del shellcode)[--no- write] -nr: No read (no se permitira leer la memoria del shellcode)[--no-read] -f: Introduce el shellcode a traves de un archivo

Mas o menos, usarlo seria algo asi: kenkeiras@viaxante:~/%%%%%$ ./shellcode_tester Shellcode Tester

Introduce el shellcode: \x31\xdb\x8d\x43\x17\xcd\x80\x31\xd2\x52\x68\x6e\x2f\x73\x68\x68\x2f\x2f\x62\x69\x89\xe3\x52\x53\x89\xe1\x8d\x42\x0b\xcd\x80\x31\xc0\x40\xcd\x80

Ejecutando Shellcode... [36] $ continue.

untagged

Previous » « Next