sábado, 24 de marzo de 2012

Packaging Apport Hooks

If you wanna write an apport hook, take a look at: Packaging apport hooks

Mmm... se me dificulta mucho estar traduciendo a Español las entradas que escribo en viajemotu y postearlas aqui. Creo que lo mejor será simplemente poner el titulo, y enlazarlo al blog que acabo de mencionar. Seguramente el motivo es que soy demasiado "lazy" para hacerlo o me parece muy tedioso.

En fin... quizas las entradas que sean bastante rapidas, las pondre aqui tambien. Si por algun motivo existe alguien alli afuera que quisiera ver las entradas en español, entonces podria considerar traducirlas.

Este redireccionamiento lo pondré en ingles la proxima vez. Cya!

viernes, 9 de marzo de 2012

pbuilder: Construir paquetes i386 en equipos x64

Lo maravilloso al momento de construir paquetes utilizando pbuilder, seria tener la facilidad de construir para arquitecturas i386 desde equipos x64. Pues es facil utilizando las ultimas versiones de pbuilder (no se desde cuando esto es posible).

Primero lo que debemos hacer es tener un sistema base para ambas arquitecturas, para contruirlas hacemos esto:
pbuider-dist precise i386 create

Y despues de que haya finalizado el proceso de instalacion, creamos un sistema base para x64 (como tengo un equipo x64, no es necesario especificar la arquitectura debido a que pbuilder descarga el sistema base con X aquitectura dependiendo de nuestro sistema):
pbuilder-dist precise create

Entonces, al momento de crear un paquete para i386, basta con hacer esto:
pbuider-dist precise i386 *.dsc

Para construir paquetes x64 no es necesario indicarla la arquitectura, ya que toma la que estamos utilizando:
pbuilder-dist precise *.dsc

Un tip bastante bueno.

Fuente

Recuperar (recover) passphrase gpg

Esta entrada solo es valida si tenemos una clara idea de lo que podria ser nuestra frase secreta de nuestra llave privada gpg. En mi caso, la olvide porque la ultima vez que la utilice fue para montar (de nuevo) el entorno de desarrollo para empaquetamiento en Ubuntu.

Desde ese dia no volvi a utilizar mi llave, pero hoy que queria firmar unos sources de paquetes para construirlos con pbuilder, resulta que la frase secreta no era correcta O_O!

Tengo una memoria bastante mala para la mayoria de las cosas que me parecen irrelevantes. Obviamente mi firma digital es super relevante, pero no la suelo utilizar (creo que este habito cambiara, empezare a firmir mis mails). Normalmente manejo por mucho, unas 4 contraseñas para mis diferentes actividades. Asi que tenia una idea de cual podria ser, pero estaba confundido.

Existe los brute forcers, que son aplicaciones de fuerza bruta que permiten crackear una contraseña, pero esto depende del tipo de contraseña y protocolo. Como es un tipo de crackeo offline, tenemos toda la vida para dejar al brute forcer a que pruebe hasta la ultima combinacion posible en nuestra llave, con el fin de llegar a la correcta. No quiero esperar una vida para recuperar mi llave xD

Algunos diran que el camino mas facil seria revocar la llave, y crear una nueva. Mi problema es que tengo cerca de 4 llaves publicas perdidas, no quiero una mas. Asi que sin tanta vuelta veamos de que manera podriamos recuperar nuestra frase secreta de nuestra llave gpg.

Como lo dije en un principio, para esta tecnica necesitamos tener nociones de nuestra clave, ya que esta herramienta no es un brute forcer como tal.

Les presento a rephrase. Una aplicacion que nos permite hacer fuerza bruta a nuestra llave gpg en base a un patron proporcionado por el usuario.. Este patron no es visible por motivos de seguridad, lo que recomendaria es escribirlo en un archivo, copiarlo y despues pegarlo en el prompt para que ingresemos el patron correctamente.

Su sintaxis es simple:
rephrase

Para obtener nuestra llave privada basta con hacer:
gpg --list-secrets-keys

Una vez hayamos ejecutado el comando anterior, entraremos al prompt que nos pedira ingresar un patron para comenzar el proceso. Ese patron esta muy bien explicado en el manual de la herramienta (man rephrase). Pero por ejemplo, si mi contraseña es "doctormalito" y no recuerdo si cambie algunas (pero no se cuales) bocales por mayusculas, y las consonantes por minusculas, entonces mi patron quedaria asi:
d(o|O)ct(o|O)rm(a|A)l(i|I)t(o|O)

Como veran las combinaciones estan encerradas en parentesis "()" y separadas por barras verticales "|". Si estamos en lo correcto, obtendremos "Passphrase found!" y una secuencia de numeros que indican cual de las posibles combinaciones forman nuestra frase secreta (esto lo hace con motivos de seguridad). Entonces, si nuestra contraseña era "doctOrmalIto", entonces el resultado sera este:
1 1 1 1 2 1 1 1 1 2 1 1
d o c t O r m a l I t o

Y de esta manera pude recuperar (en realidad recordar) mi frase secreta, y ya pude firmar los paquetes en los que estaba trabajando \\^_^//

English note: If you need this post to be writed in english, just leave a comment and I'll post it in english as well. Otherwise, you can use Google Translate.

sábado, 3 de marzo de 2012

Consultando paquetes y bugs en Debian con rmadison y reportbug

Esta es la primer entrada sobre Ubuntu Development orientada a aquellos que tengan un entorno de desarrollo funcionando y/o los interesados en la tematica.

Algunas notas rapidas sobre algunas herramientas que nos sirven al momento de consultar paquetes en debian. Uno de los casos mas comunes es el momento de querer arreglar un paquete en Ubuntu, ya que quizas este haya sido solucionado en debian. Por suerte tengo un ejemplo en el que trabaje hace un tiempo . El escenario es el siguiente.

El reporte del bug lo encontré en Ubuntu (Launchpad) y comence a solucionarlo, pero siguiendo las reglas busque algun tipo de reporte similar en Debian, y encontre un reporte del mismo problema.

Todos los paquetes en Ubuntu (o casi todos) son importados directamente de la version en desarrollo de Debian, lo que significa que los paquetes arreglados en Debian llegan felizmente a Ubuntu. Dependiendo del estado del ciclo de la version actual en desarrollo de Ubuntu, los paquetes seran importados (sincronizados) o no. Se hace una unica sincronizacion de manera automatizada (solo imaginen lo descumunal que ha de ser) y si se desea realizar sincronizaciones de paquetes posteriormente, se debe hacer de manera manual.

Algunos desarrolladores en Ubuntu, envian los parches a Debian, y una vez aceptados y aplicados en Debian, se hace manualmente una sincronizacion del paquete en Ubuntu. De esta manera, no solo Ubuntu se verá benefiada por el paquete corregido sino todas las distribuciones que importan sus paquetes desde Debian.

Por suerte, en mi caso el encargado de revistar mi trabajo (reviewer/sponsor) me dio la oportunidad de aplicar el cambio en Ubuntu utilizando el parche aplicado en Debian.

Espero se hagan una pequeña idea de como funciona la relacion Ubuntu-Debian. Dejemos la teoria.

Primero comencemos con rmadison. Esta utilidad, parte del paquete devscripts, nos permite consultar la existencia de paquetes en Debian y Ubuntu. Es una herramienta muy util y facil de utilizar. Veamos.

Si queremos consultar el paquete foo en Debian, hacemos:
rcart*ubuntu:~$ rmadison -u debian foo
rcart*ubuntu:~$

Como vemos, el paquete no existe. Ahora veamos uno que realmente existe: (acorte la salida para no distorcionar)
rcart*ubuntu:~$ rmadison -u debian pidgin
pidgin | 2.4.3-4lenny8 | lenny-security | source, amd64, arm, i386, powerpc, sparc
pidgin | 2.4.3-4lenny8 | lenny | source, alpha, amd64, arm, i386, ia64, powerpc
pidgin | 2.6.6-1~bpo50+1 | backports/lenny | source, hppa
pidgin | 2.7.3-1~bpo50+2 | backports/lenny | source, alpha, amd64, i386, powerpc
pidgin | 2.7.3-1+squeeze2 | squeeze | source, amd64, i386, kfreebsd-amd64
pidgin | 2.10.1-1 | wheezy | source, amd64, i386, kfreebsd-i386, powerpc
pidgin | 2.10.1-1 | sid | source, amd64, i386, kfreebsd-i386, powerpc
rcart*ubuntu:~$

El resultado es bastante claro. Nos muestra el paquete, la version en su rama respectiva y las arquitecturas (lo cual reduje) para las que esta disponible dicho paquete.

Ahora veamos como consultar bugs existentes en Debian.

Primero que nada, debo aclarar que el sistema que Debian utiliza para gestionar los reportes de bugs (Debian Bug Tracking System, BTS) esta diseñado para interactuar mediante correo electronico. Lo que significa que para reportar un bug debemos enviar un correo electronico al BTS, pero no hay por que asustarse, hay herramientas que nos permiten preparar el reporte facilmente ;D

reportbug es la utilidad que nos permite interactuar con el BTS de Debian. En Ubuntu, debemos utilizar la opcion -B debian para indicar que vamos a consultar en Debian, no en Ubuntu.

Normalmente utilizamos esta herramienta para enviar un nuevo reporte sobre un paquete en especifico. reportbug captura el estado del paquete y extrae cierta informacion del mismo para incluirla en el reporte. Pero que pasa si solo queremos consultar los reportes que contiene actualmente un paquete que no tenemos instalado? Utilizamos el argumento -I, el cual indica que no verifique si el paquete esta instalado.

Al momento de consultar los bugs de un paquete, nos pedira que escribamos un Asunto para ser incluido en el reporte, pero como solo estamos consultado, lo dejamos en blanco y presionamos Enter.

Veamos un ejemplo. Vamos a consultar los reportes contra el paquete... mmm... piding:
*** Welcome to reportbug. Use ? for help at prompts. ***
Note: bug reports are publicly archived (including the email address of the submitter).
Detected character set: UTF-8
Please change your locale if this is incorrect.

Using 'X' as your from address.
Please enter the version of the package this report applies to (blank OK)
>
Will send report to Debian (per request).
Querying Debian BTS for reports on pidgin (source)...
130 bug reports found:

Outstanding bugs -- Important bugs; Unclassified (5 bugs)
1) #535790 pidgin: CVE-2009-1889 denial-of-service
2) #563828 finch: GNT shortcuts do not work in Xterm
3) #578476 Crashes when a broken GStreamer plugin is installed
4) #584576 Pidgin randomly crashes
5) #594378 after suspend/resume cycle pidgin fill logs with gstreamer assertion

Outstanding bugs -- Normal bugs; Patch Available (1 bug)
6) #589631 pidgin-data: /etc/purple/prefs.xml is invalid xml
(1-6/130) Is the bug you found listed above [y|N|b|m|r|q|s|f|e|?]?

Si queremos ver en detalle un reporte, escribimos el numero del bug en cuestion, por ejemplo, para ver el primer reporte podemos escribir el numero 1, o 535790, el resultado es el mismo:
What do you want to do now? [N|x|o|r|b|e|q|?]? 1

Original report - #535790: pidgin: CVE-2009-1889 denial-of-service

From: "Michael S. Gilbert"
Date: Sat, 4 Jul 2009 23:42:26 -0400

Package: pidgin
Version: 2.4.3-4lenny2
Severity: important
Tags: security

Hi,
the following CVE (Common Vulnerabilities & Exposures) id was
published for pidgin.

CVE-2009-1889[0]:
| The OSCAR protocol implementation in Pidgin before 2.5.8 misinterprets
| the ICQWebMessage message type as the ICQSMS message type, which
| allows remote attackers to cause a denial of service (application
| crash) via a crafted ICQ web message that triggers allocation of a
| large amount of memory.

More info can be found in redhat bug [1]. Please coordinate with the
security team to prepare updates for the stable releases.

If you fix the vulnerability please also make sure to include the
CVE id in your changelog entry.

For further information see:

[0] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-1889
http://security-tracker.debian.net/tracker/CVE-2009-1889
[1]
(END)

Para salir presionamos q, y para terminar la consulta escribimos q y presionamos Enter.

En fin, dos herramientas indispensables al momento de trabajar con paquetes y reportes en Ubuntu. Espero les haya servido ;D

viernes, 2 de marzo de 2012

Drenaje de bateria en equipos Intel i3

Esto es algo fastidioso. La bateria en mi portatil tiene la capacidad de aguantar 4:30~ hrs de independecia. Con Ubuntu 11.10 dura casi 2:30 con un uso bastante pasivo. Es un asco.

El problema esta especificamente en el controlador de video en mi tarjeta integrada. Veamos la descripcion:
Processor: Intel® Core™ i3-2330M CPU @ 2.20GHz × 4 (<- Nicee!!! ;D) Graphics: Intel® Sandybridge Mobile





En las recientes versiones del kernel > 2.6.38, el controlador de video consume una gran cantidad del porcentaje de la bateria. La solucion es pasarle un parametro al kernel (que luego lo captura el driver de video) que hace que el contrador reduzca el consumo de energia, habilitando la caracteristica power-save de estas tarjetas de video. Es muy simple.

Editamos el archivo /etc/default/grub y agregamos el parametro i915.i915_enable_rc6=1 para habilitar esta caracteristica, quedando el archivo asi:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force i915.i915_enable_rc6=1"

Actualizamos el grub
sudo update-grub

Y con esto ganaremos casi 2 hrs mas de bateria. Nada mal }:P

Mas info: http://www.phoronix.com/scan.php?page=news_item&px=MTAwNjU