Generador de contraseñas fáciles de recordar [ Bash ]

Este código lee una página aleatoria de la Wikipedia y monta una contraseña a partir de las iniciales de las primeras palabras (aún soy muy torpe con bash, así que si encuentras algo que no se debería hacer así no dudes en avisar):

!/usr/bin/env bash

Escrito por kenkeiras bajo la WTFPL

chars=13 # Número de caracteres en la contraseña

Aquí va la url que te redirige a una página aleatoria

url="http://es.wikipedia.org/wiki/Especial:Aleatoria"

Se pide la página

text=wget "$url" -O -

lines=""

Se toman las líneas con

sustituyendo los espacios por "<" para que no los separe

for i in echo "$text"|grep "<p>"|sed "s/<[^>]*>//g"|sed "s/\ /</g";do

# Se reincorporan los espacios y se eliminan los corchetes

lines=echo $lines;echo "$i"|sed "s/\[[^\]]\]//g"|sed "s/</\ /g"

done

Se leen solo el número de palabras seleccionado

x=0

words=""

for i in $lines;do

if [ $x -ge $chars ];then

    break

fi

words=`echo $words;echo $i`

x=$(( $x + 1 ))

done

Se muestran las iniciales coloreadas

Algoritmo de factorización casero

Hay veces que uno empieza a programar sin rumbo y acaba con algo medianamente útil, este es uno de esos casos. Resulta que en el tren se me ocurrió "diseñar" un algoritmo de factorización para números grandes ( muuuuy grandes :P ) que funcionara como los test de primalidad de Fermat y Rabin- Miller es decir, confiando en que /dev/random guíe al programa por la senda adecuada.

Pero como el que escribe sabe poco ( o menos ! ) de matemáticas y no había ganas de documentarse sobre los otros test, pues todo acabó con un algoritmo chorra sin ninguna base real, así que: 1. 2. Puede encontrar los factores... o no 3. 4. No siempre encuentra a la primera los factores primos, de hecho no encuentra siempre los mismos factores, alguna vez unos otra vez otros ( eso sí, todos correctos ), se puede descomponer del todo aplicandolo de forma recursiva hasta que sean lo suficientemente pequeños para aplicar una factorización lineal. 5.

Monitoreando la IP pública

Esta es una de esas ideas que surgen en un momento simplemente por ver una captura de algo que casi cumple una necesidad que no te habías dado cuenta de que tenías ( y que no tendrías de no haberlo visto xD ), pero que necesita algo de pulido. La base es esta [ http://blog.joaomoreno.com/ip-growl/ ], pero en mi opinión sería más útil que la IP mostrada fuera la IP pública ( la que te localiza en todo Internet ) y que de paso pudiera funcionar continuamente, mostrando la IP solo cuando cambiara.

La primera parte, mostrar la IP pública se puede hacer fácilmente con este script: curl http://checkip.dyndns.org/|sed "s/[\<>\/A-Za-z\:\ ]//g"

Para más variedad, en Freesoftwareando recopilaron_unos_cuantos.

Para mostrarlo como notificación solo hay que pasarselo a notify-send: ip=curl http://checkip.dyndns.org/|sed "s/[\<\>\/A-Za-z\:\ ]//g"

notify-send "IP monitor" "$ip"

Modificando `wardrive-android`

Bueno, pues aquí estamos, reestrenando blog :D

La aplicación Wardrive de android es una excelente herramienta para mapear redes con el móvil, que además está liberada bajo la licencia GNU GPLv3, en este post veremos como añadirle la opción de enviar la base de datos a un servidor web remoto.

Captura de la aplicación tomada del_repositorio

Lo primero que tenemos que hacer es descargar el código fuente, con svn checkout http://wardrive-android.googlecode.com/svn/trunk/ wardrive- android-read-only

Una vez hecho esto, lo abrimos con el IDE que prefiramos ( no me pararé a explicar como instalar los complementos para desarrollar para Android, se puede encontrar con una simple búsqueda ).

Como hacer las imagenes que ponen ip, navegador...

Para esto necesitaremos un servidor HTTP ( como apache ) y PHP, las dos cosas es lo tipico que se encuentra en un hosting gratuito ( aqui hay una lista )

Si lo vamos a alojar nosotros mismos necesitaremos habilitar el paquete php-gd para esto edita el php.ini, descomenta la linea de ";extension=php_gd2.dll" (quitale el ';'... en algunos casos es un '#') En debian/ubuntu se hace con "sudo apt-get install php5-gd"

Vamos alla...

Buscamos una imagen, la imagen sera la base, conviene que sea lo mas uniforme posible para que quede bien, yo escogí esta, aun que no sea la mas apropiada

Preparamos el codigo en PHP

El siguiente codigo es el que escribira en la imagen

Como funciona? (Para l@s que no les guste leer los comentarios del codigo)

Se usan dos funciones (navegador y os), que buscan en la cadena del "User- Agent", alguna parte conocida (Firefox, MSIE, etc...), y que devuelven el navegador y el sistema operativo del usuario

El resto es PHP,

Un bot eliza para IRC

Bueno, pues me encontré en [ http://www.jezuk.co.uk/cgi-bin/view/software/ eliza ] un bot eliza programado en python que puede ser usado directamente o como módulo, así que traducido a español y con la_librería_de_IRC pues ya está listo un bot para hacer la gracia.

Todo junto aquí [ wilson.zip ]  (hay que ejecutar a wilson.py)

Conversación surrealista típica

Es una IA cutre, pero sirve para reirse un rato con algún despistado :P

Enfin eso es todo, se ve que faltan ideas, saludos

Suma y resta en Tubes [ desvarío ]

Por si alguien se pensaba que el intérprete_de_Tubes iba en broma (la elección del día quizá no fue la mejor xD), aquí va una pequeña calculadora (suma y resta módulo 4) [ http://pastebin.com/qrU4wWMT ]

Saludos

Intérprete de Tubes

Actualizado: el intérprete tenía un bug en una tabla, ya está
arreglado [ http://pastebin.com/1zQQD0a4 ]

El otro día, rondando por esolang.org me encontré con un lenguaje de esos que hay que probar, Tubes, donde la lógica del programa se escribe en forma de cañerías, por ejemplo, un bucle que va mostrando 012301230123...

 ◉◆
 ║║
▶┤│
 └┘

Pero había un problema, aún no había una implementación, así que hubo que ponerse manos a la obra, y de paso aprovechar para probar Python 3 que se maneja mejor que la versión 2 con las cadenas Unicode (todos los "dibujos" del código son unicode :P), este es el resultado[ http://pastebin.com/1zQQD0a4 ].

Como parámetro necesita el código a ejecutar, pero luce más si se le pasa la opción -d para que muestre el estado actual, se puede regular el retardo entre operaciones especificandolo después de -d (sinó no muestra el estado no hay retardo) y... eso es todo, chim pum!

Nos vemos

Internacionalizando un programa

Hoy veremos como hacer posible que se traduzca un programa a distintas lenguas ( internacionalización ), esto lo haremos con la librería gettext de GNU, para las pruebas usaré este hola mundo {hw.c}

include

int main(void){

printf("Hola, mundo!\n");

return 0;

}

Primero hay que incluir y añadir esto en el main

setlocale(LC_ALL, "");

bindtextdomain("helloworld", ".");

textdomain( "helloworld");

Hecho esto, buscamos todas las cadenas a traducira gettext mandandolas como parámetro (para proyectos grandes se suele usar _ como alias gettext ). Por ahora va más o menos así:

include

include

include

int main(void){

setlocale(LC_ALL, "");

bindtextdomain("helloworld", ".");

textdomain( "helloworld");

printf(gettext("Hola, mundo!\n"));

return 0;

}

Ahora una de dos, nos ponemos a lanzar comandos o automatizamos, optaremos por la segunda, así que a hacer un script: src=hw.c

binary=hw

pot=hw.pot

package_name=helloworld

mo=$package_name.mo

domain=helloworld

if [ -z "$1" ];then

gcc -o $binary $src

Evolvotron, un programa que hay que probar [offtopic]

Me voy a salir un poco de tema para recomendar un programa de "arte generativo", Evolvotron, lo que hace es mostrar al usuario unas imágenes de la que tiene que seleccionar una, así continuamente para encontrar con un algoritmo genético una imágen a gusto del usuario (requiere un poco de paciencia para cojerle el truco), la única parte mala es que según la web parece que no funciona en el SO de Microsoft (aunque es GPL y usa Qt y BOOST, no debería ser difícil portarlo).

Y con un poco de paciencia acabas con un wallpaper o con una galería como esta [ gigrafx_-_deviantart ]

Enfin, que si andais aburridos ya teneis que hacer :P

Newer posts Older posts