Cifrar, cifrar, cifrar…

Status

Tengo listo un notificador de correo Gmail para Gnome 3 que usa libnotify para mostrar las notificaciones. Ahora me toca ver que algoritmo puedo usar para cifrar las contraseñas de las cuentas que quiera recordar….

Tal vez me sirva usar Gnome Keyring de alguna forma, pero haría esta característica del programa poco portable si me lo llevo a otro entorno y/o sistema operativo.

Me pregunto cuan factible será usar RSA…

Si programas en C, que no se te olvide Valgrind

Me salvé por los pelos. Hace poco mas de un mes me preguntaron por mi proyecto y dije que lo tenía terminado. Tras unas pruebas me di cuenta algo tarde que mi proyecto tenía unas fallas, las cuales no tenía ni idea de a que se debían.

Eso fue hasta ayer por la noche. Había oído acerca de este programa antes así que me decidí a probarlo y a pasárselo a mi proyecto. Tras unos 10 posibles errores y uno crítico conseguí corregir un fallo de gestión de memoria que sin este programa me hubiese tirado aun otro par de semanas mas como mínimo. Valgrind es un programa que nos permite buscar fallos de gestión de memoria, buffer overflows, problemas con el heap, cualquier cosa. Eso si, es bastante tiquismiquis; os reportará mas de lo que debería ya que la mínima tontería saldrá en pantalla.

¿El fallo de memoria? Una chorrada como un castillo: una función que rompía una cadena de caracteres dado un separador, no reservaba espacio para el byte ‘\0′ (caracter nulo). Esto hacía que al principio no pasara nada, pero al momento que hacía de ejecutar el programa bastantes ciclos, escribía constantemente esos bytes fuera de la memoria reservada para ese buffer, y al momento en que tocase una de las otras cadenas con las que estaba trabajando, pues podía ocurrir de todo, ya os podéis imaginar.

Importando entradas desde un blog en facebook.

Acabo de hacer esto mismo con este blog, de esta forma cuando publique aquí mis artículos, serán a su vez difundidos vía mi cuenta de Facebook de forma pública. Esto se logra con la aplicación “Notas”, la desconocía hasta hace un momento, pero permite escribir entradas en tu perfil de Facebook de una manera más elaborada al estilo de un blog.

Entonces conociendo esta aplicación de Facebook lo que nos interesa para nuestro propósito es la opción de importar un blog en nuestras notas. Podemos acceder a esta opción abriendo cualquiera de nuestras notas existentes y en el panel izquierdo abajo encontraremos un enlace que dice “Editar la configuración de importación”. Una vez dentro solo tendremos que ingresar la dirección RSS de nuestro blog.

Grabar sonido en Ubuntu 10.04 mediante PulseAudio.

Si echas de menos la opción “Stereo Mix”, “Wave Out” o “Lo que estas escuchado” de las tarjetas de sonido Soundblaster, aquí te decimos que tienes que hacer para poder grabar el audio que esta sonando actualmente en tu PC. Solo necesitas del control de volumen de PulseAudio.

Como solucionar el problema en Ubuntu linux 10.04 lucid lynx usando Audacity y PulseAudio:

  1. Instalamos el control de volumen de PulseAudio con el siguiente comando en un terminal:

    sudo apt-get install pavucontrol

  2. Abre Audacity y entra en Preferencias, dentro del menú Editar (o pulsa CTRL + P.
  3. Ve a Dispositivos y selecciona en Reproducción y Grabación la opción “pulse”.
  4. Abre el control de volumen de PulseAudio y déjalo abierto.
  5. Ve de nuevo a Audacity y comienza la grabación.
  6. Mientras Audacity está grabando, abre de nuevo el control de volumen de PulseAudio y ve a la pestaña Grabación. Mostrará “Alsa plug-in Audacity. Alsa capture from” y un combo-box.
  7. Elije la opción “Monitor of internal audio…” si por ejemplo la tarjeta que reproduce sonido es la integrada en placa, si es otra aparecerá como “Monitor of X”, donde x la tarjeta de sonido.

Ahora si pruebas a reproducir música, Audacity debería estar capturando la señal de audio.

Bombas Fork

Hoy voy a hablar sobre las bombas fork. ¿Que es una “bomba fork”?

En linux tenemos una llamada del sistema que se llama fork. Esta función se dedica a realizar un copia exacta de el proceso que la llama en el mismo estado de ejecución en el que está ese proceso en ese preciso momento. Por tanto una bomba fork consiste en una llamada infinita a dicha llamada de sistema. Esto causa que a la hora de realizar un programa en bucle que se dedique a hacer copias de si mismo en memoria llegará a colapsar la lista de procesos que debe gestionar el sistema operativo, así como llenar la memoria RAM del sistema.

¿Como llevarlo a acabo?
Realizar este tipo de “Wabbit” es muy sencillo, como ya habeis podido intuir solo necesitais hacer esta llamada dentro de un bucle.

En C, esto estaría escrito así:

int main(){
while(1){
fork();
}
return 0;
}

También se puede hacer en otros lenguajes, como en los siguientes ejemplos.

BASH:

forkbomb(){ forkbomb|forkbomb & };forkbomb

Para windows también es posible realizar esto, de la siguiente forma usando batch:

:s
start %0
%0|%0
goto :s

En perl es como mas me gusta ^^:

fork while fork

Y como ultimo ejemplo, en python tampoco queda mal ^^:

import os

while True:
os.fork()

¿Como prevenirlo?
Pero, ¿es esto evitable?. La respuesta es si.
Si queremos evitar que nos gasten esta broma estaría bien limitar el número de procesos que un usuario puede ejecutar en el sistema. Así siempre llegaría a un limite y el equipo seguiría operativo.

En linux y bsd tenemos 2 formas de hacer esto.

Añade la siguiente linea a “/etc/security/limits.conf”:

hard nproc 200

Eso si tienes pam_limits activado, del lo contrario seria recomendable hacerlo de esta otra forma. En “/etc/profile.conf” añadir lo siguiente:

ulimit -u 200

Asus A52F: Preparandolo para ubuntu linux

En una entrada reciente hice una review de este modelo de portátil, el ASUS A52F del cual afirmé que funcionaba sin problemas en linux. Con el paso del tiempo descubrí que no era del todo así, existían pequeñas cosas que hacían que no funcionase al 100% bien. Con el ASUS 52F (y su hermano gemelo el K52) en ubuntu linux puedes encontrarte con problemas como que no se silencien los altavoces tras conectar auriculares, o que la hibernación y la suspensión simplemente no funcionen.

Menos mal que la comunidad de software libre no se esta quieta y un colaborador el cual posee el mismo modelo de portátil se ha encargado de arreglar todos los pequeños fallos que tenia la ejecución de linux en este portátil.
Continue reading

Nueva versión experiemental de Linux Mint

Los del proyecto Linux Mint han lanzado recientemente una distribución esta vez basada directamente en debian, al contrario que las anteriores releases que estaban basadas en ubuntu. Puede que estén buscando desarrollar aspectos en el sistema aún más personalizados y debido a eso ubuntu les queda demasiado complejo.

Por ahora es una versión beta experimental solo disponible para x86 (32BIT)

Podéis probarlo en: http://www.linuxmint.com/download_lmde.php

Linux en mi portatil: Cosas que nunca me faltan

Desde hace varios años que me volví un usuario de los sistemas operativos GNU/Linux. Personalmente uso ubuntu por ser la distribución que esta mejor preparada de antemano para ponerse a trabajar con el ordenador, aunque hay otras muy buenas, sobre todo las metadistribuciones como gentoo, las cuales si dispones algo de tiempo y de conocimientos puedes dejar un sistema operativo bastante personalizado y optimizado para tu ordenador.

Se me ha ocurrido de listar y comentar el software que siempre instalo y que considero esencial, tanto en mi sobremesa y mas aún en mi portátil.

GIMP

Parece tonto para los entendidos el mencionarlo, pero debe mencionarse ya que desde que canonical decidió retirarlo de los paquetes preinstalados a partir de la version 10.04, hay que instalarlo de los repositorios. Para el que no lo conozca, es el Photoshop del software libre. Al principio casi lo odiarás si usaste Photoshop con anterioridad, debido a ciertas diferencias, pero con el tiempo termina gustandote, y dandote cuenta que puedes hacer muchísimas cosas con él.

SHUTTER

Una utilidad muy muy práctica. Con él se pueden hacer capturas de pantalla de ventanas o zonas definidas por el usuario.

ECLIPSE

El IDE mas bestia que puedas encontrar para linux. Si eres programador y estas pensando en algún IDE que pueda hacerle sombra a Visual Studio, es este. Dispone de un sistema de repositorios que te servira para instalarle addons y plugins muy útiles. La única pega es que consume bastante RAM. Si tienes menos de 1GB de RAM no te sentirás muy cómodo trabajando con él.

POWERTOP

Esencial si quieres que tu batería dure igual que te dura en Windows. Solo funciona con procesadores Intel.

DOCKY

Esto lo instalé una vez para ver que tal se trabajaba con un Dock en vez de con la barra de tareas (igual que en MacOSX) y la verdad terminó por convencerme. Siempre lo tengo puesto. Útil instalarle los addons del indicador de clima y previsión del tiempo, y el notificador de Gmail.

UBUNTU TWEAK

Es una suite de utilidades para optimizar ubuntu y personalizarlo. Puede actuar para eliminar paquetes y archivos temporales innecesarios, kernels que ya no usas, y personalizar ciertos aspectos que sin esta utilidad, seria algo tedioso de hacer.

Y aparte de estos también instalo alguno que ya depende de Wine ( como spotify para windows, el de linux solo funciona para premium :@ ), el cual también tengo que instalar.

Pygame 1.9 aún no disponible para Python 2.7

Esta tarde estuve instalando una serie de programas de desarrollo y me encontré con este problema del que ya me percaté cierto tiempo atrás.

Y es que parece que los chicos de pygame van algo atrasados, pues ya han sacado a la luz la version de producción 2.7 de python y aun no hay un paquete msi para windows para esa versión de windows, lo mismo ocurre para las versiones de 64bits. Aunque estas ultimas no sean aun demasiado importantes, las de 32 bits para la ultima versión de python si me parece que urge.

Ya sabéis, si os encontrais con este mensaje al importar pygame: “ImportError: DLL load failed: The specified module could not be found.” Debéis instalar python 2.6.5 y pygame para 2.6.

Second Life podría ser mejor

Creo que si Second Life fuera algo más distribuido, tal como la World Wide Web lo es, tendría el éxito que no tiene. Second life tuvo un boom, tal vez debido al marketing que se hizo allá por 2006. Pero la idea de lo que es Second Life para mi sigue siendo muy buena. He visto últimamente  empresas montar sus negocios muy muy bien allí, pero hay varios aspectos que me hacen pensar que esa idea hubiese sido llevado a cabo mucho mejor por otra gente.

Lo que quiero realmente decir, es que una red de comunicación (ya lo llaméis metaverso, o segunda vida, al fin y al cabo es otra red de comunicación) tan ambiciosa como esa, no puede ser mantenida solamente por una empresa, hay que distribuir la red, tal y como he dicho, como la World Wide Web lo está sobre internet; es decir, no hay un servidor (o conjunto de servidores) donde te conectas y ahí están todas las páginas web, sino que hay varios servidores, los cuales los mantienen empresas diferentes y en ellos reside uno o varios sitios web, pero no todos.

Second life al ser un mundo 3D, tiene islas, porciones de terreno. Si imaginamos algo como 1 servidor = 1 porción de terreno (o mas de una, dependiendo de lo capaz del servidor y la conexión) podríamos tener tal vez, un acceso mas rápido a los contenidos de dicha red, la cual te puedes morir de esperar solo para moverte un poco si tu conexión esta algo lenta. Además daría mas libertades que las que se tienen en Second Life, donde lo permitido es lo que Linden labs considera.

Pienso que debería existir algo como esto, un sistema estandarizado, que cada uno adopta y lo va conectando a la red.