<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Admin on Karpoke - Just Another Blog</title><link>http://karpoke.ignaciocano.com/categories/admin/</link><description>Recent content in Admin on Karpoke - Just Another Blog</description><generator>Hugo -- 0.159.0</generator><language>es</language><lastBuildDate>Tue, 30 Jan 2018 20:36:00 +0100</lastBuildDate><atom:link href="http://karpoke.ignaciocano.com/categories/admin/index.xml" rel="self" type="application/rss+xml"/><item><title>Recuperar un disco corrupto</title><link>http://karpoke.ignaciocano.com/2018/01/30/recuperar-un-disco-corrupto/</link><pubDate>Tue, 30 Jan 2018 20:36:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2018/01/30/recuperar-un-disco-corrupto/</guid><description>&lt;p&gt;Un par de comandos útiles para recuperar datos de un disco problemático.&lt;/p&gt;
&lt;p&gt;Para copiar el disco, mostrando una barra de progeso:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;dd if=/dev/sda | pv | dd of=/dev/sdb conv=noerror,sync
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Lanzamos &lt;code&gt;ddrescue&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ddrescue -d -r3 /dev/sda /dev/sdb output.log
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Actualizar nuestra IP en el panel de OpenDNS</title><link>http://karpoke.ignaciocano.com/2016/12/03/actualizar-nuestra-ip-en-el-panel-de-opendns/</link><pubDate>Sat, 03 Dec 2016 14:32:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2016/12/03/actualizar-nuestra-ip-en-el-panel-de-opendns/</guid><description>&lt;p&gt;Si estamos usando el servicio &lt;a href="https://signup.opendns.com/homefree/"&gt;OpenDNS Home&lt;/a&gt; y tenemos una IP dinámica,
podemos utilizar &lt;code&gt;ddclient&lt;/code&gt;, disponible en los repositorios, para actualizar
la IP registrada en dicho servicio cada vez que &lt;a href="https://support.opendns.com/hc/en-us/articles/227987727-Linux-IP-Updater-for-Dynamic-Networks"&gt;cambie nuestra IP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para ello, lo único que necesitamos es editar el fichero de configuración en
&lt;code&gt;/etc/ddclient.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;##
## OpenDNS.com account-configuration
##
use=web, web=myip.dnsomatic.com
ssl=yes
server=updates.opendns.com
protocol=dyndns2
login=username@example.com
password=opendns_password
opendns_network_label
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Los espacios en el nombre dado a la red se deben sustituir por guiones bajos
&amp;ldquo;_&amp;rdquo; y si la contraseña contiene caracteres especiales, se debe encerrar entre
comillas simples &amp;ldquo;&amp;rsquo;&amp;rdquo;.&lt;/p&gt;</description></item><item><title>Descargar archivos de zippyshare desde el terminal con plowshare</title><link>http://karpoke.ignaciocano.com/2016/11/26/descargar-archivos-de-zippyshare-desde-el-terminal-con-plowshare/</link><pubDate>Sat, 26 Nov 2016 23:56:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2016/11/26/descargar-archivos-de-zippyshare-desde-el-terminal-con-plowshare/</guid><description>&lt;p&gt;&lt;a href="https://github.com/mcrapet/plowshare"&gt;plowshare&lt;/a&gt; es una herramienta diseñada para descargar y subir
ficheros a los sitios de intercambio de ficheros más populares. Hace ya
un tiempo la podíamos usar para &lt;a href="http://karpoke.ignaciocano.com/2011/09/18/descargar-archivos-de-megaupload-desde-el-terminal-con-plowshare/"&gt;descargar archivos de Megaupload&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Primero, instalamos las dependencias:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install curl recode imagemagick tesseract-ocr-eng spidermonkey-bin rhino perlmagick aview
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Podemos descargar el código fuente desde el repositorio Git y compilarlo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git clone https://github.com/mcrapet/plowshare.git
$ cd plowshare
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Podemos instalarlo mediante &lt;code&gt;sudo make install&lt;/code&gt;, o si no tenemos privilegios de
root, podemos sobreescribir el prefijo &lt;code&gt;/usr&lt;/code&gt; con
&lt;code&gt;make install prefix=$home/local&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Servicio de SSH con Latch en Ubuntu</title><link>http://karpoke.ignaciocano.com/2015/03/22/servicio-de-ssh-con-latch-en-ubuntu/</link><pubDate>Sun, 22 Mar 2015 02:01:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2015/03/22/servicio-de-ssh-con-latch-en-ubuntu/</guid><description>&lt;p&gt;Mediante &lt;a href="https://latch.elevenpaths.com/"&gt;Latch&lt;/a&gt;, podemos añadir una capa extra de seguridad a nuestro
servicio SSH, limitando la ventana de tiempo durante la cual permitimos
iniciar sesión en el servidor.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Descargamos los paquetes que vamos a necesitar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install gcc make
$ sudo aptitude install libpam0g-dev libcurl4-gnutls-dev libssl-dev
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;(Si ya teníamos instalado el paquete &lt;code&gt;libcurl4-openssl-dev&lt;/code&gt;, podemos
usar éste en lugar de &lt;code&gt;libcurl4-gnutls-dev&lt;/code&gt;.)&lt;/p&gt;
&lt;p&gt;Descargamos el código de github y compilamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git clone https://github.com/ElevenPaths/latch-plugin-unix.git
$ cd latch-plugin-unix
$ ./configure prefix=/usr sysconfdir=/etc &amp;amp;&amp;amp; make &amp;amp;&amp;amp; sudo make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Antes de continuar, vamos al &lt;a href="https://latch.elevenpaths.com/www/developers/editapplication"&gt;área de desarrolladores&lt;/a&gt; y creamos una
cuenta para este servicio. Ahí obtenemos el identificador de aplicación
y la contraseña.&lt;/p&gt;</description></item><item><title>Solucionado el error «AttributeError: '_ssl._SSLSocket' object has no attribute 'issuer'» en Ubuntu Utopic Unicorn</title><link>http://karpoke.ignaciocano.com/2015/02/03/solucionado-el-error-attributeerror-_ssl-_sslsocket-object-has-no-attribute-issuer-en-ubuntu-utopic-unicorn/</link><pubDate>Tue, 03 Feb 2015 00:50:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2015/02/03/solucionado-el-error-attributeerror-_ssl-_sslsocket-object-has-no-attribute-issuer-en-ubuntu-utopic-unicorn/</guid><description>&lt;p&gt;Si al usar la librería de Python para XMPP nos aparece el error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Traceback (most recent call last):
File &amp;#34;./test_xmpp.py&amp;#34;, line 12, in
cl.connect()
File &amp;#34;/usr/lib/python2.7/dist-packages/xmpp/client.py&amp;#34;, line 205, in connect
while not self.TLS.starttls and self.Process(1): pass
File &amp;#34;/usr/lib/python2.7/dist-packages/xmpp/dispatcher.py&amp;#34;, line 303, in dispatch
handler[&amp;#39;func&amp;#39;](session,stanza)
File &amp;#34;/usr/lib/python2.7/dist-packages/xmpp/transports.py&amp;#34;, line 330, in StartTLSHandler
self._startSSL()
File &amp;#34;/usr/lib/python2.7/dist-packages/xmpp/transports.py&amp;#34;, line 309, in _startSSL
tcpsock._sslIssuer = tcpsock._sslObj.issuer()
AttributeError: &amp;#39;_ssl._SSLSocket&amp;#39; object has no attribute &amp;#39;issuer&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;parece que es debido a un &lt;a href="https://github.com/eventlet/eventlet/issues/124#issuecomment-68836258"&gt;fallo en dicha librería&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cifrar un directorio sincronizado en Mega con encfs</title><link>http://karpoke.ignaciocano.com/2015/01/28/cifrar-un-directorio-sincronizado-en-mega-con-encfs/</link><pubDate>Wed, 28 Jan 2015 23:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2015/01/28/cifrar-un-directorio-sincronizado-en-mega-con-encfs/</guid><description>&lt;p&gt;Ya tenemos cuenta en Mega y las &lt;a href="http://karpoke.ignaciocano.com/2015/01/27/megasync-y-megatools-para-acceder-a-mega-desde-ubuntu/"&gt;&lt;code&gt;megatools&lt;/code&gt; instaladas&lt;/a&gt;.
Ahora vamos a cifrar el directorio, pero en lugar de &lt;a href="http://karpoke.ignaciocano.com/2011/04/21/cifrar-el-contenido-de-dropbox/"&gt;utilizar &lt;code&gt;ecrypt&lt;/code&gt; tal como
hicimos con Dropbox&lt;/a&gt;,
esta vez usaremos &lt;code&gt;encfs&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Suponemos que tenemos dos directorios, &lt;code&gt;~/mega&lt;/code&gt; y &lt;code&gt;~/mega.enc&lt;/code&gt;.
Utilizaremos &lt;code&gt;encfs&lt;/code&gt;, disponible en los repositorios, para cifrar el
contenido del primero en el segundo, y compartir el segundo en Mega.&lt;/p&gt;
&lt;p&gt;Creamos el directorio en Mega:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ megamkdir /Root/mega.enc
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Montamos el directorio cifrado:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ encfs --reverse /home/user/mega /home/user/mega.enc
Creando nuevo volumen cifrado.
Por favor, elige una de las siguientes opciones:
pulsa &amp;#34;x&amp;#34; para modo experto de configuracion,
pulsa &amp;#34;p&amp;#34; para modo paranoia pre-configurado,
cualquier otra, o una linea vacia elegira el modo estandar.
?&amp;gt; x
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Seleccionado modo de configuración Manual.
Los siguientes algoritmos de cifrado estan disponibles:
1. AES : 16 byte block cipher
-- Soporta claves de longitud 128 hasta 256 bits
Soporta bloques de tamaño 64 hasta 4096 bytes
2. Blowfish : Cifrado por bloques de 8 bytes
-- Soporta claves de longitud 128 hasta 256 bits
Soporta bloques de tamaño 64 hasta 4096 bytes
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Teclee el numero correspondiente a su eleccion: 1
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Algoritmo seleccionado &amp;#34;AES&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Por favor, elige un tamaño de clave en bits. El cifrado que has elegido
soporta tamaños desde 128 a 256 bits en incrementos de 64 bits.
Por ejemplo:
128, 192, 256
Tamaño de clave seleccionada: 256
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Usando tamaño de clave de 256 bits
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Elige un tamaño de bloque en bytes. El cifrado que tu has elegido
soporta tamaños desde 64 a 4096 bytes en incrementos de 16.
O bien, pulsa Intro para elegir el tamaño por defecto (1024 bytes)
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Tamaño de bloque del sistema de ficheros: 4096
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Usando tamaño de clave de 4096 bits
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Los siguientes algoritmos de cifrado de nombres de archivo estan disponibles:
1. Block : Codificación en bloques, oculta tamaño de los nombres de fichero
2. Null : No encryption of filenames
3. Stream : Codificacion en canal, guarda nombres de fichero tan cortos como sea posible.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Teclee el numero correspondiente a su eleccion: 1
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Algoritmo seleccionado &amp;#34;Block&amp;#34;&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;--reverse especificado, no se está usando unique/chained IV
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Configuración finalizada. El sistema de ficheros a ser creado tiene
las siguientes propiedades:
Cifrado del sistema de ficheros: &amp;#34;ssl/aes&amp;#34;, versión 3:0:2
Codificacion del nombre de fichero: &amp;#34;nameio/block&amp;#34;, versión 3:0:1
Tamaño de la llave: 256 bytes
Tamaño de Bloque: 4096 bytes
Agujeros en archivos pasados a través del ciphertext.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Ahora tendrás que introducir una contraseña para tu sistema de ficheros.
Necesitaras recordar esta contraseña, dado que no hay absolutamente
ningún mecanismo de recuperación. Sin embargo, la contraseña puede ser cambiada
más tarde usando encfsctl.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Nueva contraseña Encfs:
Verifique la contraseña Encfs:
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si no queremos tener que introducir la contraseña cada vez que montemos
el directorio, podemos un comando que vuelque el contenido de un fichero
con dicha clave, por ejemplo &lt;code&gt;~/.encfs_passwd&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>MegaSync y Megatools para acceder a Mega desde Ubuntu</title><link>http://karpoke.ignaciocano.com/2015/01/27/megasync-y-megatools-para-acceder-a-mega-desde-ubuntu/</link><pubDate>Tue, 27 Jan 2015 21:43:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2015/01/27/megasync-y-megatools-para-acceder-a-mega-desde-ubuntu/</guid><description>&lt;p&gt;El servicio de almacenamiento en la nube de Mega ofrece hasta 50 GB de
espacio gratuito (10 GB de transferencia al mes), cifrado,
multiplataforma, con sincronizado selectivo y está disponible desde el
navegador. Con 50 GB da para guardar algunas copias de seguridad de
nuestros archivos, &lt;a href="http://karpoke.ignaciocano.com/2011/07/08/copia-de-seguridad-de-gmail-con-getmail/"&gt;correos&lt;/a&gt; o &lt;a href="http://karpoke.ignaciocano.com/2011/03/27/importar-un-volcado-de-datos-en-mysql/"&gt;bases de datos&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A continuación, veremos cómo instalar el cliente y acceder desde el
terminal de nuestro servidor.&lt;/p&gt;
&lt;h2 id="instalación-en-el-escritorio"&gt;Instalación en el escritorio&lt;/h2&gt;
&lt;p&gt;Aunque vayamos a instalarlo en el servidor, no he querido dejar de
comentar la instalación de escritorio, que es realmente sencilla.
Instalamos la librería &lt;code&gt;libcrypto++9&lt;/code&gt; desde los repositorios y, a
continuación, &lt;a href="https://mega.co.nz/#sync!linux"&gt;descargamos el paquete&lt;/a&gt;, en este caso para Ubuntu
Trusty Tahr 14.04 32 bits, y lo instalamos:&lt;/p&gt;</description></item><item><title>Solucionado el error «ImportError: cannot import name IncompleteRead» al ejecutar pip en Ubuntu Trusty Tahr 14.04</title><link>http://karpoke.ignaciocano.com/2015/01/02/solucionado-el-error-importerror-cannot-import-name-incompleteread-al-ejecutar-pip-en-ubuntu-trusty-tahr-14-04/</link><pubDate>Fri, 02 Jan 2015 13:02:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2015/01/02/solucionado-el-error-importerror-cannot-import-name-incompleteread-al-ejecutar-pip-en-ubuntu-trusty-tahr-14-04/</guid><description>&lt;p&gt;Si al ejecutar &lt;code&gt;pip&lt;/code&gt; nos encontramos con el siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Traceback (most recent call last):
File &amp;#34;/usr/bin/pip&amp;#34;, line 9, in
load_entry_point(&amp;#39;pip==1.5.4&amp;#39;, &amp;#39;console_scripts&amp;#39;, &amp;#39;pip&amp;#39;)()
File &amp;#34;/usr/local/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 352, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File &amp;#34;/usr/local/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 2307, in load_entry_point
return ep.load()
File &amp;#34;/usr/local/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 2021, in load
entry = __import__(self.module_name, globals(),globals(), [&amp;#39;__name__&amp;#39;])
File &amp;#34;/usr/lib/python2.7/dist-packages/pip/__init__.py&amp;#34;, line 11, in
from pip.vcs import git, mercurial, subversion, bazaar # noqa
File &amp;#34;/usr/lib/python2.7/dist-packages/pip/vcs/mercurial.py&amp;#34;, line 9, in
from pip.download import path_to_url
File &amp;#34;/usr/lib/python2.7/dist-packages/pip/download.py&amp;#34;, line 25, in
from requests.compat import IncompleteRead
ImportError: cannot import name IncompleteRead
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Parece ser debido a un &lt;a href="http://stackoverflow.com/a/27341847"&gt;problema entre el paquete &lt;code&gt;requests&lt;/code&gt; y &lt;code&gt;pip&lt;/code&gt;&lt;/a&gt;.
A partir de las &lt;a href="https://github.com/tweepy/tweepy/issues/501"&gt;versión 2.4.0&lt;/a&gt; de &lt;code&gt;requests&lt;/code&gt; se eliminó
&lt;code&gt;requests.compat.IncompleteRead&lt;/code&gt;. Sin embargo, las versiones de &lt;code&gt;pip&lt;/code&gt;
anteriores a &lt;a href="https://github.com/pypa/pip/blob/0dedf2b6f5adefcc29d3d295318a7ebc916fc822/pip/download.py"&gt;julio de 2014&lt;/a&gt; aún utilizan &lt;code&gt;IncompleteRead&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Recuperar el sistema tras borrar «/var/lib»</title><link>http://karpoke.ignaciocano.com/2014/12/26/recuperar-el-sistema-tras-borrar-varlib/</link><pubDate>Fri, 26 Dec 2014 21:37:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/12/26/recuperar-el-sistema-tras-borrar-varlib/</guid><description>&lt;p&gt;Si por casualidad acabamos ejecutando un &lt;code&gt;rm -fr /var/lib&lt;/code&gt;, tendremos un
pequeño problema. El directorio /var/lib está pensado para que los
programas instalados guarden información variable (ver &lt;code&gt;man hier&lt;/code&gt;).
Puestos a suponer, supongamos que esto es exactamente lo que acaba de
pasar, que aún no hemos reiniciado la máquina y que seguimos teniendo
acceso por SSH.&lt;/p&gt;
&lt;h2 id="copias-de-seguridad"&gt;Copias de seguridad&lt;/h2&gt;
&lt;p&gt;En este momento, ya es tarde para pensar en copias de seguridad si no
las habíamos hecho antes. Habrá información que hayamos perdido y que
sea imposible recuperar, por ejemplo, &lt;a href="http://dev.mysql.com/doc/refman/4.1/en/installation-layouts.html"&gt;las bases de datos MySQL&lt;/a&gt;.
Probablemente, perderemos información importante para los programas y es
posible que recuperar el sistema en lugar de reinstalar favorezca que
haya toda clase de errores extraños.&lt;/p&gt;</description></item><item><title>FrootVPN, servicio VPN anónimo y gratuito para Android y Ubuntu</title><link>http://karpoke.ignaciocano.com/2014/11/14/frootvpn-servicio-vpn-anonimo-y-gratuito-para-android-y-ubuntu/</link><pubDate>Fri, 14 Nov 2014 13:02:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/14/frootvpn-servicio-vpn-anonimo-y-gratuito-para-android-y-ubuntu/</guid><description>&lt;p&gt;&lt;a href="https://www.frootvpn.com/"&gt;FrootVPN&lt;/a&gt; es un servicio VPN que se anuncia enfocado a preservar la
privacidad y el anonimato, a la par que gratuito. Mediante el uso de un
servicio como éste, podremos conectarnos a Internet de forma segura y
anónima desde sitios que pudieran no serlo, por ejemplo, redes abiertas
que no usan cifrado, servicios que restringen el acceso por país, países
que censuran la libertad de expresión o el acceso a la cultura, etc.&lt;/p&gt;</description></item><item><title>Creando un dominio .onion (más o menos) personalizado</title><link>http://karpoke.ignaciocano.com/2014/11/14/creando-un-dominio-onion-mas-o-menos-personalizado/</link><pubDate>Fri, 14 Nov 2014 00:29:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/14/creando-un-dominio-onion-mas-o-menos-personalizado/</guid><description>&lt;p&gt;Hace unos días salió a la luz que Facebook estaba disponible a través de
un &lt;a href="https://lists.torproject.org/pipermail/tor-talk/2014-October/035413.html"&gt;dominio .onion&lt;/a&gt; en la red Tor.&lt;/p&gt;
&lt;p&gt;Las direcciones .onion se crean al aplicar una &lt;a href="https://gitweb.torproject.org/torspec.git?a=blob_plain;hb=HEAD;f=rend-spec.txt"&gt;codificación base32 a los primeros 80 bytes del hash SHA1 de la clave privada del servidor&lt;/a&gt;.
Sabiendo esto, crear una dirección que contenga palabras clave concretas
es cuestión de fuerza bruta y tiempo.&lt;/p&gt;
&lt;p&gt;Un programa que nos servirá para crear dominios que cumplan con nuestros
requisitos es &lt;a href="https://github.com/katmagic/Shallot"&gt;Shallot&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Solucionado el error «ImportError: No module named _sysconfigdata_nd» en Ubuntu</title><link>http://karpoke.ignaciocano.com/2014/11/13/solucionado-el-error-importerror-no-module-named-_sysconfigdata_nd-en-ubuntu/</link><pubDate>Thu, 13 Nov 2014 22:32:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/13/solucionado-el-error-importerror-no-module-named-_sysconfigdata_nd-en-ubuntu/</guid><description>&lt;p&gt;Si estando en un entorno virtual, nos encontramos con el error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;ImportError: No module named _sysconfigdata_nd
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Es debido a un &lt;a href="https://bugs.launchpad.net/ubuntu/+source/python2.7/+bug/1115466"&gt;conocido error en Ubuntu&lt;/a&gt;, por el cual dicho fichero
se encuentra en otra ubicación, en lugar de &lt;code&gt;/usr/lib/python2.7&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;En 32 bits:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ dpkg -S _sysconfigdata_nd.py
libpython2.7-minimal:i386: /usr/lib/python2.7/plat-i386-linux-gnu/_sysconfigdata_nd.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En 64 bits:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ dpkg -S _sysconfigdata_nd.py
libpython2.7-minimal:amd64: /usr/lib/python2.7/plat-x86_64-linux-gnu/_sysconfigdata_nd.py
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Una manera de evitarlo es crear un enlace simbólico:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cd /usr/lib/python2.7
$ sudo ln -s plat-*/_sysconfigdata_nd.py .
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Crear un repositorio de paquetes local</title><link>http://karpoke.ignaciocano.com/2014/11/12/crear-un-repositorio-de-paquetes-local/</link><pubDate>Wed, 12 Nov 2014 18:57:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/12/crear-un-repositorio-de-paquetes-local/</guid><description>&lt;p&gt;Al instalar algunos programas a partir del código fuente, tenemos la
opción de &lt;a href="http://karpoke.ignaciocano.com/2014/05/10/crear-paquetes-deb-con-checkinstall/"&gt;crear paquetes &lt;code&gt;.deb&lt;/code&gt; mediante &lt;code&gt;checkinstall&lt;/code&gt;&lt;/a&gt;, de tal forma
que nos sea más sencillo reinstalarlos, o instalarlos en otros equipos.&lt;/p&gt;
&lt;p&gt;La idea es crear un repositorio local que podamos acceder mediante
&lt;code&gt;apt-get&lt;/code&gt; o &lt;code&gt;aptitude&lt;/code&gt;, y así podemos delegar la instalación de
dependencias.&lt;/p&gt;
&lt;h2 id="directorio"&gt;Directorio&lt;/h2&gt;
&lt;p&gt;Si el número de paquetes es relativamente pequeño, de una misma
distribución, de una sola arquitectura, etc, lo único que necesitamos es
crear un listado de los paquetes disponibles y añadirlo como fuente en
el &lt;code&gt;sources.list&lt;/code&gt;. Si no es el caso, ya sea porque tenemos paquetes para
diferentes distribuciones o diferentes arquitecturas, deberemos
organizar los paquetes siguiendo una jerarquía concreta.&lt;/p&gt;</description></item><item><title>MiniDLNA en Ubuntu Trusty Tahr</title><link>http://karpoke.ignaciocano.com/2014/11/11/minidlna-en-ubuntu-trusty-tahr/</link><pubDate>Tue, 11 Nov 2014 15:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/11/minidlna-en-ubuntu-trusty-tahr/</guid><description>&lt;p&gt;DLNA define las especificaciones para compartir contenido multimedia
entre diferentes dispositivos mediante el uso de protocolos UPnP.
Instalaremos un servidor DLNA en Ubuntu Trusty Tahr, MiniDLNA (ahora se
llama ReadyMedia), que nos permitirá, por ejemplo, ver películas,
escuchar música o ver fotos en el portátil, el móvil o la televisión.
Actualmente, no se encuentra en los repositorios, así que lo
instalaremos a partir del código fuente. (Otra alternativa sería usar
algún repositorio PPA que ya contenga el paquete compilado.)&lt;/p&gt;</description></item><item><title>chmod sin chmod</title><link>http://karpoke.ignaciocano.com/2014/11/08/chmod-sin-chmod/</link><pubDate>Sat, 08 Nov 2014 19:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/08/chmod-sin-chmod/</guid><description>&lt;p&gt;Durante la desventura de pasar de 32 a 64 bits, tuve el placer de quedarme sin
poder ejecutar ningún binario, ya que estos se habían sobreescrito por sus
versiones compiladas para la arquitectura de 64 bits mientras aún continuaba
con la de 32.&lt;/p&gt;
&lt;p&gt;Ni &lt;code&gt;ls&lt;/code&gt;, ni &lt;code&gt;rm&lt;/code&gt;, ni &lt;code&gt;mv&lt;/code&gt;, ni &lt;code&gt;cp&lt;/code&gt;, ni &lt;code&gt;dpkg&lt;/code&gt;&amp;hellip; nada. Ni tampoco USB, ni
&lt;code&gt;ssh&lt;/code&gt;, y no podía reiniciar aún; un entorno idílico, vamos. El tema está en
que, en un momento dado, necesité hacer uso de las versiones compiladas para 32
bits. Pude descargar aquellos binarios que necesitaba, pero no tenían permisos
de ejecución y tampoco podía usar &lt;code&gt;/bin/chmod&lt;/code&gt;. Por suerte, ya había alguien
que se había imaginado un &lt;a href="http://www.slideshare.net/cog/chmod-x-chmod"&gt;escenario sin &lt;code&gt;chmod&lt;/code&gt;&lt;/a&gt; y había
recopilado toda una serie de alternativas. Ésta es la que yo usé:&lt;/p&gt;</description></item><item><title>Instalar el controlador libre para Broadcom BCM4312 en Ubuntu Trusty Thar</title><link>http://karpoke.ignaciocano.com/2014/11/07/instalar-el-controlador-libre-para-broadcom-bcm4312-en-ubuntu-trusty-thar/</link><pubDate>Fri, 07 Nov 2014 19:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/11/07/instalar-el-controlador-libre-para-broadcom-bcm4312-en-ubuntu-trusty-thar/</guid><description>&lt;p&gt;Al actualizar Ubuntu 14.04 de 32 a 64 bits, se eliminaron los
controladores de la tarjeta de red inalámbrica. Reinstalar el
controlador libre es sencillo. Antes que nada, necesitamos saber qué
chipset tiene, el identificador y qué módulo carga el kernel (si es que
tenemos algún controlador en uso):&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ lspci -vvnn | grep -A 9 Network
04:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)
Subsystem: Dell Wireless 1397 WLAN Mini-Card [1028:000c]
Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast &amp;gt;TAbort- SERR-
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Chipset:&lt;/strong&gt; BCM4312&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PCI ID:&lt;/strong&gt; 14e4:4315&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Controlador en uso:&lt;/strong&gt; Ninguno (no aparece la línea que lo debería&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;indicar)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instalamos el paquete necesario (si no tenemos conexión, deberemos
conectarnos por cable o bien descargarlo desde otro equipo; más
información en el enlace al final):&lt;/p&gt;</description></item><item><title>Compartiendo archivos en la nube desde el terminal</title><link>http://karpoke.ignaciocano.com/2014/09/06/compartiendo-archivos-en-la-nube-desde-el-terminal/</link><pubDate>Sat, 06 Sep 2014 17:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/09/06/compartiendo-archivos-en-la-nube-desde-el-terminal/</guid><description>&lt;p&gt;Hay muchas maneras de compartir archivos, pero con &lt;a href="http://curl.io/"&gt;curl.io&lt;/a&gt; podemos
hacerlo directamente desde el terminal usando &lt;code&gt;curl&lt;/code&gt;, permitiéndonos
archivos hasta 5 GB y durante 4 horas, tiempo tras el cual será
eliminados.&lt;/p&gt;
&lt;p&gt;Por ejemplo, para compartir el archivo &lt;code&gt;/tmp/test&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -F &amp;#34;file=@/tmp/test&amp;#34; http://curl.io/send/nzdqxcmf
File successfully received.
You can download test from this url:
http://curl.io/get/nzdqxcmf/90571b24cf847434a171d41cb2043d6a561cb85b
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para recuperarlo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -o test http://curl.io/get/nzdqxcmf/90571b24cf847434a171d41cb2043d6a561cb85b
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Tal como nos sugieren en su web, también podemos enviarlo cifrado con
&lt;code&gt;gpg&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Conseguir la lista actualizada de medios AEDE para bloquearlos</title><link>http://karpoke.ignaciocano.com/2014/07/27/conseguir-la-lista-actualizada-de-medios-aede-para-bloquearlos/</link><pubDate>Sun, 27 Jul 2014 11:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/07/27/conseguir-la-lista-actualizada-de-medios-aede-para-bloquearlos/</guid><description>&lt;p&gt;La lista de medios asociados a AEDE se puede consultar en su página:
&lt;a href="https://www.aede.es/publica/Periodicos_Asociados.asp"&gt;www.aede.es/publica/Periodicos_Asociados.asp&lt;/a&gt;. Si no queremos visitar ni
por error las páginas de dichos medios, tenemos diferentes alternativas,
desde &lt;em&gt;scripts&lt;/em&gt; de GreaseMonkey para &lt;a href="https://github.com/pykiss/anti-AEDE/blob/master/script.user.js"&gt;Firefox&lt;/a&gt; y complementos para
&lt;a href="https://chrome.google.com/webstore/detail/aede-blocker/olfbaiingdbeoihdemklgmakblhcgpmn?hl=es"&gt;Chrome&lt;/a&gt;, hasta &lt;a href="http://anotacionsalmarge.wordpress.com/2014/02/17/bloquejar-pagines-web/"&gt;añadir los dominios en el fichero &lt;code&gt;/etc/hosts&lt;/code&gt;&lt;/a&gt;,
tal como haríamos si fuesen &lt;a href="http://karpoke.ignaciocano.com/2012/06/21/hphosts-evitando-la-navegacion-por-dominios-maliciosos/"&gt;dominios maliciosos&lt;/a&gt;, o incluso
complementos para &lt;a href="https://wordpress.org/plugins/canon-aede/"&gt;WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Los siguientes comandos nos facilitan descargar la lista de dominios:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ lynx -dump http://www.aede.es/publica/Periodicos_Asociados.asp |
\grep -Eo &amp;#34;http://[^/\&amp;#34;]+&amp;#34; |
\grep -v aede.es |
sort |
uniq |
awk &amp;#34;{gsub(/http:\/\//, \&amp;#34;\&amp;#34;); print; gsub(/www\./, \&amp;#34;\&amp;#34;); print; }&amp;#34; |
sed &amp;#39;s/^/127.0.0.1 /&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Una alternativa a &lt;code&gt;lynx&lt;/code&gt; sería utilizar el comando &lt;code&gt;curl&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Configurar msmtp para enviar correo mediante GMail desde el terminal</title><link>http://karpoke.ignaciocano.com/2014/06/04/configurar-msmtp-para-enviar-correo-mediante-gmail-desde-el-terminal/</link><pubDate>Wed, 04 Jun 2014 23:13:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/06/04/configurar-msmtp-para-enviar-correo-mediante-gmail-desde-el-terminal/</guid><description>&lt;p&gt;Otra alternativa para enviar correos electrónicos desde el terminal sin
necesidad de tener instalado un servidor de correo. Su configuración es
incluso más sencilla que con &lt;a href="http://karpoke.ignaciocano.com/2012/01/14/configurar-ssmtp-para-enviar-correo-mediante-gmail-desde-el-terminal/"&gt;ssmtp&lt;/a&gt;. Si tenemos instalado &lt;code&gt;ssmtp&lt;/code&gt;
deberemos desinstalarlo para poder instalar &lt;code&gt;msmtp&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="instalamos-mstmp-mta"&gt;Instalamos &lt;code&gt;mstmp-mta&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Instalamos el paquete &lt;code&gt;msmtp-mta&lt;/code&gt; desde los repositorios y editamos el
fichero de configuración &lt;code&gt;~/.msmtprc&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;defaults
logfile ~/msmtp.log
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;account gmail
auth on
host smtp.gmail.com
from example@gmail.com
auth on
tls on
tls_trust_file /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
user example@gmail.com
password secret
port 587
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;account default : gmail
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Le cambiamos los permisos:&lt;/p&gt;</description></item><item><title>Obtener el listado de rangos de IPs asociados a un dominio</title><link>http://karpoke.ignaciocano.com/2014/06/01/obtener-el-listado-de-rangos-de-ips-asociados-a-un-dominio/</link><pubDate>Sun, 01 Jun 2014 12:57:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/06/01/obtener-el-listado-de-rangos-de-ips-asociados-a-un-dominio/</guid><description>&lt;p&gt;Si queremos obtener el listado de rangos de IPs que puedan estar
asociadas a un dominio, por ejemplo para bloquearlo, podemos ejecutar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ IP=$(dig +short www.example.com | grep -Eo &amp;#39;([0-9]{1,3}\.?){4}&amp;#39; | head -1)
$ AS=$(whois $IP | awk &amp;#39;/OriginAS/{print $2}&amp;#39;)
$ test -n &amp;#34;$AS&amp;#34; &amp;amp;&amp;amp; whois -h whois.radb.net &amp;#39;!g&amp;#39;$AS | tr -d &amp;#34;\n&amp;#34; | tr &amp;#34; &amp;#34; &amp;#34;\n&amp;#34; | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En la primera línea, obtenemos la IP asociada al dominio. En la segunda,
obtenemos el registro &lt;em&gt;origin&lt;/em&gt;, el cual utilizamos en la tercera línea
para consultar a whois.radb.net el rango de IPs y mostrar las IPs una
por línea.&lt;/p&gt;</description></item><item><title>Enviar y reicibir notificaciones de Telegram desde la línea de comandos</title><link>http://karpoke.ignaciocano.com/2014/05/31/enviar-y-reicibir-notificaciones-de-telegram-desde-la-linea-de-comandos/</link><pubDate>Sat, 31 May 2014 13:27:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/05/31/enviar-y-reicibir-notificaciones-de-telegram-desde-la-linea-de-comandos/</guid><description>&lt;p&gt;Utilizando &lt;a href="http://github.com/vysheng/tg"&gt;tg&lt;/a&gt;, podemos enviar y recibir mensajes de nuestros
contactos en Telegram, incluyéndonos a nosotros mismos, desde el
terminal.&lt;/p&gt;
&lt;h2 id="envíos-programados"&gt;Envíos programados&lt;/h2&gt;
&lt;p&gt;Combinándolo con &lt;code&gt;expect&lt;/code&gt;, conseguiremos una forma sencilla de programar
notificaciones.&lt;/p&gt;
&lt;p&gt;He aquí un pequeño ejemplo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;#!/usr/bin/env bash
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;function tg {
# First argument, if any, must be the receiver
local to=&amp;#34;$1&amp;#34;
local msg=&amp;#34;&amp;#34;
local cmd=&amp;#34;&amp;#34;
if [ $# -gt 1 ]; then
shift 1
msg=&amp;#34;$@&amp;#34;
else
while read line; do
if [ -z &amp;#34;$msg&amp;#34; ]; then
msg=$line
else
msg=&amp;#34;$msg\n$line&amp;#34;
fi
done
if [ -z &amp;#34;$to&amp;#34; ]; then
to=$(awk &amp;#39;{print $1}&amp;#39; &amp;lt;&amp;lt;&amp;lt; $msg)
msg=$(awk &amp;#39;{$1=&amp;#34;&amp;#34;;print $0}&amp;#39; &amp;lt;&amp;lt;&amp;lt; $msg)
fi
fi
if [[ $msg =~ &amp;#34;\n&amp;#34; ]]; then
file=$(mktemp)
echo -e &amp;#34;$msg&amp;#34; &amp;gt; $file
cmd=&amp;#34;send_text $to $file&amp;#34;
else
cmd=&amp;#34;msg $to $msg&amp;#34;
fi
#echo $cmd
expect -c &amp;#34;
log_user 0
match_max 100000
spawn /path/to/telegram -k /path/to/tg-server.pub
expect \&amp;#34;User \&amp;#34;
send -- \&amp;#34;$cmd\r\&amp;#34;
expect \&amp;#34;Sent\&amp;#34;
send \&amp;#34;quit\&amp;#34;
&amp;#34;
}
tg $@
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Algunos ejemplos de uso:&lt;/p&gt;</description></item><item><title>Crear un repositorio espejo de Ubuntu</title><link>http://karpoke.ignaciocano.com/2014/05/18/crear-un-repositorio-espejo-de-ubuntu/</link><pubDate>Sun, 18 May 2014 21:48:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/05/18/crear-un-repositorio-espejo-de-ubuntu/</guid><description>&lt;p&gt;Si tenemos un gran número de equipos con Ubuntu en nuestra LAN, nos
puede interesar tener un espejo local del repositorio de paquetes de
Ubuntu. Una diferencia entre esta opción y &lt;a href="http://karpoke.ignaciocano.com/2014/05/17/cache-de-paquetes-descargados-en-ubuntu-trusty-tahr/"&gt;utilizar un &lt;em&gt;proxy/caché&lt;/em&gt; de
paquetes&lt;/a&gt; es que, en el primer caso, ya tendremos todos los paquetes
disponibles cuando los vayamos a necesitar.&lt;/p&gt;
&lt;h2 id="clonar-el-repositorio-en-local"&gt;Clonar el repositorio en local&lt;/h2&gt;
&lt;p&gt;Para crear un repositorio local, podemos usar el comando &lt;code&gt;apt-mirror&lt;/code&gt;,
disponible en los repositorios. Una vez instalado, podemos editar el
fichero de configuración en &lt;code&gt;/etc/apt/mirror.list&lt;/code&gt; para, por ejemplo,
cambiar el directorio donde se guardarán los paquetes (por defecto
&lt;code&gt;/var/spool/apt-mirror&lt;/code&gt;), añadir o eliminar fuentes a incluir en el
repositorio, etc. Con las fuentes por defecto, hay que tener en cuenta
que serán necesarios más de 100 GB para alojar el repositorio. Si
optásemos sólo por incluir el &amp;ldquo;main&amp;rdquo;, se queda en 10 GB.&lt;/p&gt;</description></item><item><title>Caché de paquetes descargados en Ubuntu Trusty Tahr</title><link>http://karpoke.ignaciocano.com/2014/05/17/cache-de-paquetes-descargados-en-ubuntu-trusty-tahr/</link><pubDate>Sat, 17 May 2014 01:30:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/05/17/cache-de-paquetes-descargados-en-ubuntu-trusty-tahr/</guid><description>&lt;p&gt;Si tenemos una LAN con varios equipos, podemos utilizar &lt;code&gt;apt-cacher-ng&lt;/code&gt;
para no tener que descargar las actualizaciones desde los repostiorios
en cada uno de ellos, ya que nos permite reutilizar los paquetes que
hayamos descargado. Otras opciones, como AptProxy parece que han quedado
algo obsoletas.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-cacher-ng&lt;/code&gt; es un &lt;em&gt;proxy/caché&lt;/em&gt; enfocado a gestores de paquetes, que
soporta las distribuciones Debian y Ubuntu, entre otras. Es una buena
alternativa a montar un espejo para pequeñas LANs.&lt;/p&gt;</description></item><item><title>Crear paquetes .deb con checkinstall</title><link>http://karpoke.ignaciocano.com/2014/05/10/crear-paquetes-deb-con-checkinstall/</link><pubDate>Sat, 10 May 2014 18:40:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2014/05/10/crear-paquetes-deb-con-checkinstall/</guid><description>&lt;p&gt;Una forma sencilla de crear un paquete .deb a partir del código fuente
es mediante la utilidad &lt;code&gt;checkinstall&lt;/code&gt;, disponible en los respositorios.&lt;/p&gt;
&lt;p&gt;Para aquellos casos en los que la compilación del código y la
instalación sigue los conocidos comandos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ./configure
$ make
$ sudo make install
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bastará sustituir el último paso por:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo checkinstall
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Como ejemplo, podemos crear un .deb a partir del código fuente de
&lt;a href="https://download.libsodium.org/libsodium/releases/"&gt;libsodium&lt;/a&gt;, una librería necesaria para compilar dnscrypt.&lt;/p&gt;</description></item><item><title>sshuttle, la VPN de los pobres</title><link>http://karpoke.ignaciocano.com/2013/10/20/sshuttle-la-vpn-de-los-pobres/</link><pubDate>Sun, 20 Oct 2013 21:03:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/10/20/sshuttle-la-vpn-de-los-pobres/</guid><description>&lt;p&gt;&lt;a href="https://github.com/apenwarr/sshuttle"&gt;shuttle&lt;/a&gt; es una herramienta que nos permite redirigir todo el tráfico
a través de una conexión SSH, incluyendo las peticiones DNS. Está
disponible tanto en los repositorios como en GitHub.&lt;/p&gt;
&lt;p&gt;Su uso es sencillo. Para establecer la conexión:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sshuttle --D --pidfile=/tmp/sshuttle.pid -r user@server:1234 --dns 0/0
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para terminarla:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ kill $(cat /tmp/sshuttle.pid)
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Solucionado el error «DistributionNotFound» al usar pip</title><link>http://karpoke.ignaciocano.com/2013/07/28/solucionado-el-error-distributionnotfound-al-usar-pip/</link><pubDate>Sun, 28 Jul 2013 13:52:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/07/28/solucionado-el-error-distributionnotfound-al-usar-pip/</guid><description>&lt;p&gt;Si al ejecutar &lt;code&gt;pip&lt;/code&gt;, nos aparece el siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ pip
Traceback (most recent call last):
File &amp;#34;/usr/local/bin/pip&amp;#34;, line 5, in
from pkg_resources import load_entry_point
File &amp;#34;/usr/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 2707, in
working_set.require(__requires__)
File &amp;#34;/usr/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 686, in require
needed = self.resolve(parse_requirements(requirements))
File &amp;#34;/usr/lib/python2.7/dist-packages/pkg_resources.py&amp;#34;, line 584, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: pip==1.1
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;puede ser debido a que es necesario actualizar el propio &lt;code&gt;pip&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo easy_install --upgrade pip
Searching for pip
Reading http://pypi.python.org/simple/pip/
Best match: pip 1.4
Downloading https://pypi.python.org/packages/source/p/pip/pip-1.4.tar.gz#md5=ca790be30004937987767eac42cfa44a
Processing pip-1.4.tar.gz
Running pip-1.4/setup.py -q bdist_egg --dist-dir /tmp/easy_install-XSmFvr/pip-1.4/egg-dist-tmp-jmeGZW
warning: no files found matching &amp;#39;*.html&amp;#39; under directory &amp;#39;docs&amp;#39;
warning: no previously-included files matching &amp;#39;*.rst&amp;#39; found under directory &amp;#39;docs/_build&amp;#39;
no previously-included directories found matching &amp;#39;docs/_build/_sources&amp;#39;
Adding pip 1.4 to easy-install.pth file
Installing pip script to /usr/local/bin
Installing pip-2.7 script to /usr/local/bin
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Installed /usr/local/lib/python2.7/dist-packages/pip-1.4-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comprobamos que se ha solucionado:&lt;/p&gt;</description></item><item><title>Iniciar sesión en DynDNS desde el terminal</title><link>http://karpoke.ignaciocano.com/2013/06/10/iniciar-sesion-en-dyndns-desde-el-terminal/</link><pubDate>Mon, 10 Jun 2013 01:00:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/06/10/iniciar-sesion-en-dyndns-desde-el-terminal/</guid><description>&lt;p&gt;Hace un par de semanas, DynDNS cambió su política de uso de las cuentas
gratuitas para incluir una cláusula por la cual es necesario hacer
mínimo un login al mes si no se quieren perder los dominios que
tengamos:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Starting now, if you would like to maintain your free Dyn account, you
must log into your account once a month. Failure to do so will result
in expiration and loss of your hostname. This activity helps us
eliminate hostnames that are no longer needed and/or dormant. Note
that an update client will not suffice for this monthly login.&lt;/p&gt;</description></item><item><title>Conectarse por SSH utilizando sshpass</title><link>http://karpoke.ignaciocano.com/2013/06/09/conectarse-por-ssh-utilizando-sshpass/</link><pubDate>Sun, 09 Jun 2013 15:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/06/09/conectarse-por-ssh-utilizando-sshpass/</guid><description>&lt;p&gt;&lt;code&gt;sshpass&lt;/code&gt; es un programa que nos permite iniciar sesión en un servidor
SSH de forma no interactiva y sin utilizar claves, para lo que deberemos
proporcionar la contraseña como argumento del programa.&lt;/p&gt;
&lt;p&gt;Para conectar a un servidor SSH, es preferible &lt;a href="http://karpoke.ignaciocano.com/2011/03/03/conectarse-por-ssh-solo-usando-la-clave/"&gt;utilizar claves&lt;/a&gt;,
además de tener en cuenta otros sistemas de seguridad, como la
&lt;a href="http://karpoke.ignaciocano.com/2011/08/05/servicio-de-ssh-con-sistema-de-verificacion-en-dos-pasos-de-google-en-ubuntu-natty-narwhal/"&gt;autenticación en dos pasos&lt;/a&gt;, pero puede haber escenarios en los que
&lt;code&gt;sshpass&lt;/code&gt; sea una alternativa a considerar.&lt;/p&gt;
&lt;p&gt;Su uso es sencillo:&lt;/p&gt;</description></item><item><title>SSLyze</title><link>http://karpoke.ignaciocano.com/2013/03/29/sslyze/</link><pubDate>Fri, 29 Mar 2013 22:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/03/29/sslyze/</guid><description>&lt;p&gt;&lt;a href="https://github.com/iSECPartners/sslyze"&gt;SSLyze&lt;/a&gt; es una herramienta para analizar la configuración SSL de un
servidor, diseñada para ser rápida y exhaustiva.&lt;/p&gt;
&lt;p&gt;Un ejemplo de uso:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python sslyze --regular localhost:443
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; REGISTERING AVAILABLE PLUGINS
-----------------------------
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; PluginCertInfo
PluginSessionRenegotiation
PluginCompression
PluginSessionResumption
PluginOpenSSLCipherSuites
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; CHECKING HOST(S) AVAILABILITY
-----------------------------
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; localhost:443 =&amp;gt; 127.0.0.1:443
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; SCAN RESULTS FOR LOCALHOST:443 - 127.0.0.1:443
-----------------------------------------------------------------
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * Compression :
Compression Support: Disabled
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * Session Renegotiation :
Client-initiated Renegotiations: Rejected
Secure Renegotiation: Supported
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * Certificate :
Validation w/ Mozilla&amp;#39;s CA Store: Certificate is NOT Trusted: self signed certificate in certificate chain
Hostname Validation: OK - Common Name Matches
SHA1 Fingerprint: 12C4EC1C16807D8654269FBE5E0A8DBFBF1244CC
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Common Name: localhost
Issuer: /C=ES/ST=IB/O=Localhost CA/CN=localhost/emailAddress=postmaster@localhost
Serial Number: F525610B96987DAE
Not Before: Mar 20 10:31:07 2013 GMT
Not After: Mar 20 10:31:07 2014 GMT
Signature Algorithm: sha1WithRSAEncryption
Key Size: 2048
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Unhandled exception when processing --sslv2:
utils.ctSSL.errors.ctSSLFeatureNotAvailable - SSLv2 disabled.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * Session Resumption :
With Session IDs: Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
With TLS Session Tickets: Supported
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * TLSV1_1 Cipher Suites :
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Rejected Cipher Suite(s): Hidden
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Preferred Cipher Suite:
RC4-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 302 Found - /
AES256-SHA 256 bits HTTP 302 Found - /
DES-CBC3-SHA 168 bits HTTP 302 Found - /
RC4-SHA 128 bits HTTP 302 Found - /
CAMELLIA128-SHA 128 bits HTTP 302 Found - /
AES128-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Undefined - An unexpected error happened: None
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * TLSV1_2 Cipher Suites :
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Rejected Cipher Suite(s): Hidden
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Preferred Cipher Suite:
AES128-GCM-SHA256 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 302 Found - /
AES256-SHA256 256 bits HTTP 302 Found - /
AES256-SHA 256 bits HTTP 302 Found - /
AES256-GCM-SHA384 256 bits HTTP 302 Found - /
DES-CBC3-SHA 168 bits HTTP 302 Found - /
RC4-SHA 128 bits HTTP 302 Found - /
CAMELLIA128-SHA 128 bits HTTP 302 Found - /
AES128-SHA256 128 bits HTTP 302 Found - /
AES128-SHA 128 bits HTTP 302 Found - /
AES128-GCM-SHA256 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Undefined - An unexpected error happened: None
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * SSLV3 Cipher Suites :
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Rejected Cipher Suite(s): Hidden
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Preferred Cipher Suite:
RC4-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 302 Found - /
AES256-SHA 256 bits HTTP 302 Found - /
DES-CBC3-SHA 168 bits HTTP 302 Found - /
RC4-SHA 128 bits HTTP 302 Found - /
CAMELLIA128-SHA 128 bits HTTP 302 Found - /
AES128-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Undefined - An unexpected error happened: None
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; * TLSV1 Cipher Suites :
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Rejected Cipher Suite(s): Hidden
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Preferred Cipher Suite:
RC4-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 302 Found - /
AES256-SHA 256 bits HTTP 302 Found - /
DES-CBC3-SHA 168 bits HTTP 302 Found - /
RC4-SHA 128 bits HTTP 302 Found - /
CAMELLIA128-SHA 128 bits HTTP 302 Found - /
AES128-SHA 128 bits HTTP 302 Found - /
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; Undefined - An unexpected error happened: None
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; SCAN COMPLETED IN 16.95 S
-------------------------
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Solucionado el error «error: error running non-shared postrotate script for /var/log/samba/log.nmbd of '/var/log/samba/log.nmbd '»</title><link>http://karpoke.ignaciocano.com/2013/03/22/solucionado-el-error-error-error-running-non-shared-postrotate-script-for-varlogsambalog-nmbd-of-varlogsambalog-nmbd/</link><pubDate>Fri, 22 Mar 2013 21:31:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/03/22/solucionado-el-error-error-error-running-non-shared-postrotate-script-for-varlogsambalog-nmbd-of-varlogsambalog-nmbd/</guid><description>&lt;p&gt;Si nos encontramos con el siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;error: error running non-shared postrotate script for /var/log/samba/log.nmbd of &amp;#39;/var/log/samba/log.nmbd &amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En Ubuntu 12.04.2, con la versión de &lt;code&gt;samba&lt;/code&gt; 3.6.3, podría producirse
cuando el &lt;a href="http://dev-eole.ac-dijon.fr/issues/4524"&gt;&lt;em&gt;script&lt;/em&gt; de &lt;code&gt;logrotate&lt;/code&gt; para &lt;code&gt;samba&lt;/code&gt;&lt;/a&gt;
intenta hacer un &lt;code&gt;reload&lt;/code&gt; del servicio &lt;code&gt;nmbd&lt;/code&gt; y éste no está en ejecución.
Necesita un pequeño cambio en los comandos utilizados en la directiva &lt;code&gt;postrotate&lt;/code&gt;:
deberemos cambiar &lt;code&gt;reload&lt;/code&gt; por &lt;code&gt;reload --quiet&lt;/code&gt;, quedando finalmente así
las respectivas líneas en el fichero &lt;code&gt;/etc/logrorate.d/samba&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Solucionado el error «prelink: ... is not an ELF file»</title><link>http://karpoke.ignaciocano.com/2013/03/21/solucionado-el-error-prelink-is-not-an-elf-file/</link><pubDate>Thu, 21 Mar 2013 21:15:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/03/21/solucionado-el-error-prelink-is-not-an-elf-file/</guid><description>&lt;p&gt;&lt;code&gt;tiger&lt;/code&gt; es una herramienta que comprueba la integridad de ciertos
ficheros del sistema.&lt;/p&gt;
&lt;p&gt;En Ubuntu 12.04.2, la versión instalada es la 3.2.3, y si además estamos
usando &lt;code&gt;prelink&lt;/code&gt;, puede que &lt;code&gt;tigercron&lt;/code&gt; arroje errores del estilo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;prelink: &amp;#34;/usr/share/vim/vim73/doc/help.txt&amp;#34; is not an ELF file
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;El problema parece estar en un uso incorrecto de &lt;code&gt;prelink&lt;/code&gt;, ya que no
maneja bien la salida de &lt;code&gt;md5sum&lt;/code&gt;. Este error creo que todavía no está
solucionado, pero en &lt;a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505906"&gt;este hilo&lt;/a&gt; se incluye un parche que parece que
funciona.&lt;/p&gt;</description></item><item><title>Solucionado el error «error: nagiosgrapher:1 duplicate log entry for /var/log/nagiosgrapher/ngraph.log»</title><link>http://karpoke.ignaciocano.com/2013/03/20/solucionado-el-error-error-nagiosgrapher1-duplicate-log-entry-for-varlognagiosgrapherngraph-log/</link><pubDate>Wed, 20 Mar 2013 21:08:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/03/20/solucionado-el-error-error-nagiosgrapher1-duplicate-log-entry-for-varlognagiosgrapherngraph-log/</guid><description>&lt;p&gt;&lt;code&gt;nagiosgrapher&lt;/code&gt; es un programa que recoge la información de Nagios y
crea una serie de gráficos a partir de ella.&lt;/p&gt;
&lt;p&gt;En Ubuntu 12.04.2, la versión instalada desde los repositorios, 1.7.1-3,
tiene un pequeño fallo, de tal manera que
&lt;a href="https://bugs.launchpad.net/ubuntu/+source/nagiosgrapher/+bug/466671"&gt;&lt;code&gt;logrotate&lt;/code&gt; arroja el siguiente error&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;error: nagiosgrapher:1 duplicate log entry for /var/log/nagiosgrapher/ngraph.log
error: found error in /var/log/nagiosgrapher/ngraph.log , skipping
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;El fallo está corregido a partir de la versión 1.7.2.&lt;/p&gt;
&lt;p&gt;Podemos confirmar el fallo si vemos que &lt;code&gt;nagiosgrapher&lt;/code&gt; instala dos
archivos como los siguientes en el directorio de &lt;code&gt;logrotate&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Cifrando el tráfico DNS</title><link>http://karpoke.ignaciocano.com/2013/01/17/cifrando-el-trafico-dns/</link><pubDate>Thu, 17 Jan 2013 19:44:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2013/01/17/cifrando-el-trafico-dns/</guid><description>&lt;p&gt;&lt;a href="https://github.com/opendns/dnscrypt-proxy"&gt;DNSCrypt&lt;/a&gt; proporciona un servicio local para resolver nombres de
dominio que permite cifrar el tráfico entre nuestro equipo y el servidor
DNS primario, por defecto OpenDNS, lo que ayuda a protegerse de ataques
MitM y &lt;em&gt;phishing&lt;/em&gt; y proporciona cierta confidencialidad en las
peticiones DNS.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Para instalarlo, basta que nos decarguemos el paquete con el código
fuente:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.2.0.tar.bz2
$ wget http://download.dnscrypt.org/dnscrypt-proxy/dnscrypt-proxy-1.2.0.tar.bz2.sig
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comprobamos el paquete:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ gpg --verify dnscrypt-proxy-1.2.0.tar.bz2.sig dnscrypt-proxy-1.2.0.tar.bz2
gpg: Firmado el vie 12 oct 2012 01:28:27 CEST usando clave DSA ID 1CDEA439
gpg: Imposible comprobar la firma: Clave pública no encontrada
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para poder comprobar la firma, buscamos la clave y la añadimos:&lt;/p&gt;</description></item><item><title>Solucionado el error "Fontconfig warning: reading configurations from ~/.fonts.conf is deprecated." en Ubuntu</title><link>http://karpoke.ignaciocano.com/2012/12/23/solucionado-el-error-fontconfig-warning-reading-configurations-from-fonts-conf-is-deprecated-en-ubuntu/</link><pubDate>Sun, 23 Dec 2012 13:51:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/12/23/solucionado-el-error-fontconfig-warning-reading-configurations-from-fonts-conf-is-deprecated-en-ubuntu/</guid><description>&lt;p&gt;En Ubuntu, si tenemos el archivo de configuración &lt;code&gt;~./fonts.conf&lt;/code&gt; y
lanzamos una aplicación que lo utilice, es posible que nos aparezca un
error como el siguiente:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Fontconfig warning: &amp;#34;/etc/fonts/conf.d/50-user.conf&amp;#34;, line 9: reading configurations from ~/.fonts.conf is deprecated.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;El motivo, &lt;a href="http://askubuntu.com/questions/206271/fontconfig-warning"&gt;tal como apunta Githlar en este foro&lt;/a&gt;, es que
&lt;code&gt;~/.fonts.conf&lt;/code&gt; será eliminado en el futuro. La solución pasa por mover
el fichero a su nuevo emplazamiento (es posible que necesitemos primero
crear el directorio destino):&lt;/p&gt;</description></item><item><title>etckeeper, control de versiones del directorio /etc</title><link>http://karpoke.ignaciocano.com/2012/12/21/etckeeper-control-de-versiones-del-directorio-etc/</link><pubDate>Fri, 21 Dec 2012 16:41:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/12/21/etckeeper-control-de-versiones-del-directorio-etc/</guid><description>&lt;p&gt;&lt;code&gt;etckeeper&lt;/code&gt; permite utilizar una herramienta de control de versiones
para registrar los cambios hechos en los ficheros del directorio &lt;code&gt;/etc&lt;/code&gt;.
Se pueden utilizar varias herramientas de control de versiones, como
Bazaar, Git, Mercurial o Darcs.&lt;/p&gt;
&lt;p&gt;Aunque puede ser de gran ayuda tener un historial de los cambios en los
ficheros del directorio &lt;code&gt;/etc&lt;/code&gt;, no debemos olvidar que puede que se
estén copiando ficheros que deberían permanecer secretos, como por
ejemplo &lt;code&gt;/etc/shadow&lt;/code&gt;. Al repositorio sólo puede acceder el
administrador del sistema, pero deberemos tener en cuenta esto si, por
ejemplo, copiamos el repositorio.&lt;/p&gt;</description></item><item><title>Descargando torrents en modo paranoico con Transmission</title><link>http://karpoke.ignaciocano.com/2012/12/19/descargando-torrents-en-modo-paranoico-con-transmission/</link><pubDate>Wed, 19 Dec 2012 18:15:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/12/19/descargando-torrents-en-modo-paranoico-con-transmission/</guid><description>&lt;p&gt;Si utilizamos Transmission para descargar &lt;em&gt;torrents&lt;/em&gt; podemos activar dos
características interesantes: cifrado de la conexión y uso de listas de
bloqueo de IPs.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Preferencias del Transmission" loading="lazy" src="http://karpoke.ignaciocano.com/images/preferencias-transmission-300x173.png"&gt;&lt;/p&gt;
&lt;p&gt;Vamos al menú Editar &amp;gt; Preferencias &amp;gt; Privacidad:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lista de bloqueos&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- Activar lista de bloqueo:
&amp;lt;http://list.iblocklist.com/?list=bt_level1&amp;amp;fileformat=p2p&amp;amp;archiveformat=gz&amp;gt;
- Activar actualizaciones automáticas
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Privacidad&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;- Modo de cifrado: Requerir cifrado
- Usar PEX para buscar más pares
- Usar DHT para buscar más pares
- Usar el descubridor de pares locales para buscar más pares
&lt;/code&gt;&lt;/pre&gt;&lt;hr&gt;
&lt;h4 id="actualizado-el-12-de-abril-de-2015"&gt;Actualizado el 12 de abril de 2015&lt;/h4&gt;
&lt;p&gt;En las versiones actuales de Transmission, las opciones de PEX y DHT
están en la pestaña de Red.&lt;/p&gt;</description></item><item><title>Jelly Bean con AndroVM en VirtualBox OSE</title><link>http://karpoke.ignaciocano.com/2012/12/15/jelly-bean-con-androvm-en-virtualbox-ose/</link><pubDate>Sat, 15 Dec 2012 18:40:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/12/15/jelly-bean-con-androvm-en-virtualbox-ose/</guid><description>&lt;p&gt;&lt;a href="http://androvm.org/"&gt;AndroVM&lt;/a&gt; es una máquina virtual para ejecutar Android. Si queremos
probarla, lo único que tenemos que hacer es &lt;a href="http://androvm.org/blog/download/"&gt;descargarla&lt;/a&gt; y configurar
VirtualBox OSE para ejecutarla.&lt;/p&gt;
&lt;p&gt;&lt;img alt="jelly bean" loading="lazy" src="http://karpoke.ignaciocano.com/images/jelly-bean-300x183.png"&gt;&lt;/p&gt;
&lt;h2 id="descarga"&gt;Descarga&lt;/h2&gt;
&lt;p&gt;Desde la página de &lt;a href="http://androvm.org/blog/download/"&gt;descargas&lt;/a&gt; nos descargamos el fichero
OVA, por ejemplo, &lt;strong&gt;vbox86tp version with gapps &amp;amp; houdini&lt;/strong&gt; (hay varias
versiones, pero ésta es la más completa), y el reproductor para nuestra
plataforma, por ejemplo &lt;strong&gt;Linux 32-bit&lt;/strong&gt;, que emplearemos si queremos
utilizar la aceleración hardware OpenGL.&lt;/p&gt;</description></item><item><title>Subdominios dinámicos en un alojamiento con dominio dinámico en OVH</title><link>http://karpoke.ignaciocano.com/2012/12/15/subdominios-dinamicos-en-un-alojamiento-con-dominio-dinamico-en-ovh/</link><pubDate>Sat, 15 Dec 2012 01:05:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/12/15/subdominios-dinamicos-en-un-alojamiento-con-dominio-dinamico-en-ovh/</guid><description>&lt;p&gt;Lo que se pretende es conseguir una manera rápida y sencilla de poner
sitios web &lt;em&gt;online&lt;/em&gt;. Una vez configurado el servidor web y el servidor
DNS, lo único que tendremos que hacer para tener accesible un nuevo
sitio web será colocarlo en un directorio concreto del servidor y
podremos acceder a él a través del subdominio con el nombre del
directorio. Por ejemplo, si creamos la web &lt;code&gt;web1&lt;/code&gt;, automáticamente será
accesible desde &lt;code&gt;web1.example.com&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Autenticación hardware mediante un USB</title><link>http://karpoke.ignaciocano.com/2012/09/30/autenticacion-hardware-mediante-un-usb/</link><pubDate>Sun, 30 Sep 2012 13:06:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/09/30/autenticacion-hardware-mediante-un-usb/</guid><description>&lt;p&gt;&lt;a href="http://pamusb.org/"&gt;pam_usb&lt;/a&gt; es un módulo que permite añadir autenticación hardware
utilizando unidades de almacenamiento extraíbles &amp;ldquo;normales&amp;rdquo;, como
memorias USB, tarjetas SD/MMC, etc. Mediante &lt;code&gt;pamusb&lt;/code&gt; podemos
especificar que se ejecuten diversas acciones cuando reconoce el
dispositivo conectado, como por ejemplo iniciar sesión sin tener que
introducir la contraseña o desactivar el salvapantallas, por lo que se
puede utilizar para implantar un &lt;a href="http://karpoke.ignaciocano.com/2011/08/05/servicio-de-ssh-con-sistema-de-verificacion-en-dos-pasos-de-google-en-ubuntu-natty-narwhal/"&gt;sistema de autenticación en dos pasos
(2FA)&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Sirve cualquier USB, ya que el módulo no modifica su contenido, sino que
comprueba el UUID, el número de serie, el fabricante y el modelo, por lo
que, aunque se copie, no se podrá suplantar fácilmente.&lt;/p&gt;</description></item><item><title>Monitorizar el tamaño de un directorio con monit</title><link>http://karpoke.ignaciocano.com/2012/09/22/monitorizar-el-tamano-de-un-directorio-con-monit/</link><pubDate>Sat, 22 Sep 2012 15:17:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/09/22/monitorizar-el-tamano-de-un-directorio-con-monit/</guid><description>&lt;p&gt;&lt;code&gt;monit&lt;/code&gt; es un herramienta para monitorizar procesos, ficheros,
directorios y sistemas de ficheros, que permite enviar alertas cuando
suceden eventos tales como que un proceso no arranca, se incrementa la
carga del sistema o el uso de memoria por encima de un umbral
determinado, se modifican ficheros o directorios, etc.&lt;/p&gt;
&lt;p&gt;El problema es que, por ahora, no permite controlar que el tamaño de un
directorio, es decir, de los ficheros contenidos en él, supere cierto
valor. Sin embargo, podemos &lt;a href="https://lists.gnu.org/archive/html/monit-general/2009-01/msg00023.html"&gt;conseguir este resultado&lt;/a&gt; utilizando un
&lt;em&gt;script&lt;/em&gt; que se ejecute de forma periódica y que modifique la fecha de
un fichero concreto mientras el tamaño del directorio sea correcto. Este
fichero de control nos servirá para saber cuándo se ha superado el
limite.&lt;/p&gt;</description></item><item><title>Comprobar que no tenemos configurado Apache como un proxy abierto</title><link>http://karpoke.ignaciocano.com/2012/09/21/comprobar-que-no-tenemos-configurado-apache-como-un-proxy-abierto/</link><pubDate>Fri, 21 Sep 2012 16:53:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/09/21/comprobar-que-no-tenemos-configurado-apache-como-un-proxy-abierto/</guid><description>&lt;p&gt;Revistando &lt;em&gt;logs&lt;/em&gt; de Apache, he visto que tenía algunas entradas del
tipo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;93.174.93.52 - - [18/Sep/2012:02:23:11 +0200] &amp;#34;GET http://myproxylists.com/my-http-headers HTTP/1.1&amp;#34; 404 1046 &amp;#34;-&amp;#34; &amp;#34;Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28 (.NET CLR 3.5.30729)&amp;#34;
93.174.93.52 - - [20/Sep/2012:08:21:08 +0200] &amp;#34;GET http://myproxylists.com/my-http-headers HTTP/1.1&amp;#34; 404 1046 &amp;#34;-&amp;#34; &amp;#34;Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28 (.NET CLR 3.5.30729)&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Este suele ser el resultado de peticiones maliciosas que buscan
encontrar servidores &lt;em&gt;proxy&lt;/em&gt; abiertos. Si encontramos entradas de este
tipo, lo primero que deberíamos hacer es comprobar que tenemos
configurado el servidor correctamente, para no permitir hacer de &lt;em&gt;proxy&lt;/em&gt;
a peticiones de anónimos. De hecho, si no necesitamos un servidor
&lt;em&gt;proxy&lt;/em&gt;, lo mejor es asegurarnos que la directiva &lt;code&gt;ProxyRequests&lt;/code&gt; no
está inicializada a &lt;code&gt;on&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Solucionado el error "No se pudo abrir el fichero de bloqueo «/var/lock/aptitude»" al actualizar Raspbmc</title><link>http://karpoke.ignaciocano.com/2012/09/06/solucionado-el-error-no-se-pudo-abrir-el-fichero-de-bloqueo-varlockaptitude-al-actualizar-raspbmc/</link><pubDate>Thu, 06 Sep 2012 13:44:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/09/06/solucionado-el-error-no-se-pudo-abrir-el-fichero-de-bloqueo-varlockaptitude-al-actualizar-raspbmc/</guid><description>&lt;p&gt;Tengo una Raspbmc instalada en la Raspberry Pi. Al utilizar &lt;code&gt;aptitude&lt;/code&gt;
para instalar cualquier paquete o actualizar el sistema, recibo el
siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude update
[ ERR] Leyendo la información de estado
E: No se pudo abrir el fichero de bloqueo &amp;#34;/var/lock/aptitude&amp;#34; - open (2: No existe el fichero o el directorio)
W: No se pudo bloquear el fichero de almacén. Esto significa habitualmente que dpkg u otra herramienta apt está instalando paquetes. Se abrirá en modo de sólo lectura, ¡se PERDERÁN todos los cambios que realice al estado de los paquetes!
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En realidad, lo que sucede es que &lt;code&gt;/var/lock&lt;/code&gt; es un enlace simbólico que
apunta a &lt;code&gt;/run/lock&lt;/code&gt;, que no existe, y de ahí que no lo encuentre.
Creando el directorio en cuestión, se soluciona el problema:&lt;/p&gt;</description></item><item><title>Solucionado el error "$MFTMirr does not match $MFT (record 0)." al montar una partición NTFS</title><link>http://karpoke.ignaciocano.com/2012/09/06/solucionado-el-error-mftmirr-does-not-match-mft-record-0-al-montar-una-particion-ntfs/</link><pubDate>Thu, 06 Sep 2012 12:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/09/06/solucionado-el-error-mftmirr-does-not-match-mft-record-0-al-montar-una-particion-ntfs/</guid><description>&lt;p&gt;Si intentamos montar un disco o partición en NTFS, el formato que
utiliza Windows, que no ha sido desconectada &amp;ldquo;de forma segura&amp;rdquo;, es
posible que no podamos montarla y que recibamos el siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo mount -t ntfs-3g /dev/sdb1 /media/ntfs
$MFTMirr does not match $MFT (record 0).
Failed to mount &amp;#39;/dev/sdb1&amp;#39;: Error de entrada/salida
NTFS is either inconsistent, or there is a hardware fault, or it’s a
SoftRAID/FakeRAID hardware. In the first case run chkdsk /f on Windows
then reboot into Windows twice. The usage of the /f parameter is very
important! If the device is a SoftRAID/FakeRAID then first activate
it and mount a different device under the /dev/mapper/ directory, (e.g.
/dev/mapper/nvidia_eahaabcc1). Please see the &amp;#39;dmraid&amp;#39; documentation
for more details.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Incluso si utilizamos el parámetro &lt;code&gt;-o force&lt;/code&gt; nos sigue devolviendo el
mismo error.&lt;/p&gt;</description></item><item><title>Analizando el tráfico de red en Android con tcpdump, netcat y Wireshark</title><link>http://karpoke.ignaciocano.com/2012/08/20/analizando-el-trafico-de-red-en-android-con-tcpdump-netcat-y-wireshark/</link><pubDate>Mon, 20 Aug 2012 01:55:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/08/20/analizando-el-trafico-de-red-en-android-con-tcpdump-netcat-y-wireshark/</guid><description>&lt;p&gt;Si necesitamos analizar el tráfico de red de nuestro Android, ya sea
para depurar una aplicación o para ver qué uso de la red hacen las
aplicaciones instaladas en el terminal, podemos recurrir a herramientas
bien conocidas como &lt;code&gt;tcpdump&lt;/code&gt;, &lt;code&gt;netcat&lt;/code&gt; y Wireshark.&lt;/p&gt;
&lt;h2 id="antes-de-empezar"&gt;Antes de empezar&lt;/h2&gt;
&lt;p&gt;Antes de continuar, deberemos tener instaladas las &lt;a href="http://developer.android.com/tools/index.html"&gt;herramientas de
desarrollo para Android&lt;/a&gt;. Descargamos el paquete y lo descomprimimos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget http://dl.google.com/android/android-sdk_r20.0.3-linux.tgz
$ tar xvzf android-sdk_r20.0.3-linux.tgz
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Añadimos los directorios &lt;code&gt;tools&lt;/code&gt; y &lt;code&gt;platform-tools&lt;/code&gt; al &lt;code&gt;PATH&lt;/code&gt;.
Ejecutamos las siguientes líneas, y las añadimos también en el fichero
&lt;code&gt;~/.bashrc&lt;/code&gt;, para incluirlas en el PATH del sistema:&lt;/p&gt;</description></item><item><title>De usuarios en WordPress</title><link>http://karpoke.ignaciocano.com/2012/08/02/de-usuarios-en-wordpress/</link><pubDate>Thu, 02 Aug 2012 13:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/08/02/de-usuarios-en-wordpress/</guid><description>&lt;p&gt;Uno de los peores hábitos, en cuanto a seguridad en informática se
refiere, es utilizar la cuenta de administrador de forma compulsiva para
todo, sin importar que la tarea que estemos haciendo requiera
privilegios de administrador o no. Esto se puede aplicar tanto a la
cuenta de &lt;code&gt;root&lt;/code&gt; en un sistema GNU/Linux como al usuario administrador
en WordPress. Lo ideal sería utilizar una cuenta con el mínimo nivel de
privilegios posible que nos permita llevar a cabo nuestra tarea.&lt;/p&gt;</description></item><item><title>Conectar de forma segura en redes abiertas con Android, ConnectBot y ProxyDroid</title><link>http://karpoke.ignaciocano.com/2012/07/24/conectar-de-forma-segura-en-redes-abiertas-con-android-connectbot-y-proxydroid/</link><pubDate>Tue, 24 Jul 2012 14:02:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/07/24/conectar-de-forma-segura-en-redes-abiertas-con-android-connectbot-y-proxydroid/</guid><description>&lt;p&gt;Si necesitamos conectarnos desde nuestro terminal con Android a una red
WiFi que no es segura, ya sea porque es una red abierta o porque no es
de confianza, podemos utilizar ConnectBot para crear un túnel SSH para
encauzar todas las conexiones que realicemos desde el terminal a través
de él.&lt;/p&gt;
&lt;p&gt;Para esto necesitaremos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acceso a un servidor SSH&lt;/li&gt;
&lt;li&gt;Un cliente SSH para Android, por ejemplo ConnectBot&lt;/li&gt;
&lt;li&gt;Un cliente proxy para Android, por ejemplo ProxyDroid&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://code.google.com/p/proxydroid/"&gt;ProxyDroid&lt;/a&gt; es una aplicación que permite crear un &lt;em&gt;proxy&lt;/em&gt;
transparente en terminales Android.&lt;/p&gt;</description></item><item><title>Conectar a un servidor SSH desde Android mediante ConnectBot utilizando claves</title><link>http://karpoke.ignaciocano.com/2012/07/24/conectar-a-un-servidor-ssh-desde-android-mediante-connectbot-utilizando-claves/</link><pubDate>Tue, 24 Jul 2012 13:06:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/07/24/conectar-a-un-servidor-ssh-desde-android-mediante-connectbot-utilizando-claves/</guid><description>&lt;p&gt;&lt;a href="http://code.google.com/p/connectbot/"&gt;ConnectBot&lt;/a&gt; es, en mi humilde opinión, el mejor cliente SSH para
Android. Nos permite conectarnos de forma segura a nuestro servidor SSH,
ya sea directamente o mediante la creación de un túnel SSH que sirva de
&lt;em&gt;proxy&lt;/em&gt; al resto de aplicaciones.&lt;/p&gt;
&lt;p&gt;La manera más segura de conectarnos es mediante la utilización de
claves. Este es un sistema de autenticación basado en criptografía
asimétrica, más seguro que utilizar &lt;em&gt;simples&lt;/em&gt; contraseñas.&lt;/p&gt;
&lt;p&gt;ConnectBot no sólo permite utilizar claves, sino que también nos permite
crearlas e importarlas. Para poder conectarnos a nuestro servidor sin
necesidad de utilizar contraseñas, lo primero será que éste esté
&lt;a href="http://karpoke.ignaciocano.com/2011/03/03/conectarse-por-ssh-solo-usando-la-clave/"&gt;configurado para aceptar claves&lt;/a&gt;. En particular, en el fichero
&lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;, debemos tener la directiva:&lt;/p&gt;</description></item><item><title>Lynis para auditorías de seguridad</title><link>http://karpoke.ignaciocano.com/2012/07/14/lynis-para-auditorias-de-seguridad/</link><pubDate>Sat, 14 Jul 2012 19:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/07/14/lynis-para-auditorias-de-seguridad/</guid><description>&lt;p&gt;&lt;a href="http://www.rootkit.nl/projects/lynis.html"&gt;Lynis&lt;/a&gt; es una herramienta para realizar auditorías en sistemas Unix.
Escanea el sistema en busca de vulnerabilidades y fallos de seguridad.
También muestra información general del sistema, paquetes instalados y
errores de configuración.&lt;/p&gt;
&lt;p&gt;Su objetivo es ayudar en el proceso de auditoría, actualización del
software y escaneo de vulnerabilidades y &lt;em&gt;malware&lt;/em&gt; en sistemas Unix. Se
puede ejecutar sin necesidad de instalación.&lt;/p&gt;
&lt;p&gt;Se puede utilizar en auditorías Basel II, GLBA, HIPAA, PCI DSS y SOX
(Sabarnes-Oxley). La &lt;a href="http://www.rootkit.nl/files/lynis-documentation.html"&gt;documentación&lt;/a&gt; está disponible en línea.&lt;/p&gt;</description></item><item><title>Conexión inalámbrica en Raspbmc</title><link>http://karpoke.ignaciocano.com/2012/07/03/conexion-inalambrica-en-raspbmc/</link><pubDate>Tue, 03 Jul 2012 03:33:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/07/03/conexion-inalambrica-en-raspbmc/</guid><description>&lt;p&gt;&lt;a href="http://karpoke.ignaciocano.com/2012/06/29/raspbmc/"&gt;El otro día&lt;/a&gt; me quedé sin poder probar la conexión inalámbrica en
Raspbmc porque los puertos USB de la Raspberry Pi no dan suficiente
potencia para la antena WiFi USB que tengo. Cada puerto USB proporciona
hasta 100mA, y parece que &lt;a href="https://help.ubuntu.com/community/WifiDocs/Driver/zydas_zd1211"&gt;el consumo de la antena&lt;/a&gt; oscila entre 150mA
y 200mA, por lo que no es suficiente. Quizá conectando un cable USB en Y
desde los dos USB podría llegar a funcionar, pero nos quedaríamos sin
puertos USB libres.&lt;/p&gt;</description></item><item><title>Raspbmc</title><link>http://karpoke.ignaciocano.com/2012/06/29/raspbmc/</link><pubDate>Fri, 29 Jun 2012 04:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/29/raspbmc/</guid><description>&lt;p&gt;&lt;a href="http://www.raspbmc.com/"&gt;Raspbmc&lt;/a&gt; es una distribución basada en debian que permite ejecutar
XBMC en la Raspberry Pi, lo que la transforma en un interesante
reproductor multimedia casero (HTPC).&lt;/p&gt;
&lt;p&gt;&lt;img alt="Raspbmc logo" loading="lazy" src="http://karpoke.ignaciocano.com/images/raspbmc-logo.png"&gt;&lt;/p&gt;
&lt;p&gt;Esta distribución recibe actualizaciones constantes que añaden mejoras,
actualizaciones de &lt;em&gt;drivers&lt;/em&gt; y nuevas funcionalidades. Además, permite
compartir el contenido multimedia a través de NFS, SMB, FTP y HTTP.
Raspbmc ha sido creada y está siendo mantenida por Sam Nazarko.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Raspbmc XBMC" loading="lazy" src="http://karpoke.ignaciocano.com/images/raspbmc-xbmc-300x196.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente &lt;a href="http://www.retrocomputers.eu/2012/06/20/watching-micro-men-via-xbmc-on-the-raspberry-pi/"&gt;retrocomputers.eu&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Mostrar las aplicaciones ocultas que se ejecutan al inicio</title><link>http://karpoke.ignaciocano.com/2012/06/28/mostrar-las-aplicaciones-ocultas-que-se-ejecutan-al-inicio/</link><pubDate>Thu, 28 Jun 2012 12:42:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/28/mostrar-las-aplicaciones-ocultas-que-se-ejecutan-al-inicio/</guid><description>&lt;p&gt;Las aplicaciones que se ejecutan al inicio tienen un archivo de
configuración en el directorio &lt;code&gt;/etc/xdg/autostart&lt;/code&gt;. Algunos de estos
archivos de configuración tienen la variable &lt;code&gt;NoDisplay=true&lt;/code&gt;, por lo
que no aparecen en el listado de Aplicaciones al inicio, y por tanto no
se pueden desactivar a golpe de ratón.&lt;/p&gt;
&lt;p&gt;Si queremos que &lt;a href="http://linuxzone.es/2012/06/07/tip-como-ver-las-aplicaciones-que-se-ejecutan-al-inicio-en-ubuntu/"&gt;estas aplicaciones se muestren&lt;/a&gt; y así poder
desactivarlas mediante la interfaz gráfica, ejecutamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo sed -i &amp;#39;s/NoDisplay=true/NoDisplay=false/&amp;#39; /etc/xdg/autostart/*
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si además queremos que &lt;a href="http://linuxzone.es/2012/06/07/tip-como-ver-las-aplicaciones-que-se-ejecutan-al-inicio-en-ubuntu/#comment-23800"&gt;cada vez que instalamos un programa se ejecute
este comando&lt;/a&gt;, podemos incluirlo en el archivo &lt;code&gt;/etc/apt.conf&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Abrir archivos .tec en GNU/Linux</title><link>http://karpoke.ignaciocano.com/2012/06/23/abrir-archivos-tec-en-gnulinux/</link><pubDate>Sat, 23 Jun 2012 13:41:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/23/abrir-archivos-tec-en-gnulinux/</guid><description>&lt;p&gt;Haciendo una copia de seguridad de los datos de un móvil con Android
ICS, he visto que existe un directorio llamado &lt;code&gt;cache&lt;/code&gt; en el mismo
directorio donde se guardan las fotos, &lt;code&gt;/sdcard/DCIM/Camera&lt;/code&gt;, que
contiene archivos cuya extensión es &lt;code&gt;.tec&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Echando un vistazo al contenido de estos archivos con &lt;code&gt;hexer&lt;/code&gt;, parece
ser que se trata de un archivo JFIF:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;00000000: ff d9 66 b3 00 00 ff d8 ff e0 00 10 4a 46 49 46 ..f.........JFIF
00000010: 00 01 01 00 00 01 00 01 00 00 ff db 00 43 00 05 .............C..
00000020: 03 04 04 04 03 05 04 04 04 05 05 05 06 07 0c 08 ................
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Por el nombre del directorio y por el tamaño de las fotos, menos de
100K, parece que &lt;a href="http://androidforums.com/samsung-galaxy-s2-international/427146-dcim-camera-cache.html"&gt;deben ser imágenes en miniatura&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Arch en Raspberry Pi</title><link>http://karpoke.ignaciocano.com/2012/06/22/arch-en-raspberry-pi/</link><pubDate>Fri, 22 Jun 2012 20:41:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/22/arch-en-raspberry-pi/</guid><description>&lt;p&gt;Después de haber estado usando la &lt;a href="http://karpoke.ignaciocano.com/2012/06/21/raspberry-pi/"&gt;Raspberry Pi con Debian&lt;/a&gt;, he
querido probar otras distribuciones, en este caso Arch.&lt;/p&gt;
&lt;p&gt;Desde la página de &lt;a href="http://www.raspberrypi.org/downloads"&gt;descargas&lt;/a&gt;, nos bajamos el torrent, así no
sobrecargamos el servidor.&lt;/p&gt;
&lt;h2 id="crear-una-copia-de-la-tarjeta-sd"&gt;Crear una copia de la tarjeta SD&lt;/h2&gt;
&lt;p&gt;He estado unos días trasteando con Debian, ya sabéis, modificando la
tabla de particiones para utilizar todo el espacio disponible,
instalando paquetes, configurándola a mi gusto, no mucho, pero si ahora
formateo la tarjeta, es un trabajo perdido. No sólo eso, sino que no
descarto tener que repetirlo de nuevo si posteriormente vuelvo a debian.
Puede que al final me quede con Arch, pero me apetece probar alguna
distribución más, como &lt;a href="http://www.raspbmc.com"&gt;Raspbmc&lt;/a&gt; o &lt;a href="http://www.pwnpi.com"&gt;PwnPi&lt;/a&gt;, así que me interesa
guardar una copia de la tarjeta. Quizá sería mejor opción crear una
máquina virtual con &lt;code&gt;qemu&lt;/code&gt; para probar otras distribuciones, o utilizar
tarjetas SD diferentes, pero dado lo sencillo que es hacer la copia esto
será lo primero que haga.&lt;/p&gt;</description></item><item><title>hpHosts, evitando la navegación por dominios maliciosos</title><link>http://karpoke.ignaciocano.com/2012/06/21/hphosts-evitando-la-navegacion-por-dominios-maliciosos/</link><pubDate>Thu, 21 Jun 2012 21:03:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/21/hphosts-evitando-la-navegacion-por-dominios-maliciosos/</guid><description>&lt;p&gt;Cuando navegamos por Internet, no somos conscientes de muchas de las
conexiones a diferentes dominios que se están llevando a cabo. Desde
páginas web que cargan o envían datos a otros dominios nada más
visitarlas, hasta casos de &lt;em&gt;phishing&lt;/em&gt; o conexiones realizadas por virus
o troyanos.&lt;/p&gt;
&lt;p&gt;hpHosts es un proyecto que mantiene una recopilación de dominios cuyo
contenido es malicioso, suplanta a otro (&lt;em&gt;phishing&lt;/em&gt;), busca estafarnos o
está relacionado con &lt;em&gt;spam&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Raspberry Pi</title><link>http://karpoke.ignaciocano.com/2012/06/21/raspberry-pi/</link><pubDate>Thu, 21 Jun 2012 13:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/21/raspberry-pi/</guid><description>&lt;p&gt;En pocas palabras, &lt;a href="http://www.raspberrypi.org/"&gt;Raspberry Pi&lt;/a&gt; es un ordenador del tamaño de una
tarjeta de crédito que puede reproducir vídeo en alta definición (HDMI)
y cuesta, dependiendo del modelo, 25$ sin &lt;em&gt;ethernet&lt;/em&gt; o 35$ con
&lt;em&gt;ethernet&lt;/em&gt; [1].&lt;/p&gt;
&lt;p&gt;&lt;img alt="Raspi Colour" loading="lazy" src="http://karpoke.ignaciocano.com/images/Raspi_Colour_R-248x300.png"&gt;&lt;/p&gt;
&lt;p&gt;Cuenta con un procesador ARM11 a 700Mhz, 256MB RAM, USB 2.0, conectores
de audio y RCA. Se alimenta a través de un puerto mini-USB y tiene una
ranura para una tarjeta SD (de hasta 32GB) que es donde se instala el
sistema operativo. No tiene WiFi, pero se le puede añadir una antena
WiFi USB.&lt;/p&gt;</description></item><item><title>AnonTwi, tweets cifrados</title><link>http://karpoke.ignaciocano.com/2012/06/16/anontwi-tweets-cifrados/</link><pubDate>Sat, 16 Jun 2012 13:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/16/anontwi-tweets-cifrados/</guid><description>&lt;p&gt;&lt;a href="http://anontwi.sourceforge.net/"&gt;AnonTwi&lt;/a&gt; es un &lt;em&gt;script&lt;/em&gt; en Python que permite enviar y recibir
&lt;em&gt;tweets&lt;/em&gt; y mensajes cifrados mediante AES y HMAC-SHA1 en Twitter, al que
se conecta mediante SSL. Otras caracterísiticas son la posibilidad de
usar la red TOR, envío de mensajes largos o la falsificación de las
cabeceras que envía.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;AnonTwi está todavía en fase &lt;em&gt;beta&lt;/em&gt; de desarrollo, algo que se debe
tener en cuenta según el uso que queramos darle, pero si queremos
probarlo, podemos usar la última versión descargándola del repositorio:&lt;/p&gt;</description></item><item><title>pbzip2, un bzip2 más rápido</title><link>http://karpoke.ignaciocano.com/2012/06/13/pbzip2-un-bzip2-mas-rapido/</link><pubDate>Wed, 13 Jun 2012 18:43:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/13/pbzip2-un-bzip2-mas-rapido/</guid><description>&lt;p&gt;&lt;code&gt;pbzip2&lt;/code&gt;, de &lt;em&gt;parallel bzip2&lt;/em&gt;, permite aprovechar toda la potencia de
los procesadores con más de un núcleo a la hora de comprimir o
descomprimir, cosa que &lt;code&gt;bzip2&lt;/code&gt; no hace.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;En Ubuntu se encuentra disponible en los repositorios:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install pbzip2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Su uso es idéntico al de &lt;code&gt;bzip2&lt;/code&gt;, por lo que podemos añadir un &lt;em&gt;alias&lt;/em&gt; a
&lt;code&gt;~/.bash_aliases&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;alias bzip2=pbzip2
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="referencias"&gt;Referencias&lt;/h2&gt;
&lt;p&gt;» &lt;a href="http://hackercodex.com/guide/parallel-bzip-compression/"&gt;Speed Up Compression via Parallel BZIP2 (PBZIP2)&lt;/a&gt;&lt;/p&gt;</description></item><item><title>webmin, configurando nuestro servidor a través del navegador</title><link>http://karpoke.ignaciocano.com/2012/06/12/webmin-configurando-nuestro-servidor-a-traves-del-navegador/</link><pubDate>Tue, 12 Jun 2012 20:05:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/12/webmin-configurando-nuestro-servidor-a-traves-del-navegador/</guid><description>&lt;p&gt;&lt;a href="http://www.webmin.com/"&gt;Webmin&lt;/a&gt; es una interfaz web para la administración de un servidor,
compatible con cualquier navegador moderno, mediante la que podemos
configurar cuentas de usuario, Apache, DNS, intercambio de ficheros,
etc. Es una alternativa a la configuración manual de ficheros.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Instalamos las dependencias:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Descargamos el paquete para Ubuntu y lo instalamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget http://downloads.sourceforge.net/webadmin/webmin_1.580_all.deb
$ md5sum webmin_1.580_all.deb
093c720a988125a536fa9fda16080fe6
$ sudo dpkg -i webmin_1.580_all.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para usar Webmin, accedemos al servidor en el puerto 10000. El usuario y
la contraseña son los mismos que utilizamos para iniciar sesión en el
servidor.&lt;/p&gt;</description></item><item><title>CDE, creando aplicaciones portables en GNU/Linux</title><link>http://karpoke.ignaciocano.com/2012/06/11/cde-creando-aplicaciones-portables-en-gnulinux/</link><pubDate>Mon, 11 Jun 2012 00:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/11/cde-creando-aplicaciones-portables-en-gnulinux/</guid><description>&lt;p&gt;&lt;a href="http://www.pgbovine.net/cde.html"&gt;CDE&lt;/a&gt; es un programa desarrollado por Philip Guo que permite crear
versiones portables de aplicaciones GNU/Linux, automatizando el proceso
de empaquetado de código, datos y dependencias requeridos para
ejecutarlas en otros equipos, sin que su uso requiera instalación ni
configuración.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Si queremos instalar la última versión en desarrollo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git clone git://github.com/pgbovine/CDE.git
$ cd CDE
$ make
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Una vez que termine de compilar, tendremos el programa ejecutable,
&lt;code&gt;cde&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="creando-aplicaciones-portables"&gt;Creando aplicaciones portables&lt;/h2&gt;
&lt;p&gt;Si queremos crear un versión portable, sólo tenemos que llamar al
ejecutable que hemos creado pasándole como parámetro el nombre del
programa. Por ejemplo, para crear una versión portable de &lt;code&gt;gimp&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Cambiar el firmware del router Comtrend AR-5381u por uno libre</title><link>http://karpoke.ignaciocano.com/2012/06/04/cambiar-el-firmware-del-router-comtrend-ar-5381u-por-uno-libre/</link><pubDate>Mon, 04 Jun 2012 13:32:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/04/cambiar-el-firmware-del-router-comtrend-ar-5381u-por-uno-libre/</guid><description>&lt;p&gt;Si tenemos un &lt;em&gt;router&lt;/em&gt; Comtrend AR-5381u, uno de los que entrega
Jazztel, podemos &lt;a href="http://bandaancha.eu/tema/1684224/nuevos-firms-no-oficiales-libres-fin-d-ar-5381u-soporte-3g-dlna-act-4-septiembre"&gt;actualizar el firmware que trae por uno libre no
oficial&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="por-qué-actualizar-el-firmware"&gt;¿Por qué actualizar el firmware?&lt;/h2&gt;
&lt;p&gt;Porque nos permite configurar completamente el &lt;em&gt;router&lt;/em&gt;, sin
restricciones. En particular, podremos cambiar el usuario de acceso al
&lt;em&gt;router&lt;/em&gt; o deshabilitar TS-069 (administración remota por parte de
Jazztel y que es imposible deshabilitar con el &lt;em&gt;firmware&lt;/em&gt; oficial) si
queremos.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Lo primero es escoger uno de los &lt;em&gt;firmware&lt;/em&gt; disponibles. En mi caso, he
probado el &lt;em&gt;firmware&lt;/em&gt; &lt;code&gt;657003-457(AR-5382u-A731-406CTL-C01_R07).bin&lt;/code&gt;. Se
puede descargar desde &lt;a href="http://bandaancha.eu/store/Jazztel/AR5381NOF.zip"&gt;bandaancha.eu&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Symfony en Ubuntu Lucid Lynx 10.04</title><link>http://karpoke.ignaciocano.com/2012/06/03/symfony-en-ubuntu-lucid-lynx-10-04/</link><pubDate>Sun, 03 Jun 2012 03:59:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/06/03/symfony-en-ubuntu-lucid-lynx-10-04/</guid><description>&lt;p&gt;&lt;a href="http://www.symfony-project.org/"&gt;Symfony&lt;/a&gt; es una &lt;em&gt;framework&lt;/em&gt; MVC escrito en PHP para el desarrollo
rápido de páginas web. Además, ofrece un conjunto de buenas prácticas
para desarrollar páginas más seguras y con un coste de mantenimiento
menor.&lt;/p&gt;
&lt;p&gt;Para que la instalación sea más segura, los ficheros de Symfony debería
estar fuera del &lt;code&gt;DocumentRoot&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="requisitos"&gt;Requisitos&lt;/h2&gt;
&lt;p&gt;Symfony se basa en entorno LAMPP, por lo que suponemos que ya tenemos
configurado Apache, MySQL y PHP versión 5.2.4 o superior. Para comprobar
si todo está correctamente configurado y que cumplimos los
requerimientos para Symfony, descargamos siguiente &lt;em&gt;script&lt;/em&gt; y lo
ejecutamos, pasando como parámetro la ruta al archivo &lt;code&gt;php.ini&lt;/code&gt; que
utiliza apache (por defecto, al ejecutarlo desde el terminal en lugar
del navegador, utiliza otro archivo &lt;code&gt;php.ini&lt;/code&gt;):&lt;/p&gt;</description></item><item><title>Identificar el tipo de hash</title><link>http://karpoke.ignaciocano.com/2012/05/15/identificar-el-tipo-de-hash/</link><pubDate>Tue, 15 May 2012 01:29:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/15/identificar-el-tipo-de-hash/</guid><description>&lt;p&gt;El &lt;em&gt;script&lt;/em&gt; &lt;code&gt;Hash_ID.py&lt;/code&gt;, desarrollado por Zion3R, nos permite
identificar los posibles algoritmos utilizados para crear un &lt;em&gt;hash&lt;/em&gt;. En
muchas ocasiones no se puede saber qué algoritmo concreto se ha
utilizado, pero nos devolverá una lista de candidatos.&lt;/p&gt;
&lt;p&gt;El &lt;em&gt;script&lt;/em&gt; compara el &lt;em&gt;hash&lt;/em&gt; con el tipo de &lt;em&gt;hash&lt;/em&gt; de algoritmos tales
como: ADLER-32, CRC-32, CRC-16, DES(Unix), FCS-16, GHash-32-5, GOST R
34.11-94, Haval-160, Haval-192 110080, Haval-224 114080, Haval-256,
Lineage II C4, Domain Cached Credentials, XOR-32, MD5(Half),
MD5(Middle), MySQL, MD5(phpBB3), MD5(Unix), MD5(Wordpress), MD5(APR),
MD2, MD4, MD5, MD5(HMAC(Wordpress)), NTLM, RAdmin v2.x, RipeMD-128,
SNEFRU-128, Tiger-128, MySQL5 - SHA-1(SHA-1($pass)), MySQL 160bit -
SHA-1(SHA-1($pass)), RipeMD-160, SHA-1, SHA-1(MaNGOS), Tiger-160,
Tiger-192, md5($pass.$salt) - Joomla, SHA-1(Django), SHA-224,
RipeMD-256, SNEFRU-256, md5($pass.$salt) - Joomla, SAM -
(LM_hash:NT_hash), SHA-256(Django), RipeMD-320, SHA-384, SHA-256,
SHA-384(Django), SHA-512, Whirlpool, etc.&lt;/p&gt;</description></item><item><title>Kippo, probando un honeypot en Ubuntu</title><link>http://karpoke.ignaciocano.com/2012/05/13/kippo-probando-un-honeypot-en-ubuntu/</link><pubDate>Sun, 13 May 2012 16:19:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/13/kippo-probando-un-honeypot-en-ubuntu/</guid><description>&lt;p&gt;Un &lt;em&gt;honeypot&lt;/em&gt; emula un servicio vulnerable, en caso de &lt;a href="http://code.google.com/p/kippo/"&gt;Kippo&lt;/a&gt; el de
SSH pero los hay también para otros servicios como FTP o web, con el fin
de registrar la interacción del atacante. De esta manera, se puede tener
constancia de la técnica y el tipo de ataques que se llevan a cabo. El
&lt;em&gt;honeypot&lt;/em&gt; puede ser de baja interacción, si emula un servicio no
existente, o de alta interacción, si trabaja sobre un servicio real.
Kippo es de los primeros.&lt;/p&gt;</description></item><item><title>Benchmarking de un servidor web</title><link>http://karpoke.ignaciocano.com/2012/05/10/benchmarking-de-un-servidor-web/</link><pubDate>Thu, 10 May 2012 19:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/10/benchmarking-de-un-servidor-web/</guid><description>&lt;p&gt;Con un sencillo comando podremos saber la carga que soporta nuestro
servidor web. Hay que tener cuidado contra qué servidor lo lanzamos y en
qué momento, porque puede que interfiera o impida el acceso a otros
usuarios.&lt;/p&gt;
&lt;p&gt;El comando es &lt;code&gt;ab&lt;/code&gt;, de &lt;em&gt;Apache Benchmarking&lt;/em&gt;, y permite multitud de
opciones, entre ellas el número de peticiones concurrentes, con el
argumento &lt;code&gt;-c&lt;/code&gt;, y la duración de la prueba, con el argumento &lt;code&gt;-t&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>ownCloud con MySQL en Ubuntu Lucid Lynx 10.04</title><link>http://karpoke.ignaciocano.com/2012/05/10/owncloud-con-mysql-en-ubuntu-lucid-lynx-10-04/</link><pubDate>Thu, 10 May 2012 16:17:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/10/owncloud-con-mysql-en-ubuntu-lucid-lynx-10-04/</guid><description>&lt;p&gt;&lt;img alt="Owncloud logo" loading="lazy" src="http://karpoke.ignaciocano.com/images/owncloud-logo-300x148.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://owncloud.org/"&gt;ownCloud&lt;/a&gt; es una aplicación de código abierto que nos facilita tener
nuestra propia nube, permitiendo guardar, sincronizar y compartir todo
tipo de archivos, incluyendo imágenes, música y vídeos. También tenemos
la posibilidad de incluir &lt;a href="http://apps.owncloud.com/"&gt;aplicaciones de terceros&lt;/a&gt; tales como un
calendario, un gestor de contactos, un editor de texto, gestión de
enlaces, etc.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Owncloud files" loading="lazy" src="http://karpoke.ignaciocano.com/images/owncloud-files-300x119.png"&gt;&lt;/p&gt;
&lt;p&gt;Para instalarlo en Ubuntu Lucid Lynx 10.04, seguiremos los siguientes
pasos.&lt;/p&gt;
&lt;p&gt;Instalamos las dependencias, incluyendo algunas opcionales:&lt;/p&gt;</description></item><item><title>Forzar el uso de SSL/HTTPS de un directorio en Apache2 mediante .htaccess y mod_rewrite</title><link>http://karpoke.ignaciocano.com/2012/05/10/forzar-el-uso-de-sslhttps-de-un-directorio-en-apache2-mediante-htaccess-y-mod_rewrite/</link><pubDate>Thu, 10 May 2012 15:35:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/10/forzar-el-uso-de-sslhttps-de-un-directorio-en-apache2-mediante-htaccess-y-mod_rewrite/</guid><description>&lt;p&gt;Si queremos que el acceso a un directorio concreto, es decir, que afecte
únicamente la ruta relativa en la URL que accede a ese directorio, se
realice mediante una conexión segura, suponiendo que ya tenemos
configurado el servidor de forma adecuada, basta incluir en ese
directorio un fichero &lt;code&gt;.htaccess&lt;/code&gt; que contenga:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Así, si por ejemplo, queremos que la ruta &lt;code&gt;http://localhost/secure/&lt;/code&gt; se
acceda de forma segura, suponiendo que el &lt;code&gt;DocumentRoot&lt;/code&gt; apunta a
&lt;code&gt;/var/www&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Opciones adicionales para trabajar con tablas vinculadas en phpMyAdmin</title><link>http://karpoke.ignaciocano.com/2012/05/10/opciones-adicionales-para-trabajar-con-tablas-vinculadas-en-phpmyadmin/</link><pubDate>Thu, 10 May 2012 12:26:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/05/10/opciones-adicionales-para-trabajar-con-tablas-vinculadas-en-phpmyadmin/</guid><description>&lt;p&gt;&lt;img alt="PhpMyAdmin Logo" loading="lazy" src="http://karpoke.ignaciocano.com/images/PhpMyAdmin-Logo-300x212.png"&gt;&lt;/p&gt;
&lt;p&gt;Puede que alguna vez hayamos visto este mensaje en el panel de
administración de phpMyAdmin:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Las opciones adicionales para trabajar con tablas vinculadas fueron
desactivadas. Para saber porqué, dé clic &lt;a href="http://www.phpmyadmin.net/localized_docs/es/Documentation.html#tracking"&gt;aquí&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Si seguimos el enlace, nos lleva a la documentación donde nos explican
que, a partir de la versión 3.3.x, está disponible el sistema de
&lt;em&gt;tracking&lt;/em&gt;, que es un sistema que permite realizar un seguimiento de las
consultas SQL ejecutadas por phpMyAdmin, tanto sentencias de definición
como de manipulación de datos, pudiendo guardar versiones de las tablas.&lt;/p&gt;</description></item><item><title>ZeroBin</title><link>http://karpoke.ignaciocano.com/2012/04/21/zerobin/</link><pubDate>Sat, 21 Apr 2012 17:31:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/04/21/zerobin/</guid><description>&lt;p&gt;ZeroBin es una aplicación web de código abierto que permite subir
textos, al estilo &lt;a href="http://pastebin.com/"&gt;pastebin.com&lt;/a&gt;, pero cifrados, de tal manera que
nadie que no conozca la clave puede tener acceso, ni siquiera el
servidor. Los datos se cifran y descifran en el navegador usando una
clave AES de 256 bits, utilizando la &lt;a href="http://crypto.stanford.edu/sjcl/"&gt;librería de cifrado y descifrado
en JavaScript&lt;/a&gt; de la universidad de Standford.&lt;/p&gt;
&lt;p&gt;Es rápido, fácil de utilizar y no necesita una base de datos, tan solo
un servidor de páginas PHP (5.2.6+) y un navegador moderno con soporte
JavaScript habilitado. Permite configurar que el contenido expire en un
tiempo determinado o comenzar una conversación entorno a él, entre
algunas de sus características, y otras que vendrán en futuras
versiones.&lt;/p&gt;</description></item><item><title>Arrancar y parar instancias minicloud de OVH desde el terminal</title><link>http://karpoke.ignaciocano.com/2012/04/20/arrancar-y-parar-instancias-minicloud-de-ovh-desde-el-terminal/</link><pubDate>Fri, 20 Apr 2012 03:05:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/04/20/arrancar-y-parar-instancias-minicloud-de-ovh-desde-el-terminal/</guid><description>&lt;p&gt;Si tenemos un &lt;em&gt;minicloud&lt;/em&gt; con OVH, podemos gestionar las instancias
(máquinas vituales) con un &lt;em&gt;script&lt;/em&gt; creado por &lt;a href="http://www.gallot.be/?p=124"&gt;Dominique Gallot&lt;/a&gt;. El
&lt;em&gt;script&lt;/em&gt; utiliza la &lt;a href="http://www.ovh.com/soapi/es/"&gt;API SOAP de OVH&lt;/a&gt;, de tal manera que permite
obtener información sobre las instancias, arrancarlas y pararlas desde
el terminal, sin tener que hacerlo desde el panel de administración.&lt;/p&gt;
&lt;p&gt;En la página de OVH tienen el &lt;em&gt;script&lt;/em&gt;
&lt;a href="http://www.ovh.com/fr/cloud/api/ovhcloud"&gt;&lt;code&gt;ovhclud&lt;/code&gt;, para gestionar la nube (Public Cloud)&lt;/a&gt;,
pero parece que todavía no soporta las instancias de &lt;em&gt;minicloud&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Apache2 y mod_security en Ubuntu Lucid Lynx 10.04</title><link>http://karpoke.ignaciocano.com/2012/04/12/apache2-y-mod_security-en-ubuntu-lucid-lynx-10-04/</link><pubDate>Thu, 12 Apr 2012 22:34:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/04/12/apache2-y-mod_security-en-ubuntu-lucid-lynx-10-04/</guid><description>&lt;p&gt;&lt;code&gt;mod_security&lt;/code&gt; es un módulo de Apache que actua como cortafuegos,
protegiendo contra diversos tipos de ataque, y permitiendo monitorizar
el tráfico HTTP en tiempo real.&lt;/p&gt;
&lt;p&gt;Por sí solo, el módulo no provee la protección, sino que deben añadirse
reglas. Afortunadamente, existen conjuntos de reglas predefinidos, como
el OWASP ModSecurity Core Rule Set Project, que nos facilitan la tarea.
Al contrario que los sistemas de detección de intrusos, basados en
firmas de vulnerabilidades conocidas, este conjunto de reglas protege
contra vulnerabilidades desconocidas que pueda haber en las aplicaciones
web.&lt;/p&gt;</description></item><item><title>Medir el ancho de banda entre dos equipos de la red</title><link>http://karpoke.ignaciocano.com/2012/04/08/medir-el-ancho-de-banda-entre-dos-equipos-de-la-red/</link><pubDate>Sun, 08 Apr 2012 13:27:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/04/08/medir-el-ancho-de-banda-entre-dos-equipos-de-la-red/</guid><description>&lt;p&gt;Mediante &lt;code&gt;iperf&lt;/code&gt; podemos medir el ancho de banda de nuestra red. El
programa se ejecuta en un equipo en modo servidor y se lanza desde cada
equipo desde el que queramos medir el ancho de banda en modo cliente.&lt;/p&gt;
&lt;p&gt;Por ejemplo, para probar el ancho de banda entre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un servidor conectado al &lt;em&gt;router&lt;/em&gt; por cable con la IP 192.168.50.100&lt;/li&gt;
&lt;li&gt;un portátil conectado a la red inalámbrica&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En el servidor ejecutamos:&lt;/p&gt;</description></item><item><title>Recuperar la dirección de WordPress</title><link>http://karpoke.ignaciocano.com/2012/04/05/recuperar-la-direccion-de-wordpress/</link><pubDate>Thu, 05 Apr 2012 14:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/04/05/recuperar-la-direccion-de-wordpress/</guid><description>&lt;p&gt;En el panel de administración de WordPress, en Ajustes &amp;gt; Generales,
podemos cambiar la dirección del blog o la dirección donde está
instalado Wordpress.&lt;/p&gt;
&lt;p&gt;Tenemos que tener cuidado si cambiamos la dirección de WordPress, ya que
podemos dejar el sitio, y en especial el panel de control, inaccesible.
O puede que lo que nos interese sea actualizar el dominio antiguo por el
nuevo.&lt;/p&gt;
&lt;p&gt;En ambas situaciones, si sólo se debe modificar el dominio, sin que se
deba cambiar ninguna ruta relativa de acceso al blog, podemos lograr
acceso al panel de administración incluyendo el nuevo dominio al archivo
&lt;code&gt;/etc/hosts&lt;/code&gt;, y desde ahí modificar cualquier variable que necesitemos.&lt;/p&gt;</description></item><item><title>Evitar el registro de comandos en el historial</title><link>http://karpoke.ignaciocano.com/2012/03/16/evitar-el-registro-de-comandos-en-el-historial/</link><pubDate>Fri, 16 Mar 2012 14:21:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/03/16/evitar-el-registro-de-comandos-en-el-historial/</guid><description>&lt;p&gt;Por diferentes motivos, nos puede interesar que lo que escribamos en el
terminal no quede registrado en el historial, por ejemplo, si
necesitamos escribir una contraseña. Esto se puede conseguir de
diferentes maneras. El historial cuenta con una copia en memoria,
accesible mediante el comando &lt;code&gt;history&lt;/code&gt;, que se vuelca en el fichero
&lt;code&gt;~/.bash_history&lt;/code&gt; al terminar la sesión.&lt;/p&gt;
&lt;p&gt;Las variables involucradas en el historial son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTCONTROL&lt;/code&gt;, contiene una lista de valores separados por coma que&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;indican bajo qué condiciones se deben añadir entradas al historial.
Estos valores pueden ser `ignorespace`, `ignoredups`, `ignoreboth` o
`erasedups`.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTFILE&lt;/code&gt;, contiene el nombre del fichero donde se guardará el&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;historial. Por defecto `~/.bash_history`.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTFILESIZE&lt;/code&gt;, contiene el número máximo de entradas que se&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;guardarán en el fichero. Por defecto, 500.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTIGNORE&lt;/code&gt;, contiene una lista separada por dos puntos &lt;code&gt;:&lt;/code&gt; de los&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;comandos que deben ser ignorados. Podemos utilizar `*` para crear
patrones que deban coincidir.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTSIZE&lt;/code&gt;, contiene el número de entradas en memoria que debe&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;contener el historial. Por defecto, 500.
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;HISTTIMEFORMAT&lt;/code&gt;, puede contener el formato utilizado para guardar&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;la fecha y hora asociada a cada entrada en el historial.
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="espacio-al-inicio"&gt;Espacio al inicio&lt;/h2&gt;
&lt;p&gt;Una opción es especificar que se ignoren las entradas que comiencen con
un espacio. Para activar esta opción de forma permanente, la variable
&lt;code&gt;HISTCONTROL&lt;/code&gt; debe contener el valor &lt;code&gt;ignorespace&lt;/code&gt; o &lt;code&gt;ignoreboth&lt;/code&gt;
(&lt;code&gt;ignoreboth&lt;/code&gt; incluye &lt;code&gt;ignorespace&lt;/code&gt; e &lt;code&gt;ignoredups&lt;/code&gt;, ésta última es para
ignorar duplicados) en nuestro archivo de configuración &lt;code&gt;~/.bashrc&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Reiniciar el router desde el terminal</title><link>http://karpoke.ignaciocano.com/2012/02/09/reiniciar-el-router-desde-bash/</link><pubDate>Thu, 09 Feb 2012 21:36:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/02/09/reiniciar-el-router-desde-bash/</guid><description>&lt;p&gt;De vez en cuando, necesitamos reiniciar nuestro &lt;em&gt;router&lt;/em&gt;. Por ejemplo,
para provocar un cambio de IP, si tenemos IP dinámica. Podemos acceder
al panel de administración del &lt;em&gt;router&lt;/em&gt; mediante el navegador,
normalmente en el puerto 80 u 8080, aunque también es posible hacerlo a
través de telnet, en el puerto 22.&lt;/p&gt;
&lt;p&gt;Para hacer más sencillo este trámite, utilizaremos un &lt;em&gt;script&lt;/em&gt; que se
conecta por telnet al &lt;em&gt;router&lt;/em&gt;, introduce el usuario y la contraseña y
lo reinicia mediante el comando &lt;code&gt;reboot&lt;/code&gt;. Esto dependerá de cada modelo
de &lt;em&gt;router&lt;/em&gt; en concreto, pero creo que funciona para un gran número. En
principio, no es posible apagarlo, sólo reiniciarlo.&lt;/p&gt;</description></item><item><title>Instalar deluge en Ubuntu Lucid Lynx</title><link>http://karpoke.ignaciocano.com/2012/02/09/instalar-deluge-en-ubuntu-lucid-lynx/</link><pubDate>Thu, 09 Feb 2012 02:31:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/02/09/instalar-deluge-en-ubuntu-lucid-lynx/</guid><description>&lt;p&gt;&lt;code&gt;deluge&lt;/code&gt; es un cliente de BitTorrent en el que la interfaz está separada
del núcleo, que corre como un servicio, lo que posibilita usarlo de
forma remota a través de una interfaz web.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Podemos instalar &lt;code&gt;deluge&lt;/code&gt; y su interfaz web desde los repositorios:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install deluged deluge-webui
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Crearemos el usuario &amp;ldquo;deluge&amp;rdquo; para ejecutar este servicio:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo adduser --disabled-password --system --home /var/lib/deluge --gecos &amp;#34;SamRo Deluge server&amp;#34; --group deluge
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Creamos el &lt;em&gt;script&lt;/em&gt; &lt;code&gt;/etc/default/deluge-daemon&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Instalación de un nuevo kernel PPA en Ubuntu</title><link>http://karpoke.ignaciocano.com/2012/01/26/instalacion-de-un-nuevo-kernel-ppa-en-ubuntu/</link><pubDate>Thu, 26 Jan 2012 12:19:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/01/26/instalacion-de-un-nuevo-kernel-ppa-en-ubuntu/</guid><description>&lt;p&gt;Esta receta muestra como &lt;a href="http://www.howopensource.com/2011/08/how-to-install-linux-kernel-3-1-rc2-oneiric-in-ubuntu-11-04-10-10-and-10-04/"&gt;instalar un nuevo kernel precompilado&lt;/a&gt; en
Ubuntu.&lt;/p&gt;
&lt;p&gt;Antes de continuar, cabe avisar de que si tenemos módulos del kernel que
no sean libres, por ejemplo, módulos de ATI, &lt;a href="http://www.ultimateeditionoz.com/forum/viewtopic.php?t=2504"&gt;Broadcom&lt;/a&gt; o
&lt;a href="http://unix.stackexchange.com/questions/10962/i-am-failing-to-build-virtualbox-driver-for-linux-2-6-38"&gt;Virtualbox&lt;/a&gt;, es posible que nos surja algún problema que deberemos
resolver en cada caso. En algunos casos, volver a reinstalar las
aplicaciones o los controladores puede funcionar.&lt;/p&gt;
&lt;p&gt;Instalamos &lt;code&gt;module-init-tools&lt;/code&gt;, una herramienta para gestionar módulos
del kernel que se encuentra en los repositorios, que puede evitar que
nos aparezcan algunos errores y avisos.&lt;/p&gt;</description></item><item><title>Configurar sSMTP para enviar correo mediante GMail desde el terminal</title><link>http://karpoke.ignaciocano.com/2012/01/14/configurar-ssmtp-para-enviar-correo-mediante-gmail-desde-el-terminal/</link><pubDate>Sat, 14 Jan 2012 13:50:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/01/14/configurar-ssmtp-para-enviar-correo-mediante-gmail-desde-el-terminal/</guid><description>&lt;p&gt;Con esta receta, podremos enviar correos electrónicos desde el terminal
sin necesidad de tener instalado un servidor de correo, simplemente
utilizando una cuenta de GMail y sSMTP, que se encuentra en los
repositorios. Esta opción puede estar bien para enviar correos desde un
sistema que utilizamos sólo nosotros, pero no es un sustituto de un
servidor de correo como Sendmail, Exim o Postfix.&lt;/p&gt;
&lt;p&gt;Para configurarlo, editamos el fichero &lt;code&gt;/etc/ssmtp/ssmtp.conf&lt;/code&gt; y
añadimos las siguientes líneas al final del mismo:&lt;/p&gt;</description></item><item><title>Instalando MySQL Workbench desde el código fuente en Ubuntu Oneiric Ocelot</title><link>http://karpoke.ignaciocano.com/2012/01/10/instalando-mysql-workbench-desde-el-codigo-fuente-en-ubuntu-oneiric-ocelot/</link><pubDate>Tue, 10 Jan 2012 16:16:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2012/01/10/instalando-mysql-workbench-desde-el-codigo-fuente-en-ubuntu-oneiric-ocelot/</guid><description>&lt;p&gt;&lt;a href="http://www.mysql.com/products/workbench/"&gt;MySQL Workbench&lt;/a&gt; es una herramienta que permite diseñar y administrar
una base de datos MySQL y proporciona herramientas para la configuración
del servidor y la administración de los usuarios.&lt;/p&gt;
&lt;p&gt;MySQL Workbench no se encuentra en los repositorios de Ubuntu, y desde
la &lt;a href="http://dev.mysql.com/downloads/workbench#downloads"&gt;página de descargas&lt;/a&gt; todavía no hay un paquete para Ubuntu Oneiric
Ocelot (11.10).&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Para instalar MySQL Workbench, primero nos bajamos el código fuente.
Ahora mismo, la última versión es la 5.2.37.&lt;/p&gt;</description></item><item><title>TLSSLed v1.2</title><link>http://karpoke.ignaciocano.com/2011/10/23/tlssled-v1-2/</link><pubDate>Sun, 23 Oct 2011 15:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/10/23/tlssled-v1-2/</guid><description>&lt;p&gt;&lt;a href="http://www.taddong.com/en/lab.html#TLSSLED"&gt;TLSSLed&lt;/a&gt; es un &lt;em&gt;script&lt;/em&gt; cuya finalidad es evaluar la seguridad de
SSL/TLS de un servidor web. Se basa en el escáner de SSL/TLS, &lt;code&gt;sslscan&lt;/code&gt;,
el cual a su vez se basa en la librería &lt;code&gt;openssl&lt;/code&gt;, y en el comando
openssl s_client. Entre las comprobaciones que realiza se incluyen
comprobar si el servidor soporta SSLv2, cifrado NULL, cifrados débiles
por la longitud de su clave (40 ó 56 bits), la disponibilidad de
cifrados fuertes, como AES, si el certificado está firmado con MD5 y si
permite la renegociación de SSL/TLS.&lt;/p&gt;</description></item><item><title>El consumo de la batería</title><link>http://karpoke.ignaciocano.com/2011/10/01/el-consumo-de-la-bateria/</link><pubDate>Sat, 01 Oct 2011 19:55:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/10/01/el-consumo-de-la-bateria/</guid><description>&lt;p&gt;Con las últimas versiones del &lt;em&gt;kernel&lt;/em&gt; el &lt;a href="http://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_mobile_uffda#=1"&gt;consumo de la batería se
había disparado&lt;/a&gt;, reduciendo el tiempo de vida útil de la batería. Las
baterías son un bien preciado, por lo que existen multitud de trucos
para intentar &lt;a href="http://karpoke.ignaciocano.com/2010/09/26/la-bateria-del-portatil/"&gt;alargar su tiempo de vida&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Aunque no se conoce con certeza si &lt;a href="http://elsoftwarelibre.wordpress.com/2011/09/29/el-elevado-consumo-de-energia-de-las-ultimas-versiones-del-kernel-de-linux-%C2%BFverdad-o-mito/"&gt;este elevado consumo podría deberse
a un fallo&lt;/a&gt;, en los casos en que la BIOS indicaba que ASPM no estaba
soportado estando éste habilitado, o a la configuración en algunos
&lt;a href="http://www.fewt.com/2011/09/about-kernel-30-power-regression-myth.html"&gt;parámetros del &lt;em&gt;kernel&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Túnel SSH inverso</title><link>http://karpoke.ignaciocano.com/2011/09/30/tunel-ssh-inverso/</link><pubDate>Fri, 30 Sep 2011 18:03:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/09/30/tunel-ssh-inverso/</guid><description>&lt;p&gt;El escenario es el siguiente. Tenemos un equipo remoto C detrás de un
cortafuegos, &lt;em&gt;router&lt;/em&gt; o similar, que no podemos configurar y no permite
conexiones entrantes, de tal manera que el equipo es inaccesible desde
el exterior de la red en la que está. Otro equipo A, el nuestro, también
está detrás de un cortafuegos, en otra red, que tampoco podemos
configurar y tampoco permite conexiones entrantes. La buena noticia es
que tenemos un servidor remoto B en otra red diferente al que sí tenemos
acceso por SSH desde el equipo remoto C y desde el nuestro (el A). Tanto
el equipo remoto C como el servidor B tienen un servidor SSH corriendo.&lt;/p&gt;</description></item><item><title>Imagen a través de SSH</title><link>http://karpoke.ignaciocano.com/2011/09/28/imagen-a-traves-de-ssh/</link><pubDate>Wed, 28 Sep 2011 20:48:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/09/28/imagen-a-traves-de-ssh/</guid><description>&lt;p&gt;Si tenemos acceso por SSH a otro ordenador, ambos con entorno gráfico,
podemos redirigir la pantalla, el teclado y el ratón en ambos sentidos,
es decir, podemos conseguir cosas como:&lt;/p&gt;
&lt;p&gt;» &lt;a href="#aplicaciones-remotas-a-servidor-local"&gt;aplicaciones remotas que se muestren en nuestro equipo&lt;/a&gt;
» &lt;a href="#aplicaciones-remotas-a-servidor-remoto"&gt;aplicaciones remotas que se muestren en el equipo remoto&lt;/a&gt;
» &lt;a href="#aplicaciones-locales-a-servidor-remoto"&gt;aplicaciones locales que se muestren en el equipo remoto&lt;/a&gt;
» &lt;a href="#captura-escritorio-remoto-a-local"&gt;recibir una captura de pantalla del equipo remoto&lt;/a&gt;
» [enviar una captura de pantalla de nuestro equipo al equipo&lt;/p&gt;</description></item><item><title>Descargar archivos de Megaupload desde el terminal con plowshare</title><link>http://karpoke.ignaciocano.com/2011/09/18/descargar-archivos-de-megaupload-desde-el-terminal-con-plowshare/</link><pubDate>Sun, 18 Sep 2011 03:57:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/09/18/descargar-archivos-de-megaupload-desde-el-terminal-con-plowshare/</guid><description>&lt;p&gt;&lt;a href="http://code.google.com/p/plowshare/"&gt;plowshare&lt;/a&gt; es una herramienta diseñada para descargar y subir
ficheros a los sitios de intercambio de ficheros más populares. También
se pueden administrar directorios remotos y borrar enlaces.&lt;/p&gt;
&lt;h2 id="instalación"&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Primero, instalamos las dependencias:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install curl recode imagemagick tesseract-ocr-eng spidermonkey-bin rhino perlmagick aview
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Podemos descargar el código fuente desde el repositorio Git, en un
&lt;em&gt;tarball&lt;/em&gt; o en un paquete &lt;code&gt;.deb&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget https://plowshare.googlecode.com/files/plowshare_1%7Egit20110914-1_all.deb
$ sudo dpkg -i plowshare_1~git20110914-1_all.deb
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="descargando"&gt;Descargando&lt;/h2&gt;
&lt;p&gt;Para descargar un enlace de Megaupload, por ejemplo, escribimos:&lt;/p&gt;</description></item><item><title>fwknop: Single Packet Authorization y port knocking</title><link>http://karpoke.ignaciocano.com/2011/09/18/fwknop-single-packet-authorization-y-port-knocking/</link><pubDate>Sun, 18 Sep 2011 00:49:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/09/18/fwknop-single-packet-authorization-y-port-knocking/</guid><description>&lt;p&gt;&lt;code&gt;fwknop&lt;/code&gt; implementa un esquema de autorización llamado &lt;em&gt;Single Packet
Authorization (SPA)&lt;/em&gt;. Mediante SPA necesita un único paquete cifrado
para abrir puertos en el cortafuegos o llevar a cabo acciones en el
sistema. Se utiliza en conjunción con un cortafuegos que impide la
conexión a los puertos de los servicios que queremos proteger. De esta
forma, se logra una capa extra de seguridad, ya que los hace permanecer
invisibles, descartando silenciosamente los paquetes que llegan a dicho
puerto. Para poder tener acceso a los servicios protegidos, la parte
servidor de &lt;code&gt;fwknop&lt;/code&gt; esnifa pasivamente los paquetes que llegan al
servidor usando &lt;code&gt;libpcap&lt;/code&gt; y, en caso de recibir de parte del cliente de
&lt;code&gt;fwknop&lt;/code&gt; un paquete cifrado válido que no ha sido recibido antes, se
permite el acceso a través del cortafuegos.&lt;/p&gt;</description></item><item><title>HTTP Strict Transport Security</title><link>http://karpoke.ignaciocano.com/2011/09/11/http-strict-transport-security/</link><pubDate>Sun, 11 Sep 2011 17:37:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/09/11/http-strict-transport-security/</guid><description>&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security"&gt;HTTP Strict Transport Security&lt;/a&gt; (HSTS) es un mecanismo de seguridad
web donde el servidor exige que las conexiones se realicen únicamente
mediante conexiones seguras. El servidor informa de esta política de
seguridad utilizando la cabecera &lt;code&gt;Strict-Transport-Security&lt;/code&gt;, en donde
se especifica el periodo durante el cual las conexiones seguras son
obligatorias.&lt;/p&gt;
&lt;p&gt;Si una web proporciona acceso seguro (HTTPS) pero accedemos de forma no
segura (HTTP) &lt;a href="http://hacks.mozilla.org/2010/08/firefox-4-http-strict-transport-security-force-https/"&gt;podría suceder que nos redirija a la versión segura&lt;/a&gt;,
sin embargo, ya se había iniciado una conversación sin cifrar. Este
comportamiento puede ser explotado por un ataque &lt;em&gt;Man-In-The-Middle&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Últimos paquetes instalados</title><link>http://karpoke.ignaciocano.com/2011/08/27/ultimos-paquetes-instalados/</link><pubDate>Sat, 27 Aug 2011 18:14:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/27/ultimos-paquetes-instalados/</guid><description>&lt;p&gt;En el fichero &lt;code&gt;/var/log/dpkg.log&lt;/code&gt; se registran las operaciones sobre los
paquetes que tenemos en el sistema: instalaciones, actualizaciones,
eliminaciones, etc. Para obtener una lista de los &lt;a href="http://distilledb.com/blog/archives/date/2009/06/30/getting-a-list-of-recently-installed-packages-in-ubuntu.page"&gt;últimos paquetes
instalados&lt;/a&gt; ejecutamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ cat /var/log/dpkg.log* | grep &amp;#34; install &amp;#34; | sort
...
2011-08-24 12:11:04 install linux-image-2.6.38-11-generic-pae &amp;lt; ninguna&amp;gt; 2.6.38-11.48
2011-08-24 12:11:27 install linux-headers-2.6.38-11 &amp;lt; ninguna&amp;gt; 2.6.38-11.48
2011-08-24 12:11:33 install linux-headers-2.6.38-11-generic-pae &amp;lt; ninguna&amp;gt; 2.6.38-11.48
2011-08-26 18:25:40 install libcgal5 &amp;lt; ninguna&amp;gt; 3.6.1-2ubuntu2
2011-08-26 18:25:41 install libopencsg1 &amp;lt; ninguna&amp;gt; 1.3.1-4
2011-08-26 18:25:42 install openscad &amp;lt; ninguna&amp;gt; 2011.06-1+natty1
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Evitando el hotlinking</title><link>http://karpoke.ignaciocano.com/2011/08/16/evitando-el-hotlinking/</link><pubDate>Tue, 16 Aug 2011 14:05:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/16/evitando-el-hotlinking/</guid><description>&lt;p&gt;Si tenemos una página web que contiene imágenes, tarde o temprano,
alguien terminará mostrándolas en otro sitio, enlazándolas directamente
y utilizando nuestro ancho de banda. Vamos, lo que se conoce como
&lt;em&gt;hotlinking&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;La siguiente &lt;a href="http://httpd.apache.org/docs/2.3/rewrite/access.html"&gt;técnica se basa en el valor de la variable
&lt;code&gt;HTTP_REFERER&lt;/code&gt;&lt;/a&gt;, la cual es opcional, por lo que podría ser posible
saltársela. Sin embargo, la mayoría de las veces impedirá el
&lt;em&gt;hotlinking&lt;/em&gt;. Como contrapartida, si alguien pone un enlace a una
imagen, un usuario no podrá verla pulsando en el enlace, ya que el
navegador incluirá como &lt;em&gt;referer&lt;/em&gt; una URL externa y será bloqueada por
el sistema.&lt;/p&gt;</description></item><item><title>SSH over HTTP-Proxy</title><link>http://karpoke.ignaciocano.com/2011/08/15/ssh-over-http-proxy/</link><pubDate>Mon, 15 Aug 2011 04:29:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/15/ssh-over-http-proxy/</guid><description>&lt;p&gt;A veces, queremos poder navegar o chatear por Internet pero no queremos
que nadie pueda conocer, ni bloquear, las páginas que visitamos o espiar
nuestras conversaciones, bien porque porque estamos en el trabajo, la
universidad o en una red abierta. En la red a la que estamos conectados
puede que utilicen un &lt;em&gt;proxy&lt;/em&gt; para controlar y bloquear servicios. Este
&lt;a href="http://ha.ckers.org/trillianremote.html"&gt;bloqueo podría ser por puerto o por protocolo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Es posible que bloqueen algunas URLs, o IPs, pero seguramente tenemos
acceso a la web, es decir, los puertos 80 y 443. Crearemos un túnel
seguro para poder navegar seguros y evitar estas restricciones. Eso sí,
puede que aparezca en algún &lt;em&gt;log&lt;/em&gt; que nos hemos conectado a nuestra
máquina remota.&lt;/p&gt;</description></item><item><title>Obteniendo la IP pública, la IP privada y la dirección MAC en Bash</title><link>http://karpoke.ignaciocano.com/2011/08/14/obteniendo-la-ip-publica-la-ip-privada-y-la-direccion-mac-en-bash/</link><pubDate>Sun, 14 Aug 2011 19:26:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/14/obteniendo-la-ip-publica-la-ip-privada-y-la-direccion-mac-en-bash/</guid><description>&lt;p&gt;En los &lt;em&gt;scripts&lt;/em&gt; que escribimos, a menudo, es necesario conocer la IP pública
de nuestra red, o la IP privada y la dirección MAC de una interfaz de red. Con
el comando &lt;code&gt;ifconfig&lt;/code&gt; podemos conocer la información de las interfaces de red:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ifconfig
eth0 Link encap:Ethernet direcciónHW 00:11:22:33:44:55
Direc. inet:192.168.0.30 Difus.:192.168.0.255 Másc:255.255.255.0
Dirección inet6: fe80::203:dff:fe3c:f419/64 Alcance:Enlace
ACTIVO DIFUSI–N FUNCIONANDO MULTICAST MTU:1500 Métrica:1
Paquetes RX:1627 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:1067 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:1000
Bytes RX:560137 (560.1 KB) TX bytes:235094 (235.0 KB)
Interrupción:19 Dirección base: 0xc800
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;eth1 Link encap:Ethernet direcciónHW 00:11:22:33:44:66
DIFUSI–N MULTICAST MTU:1500 Métrica:1
Paquetes RX:0 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:0 errores:0 perdidos:0 overruns:0 carrier:0 colisiones:0 long.colaTX:1000
Bytes RX:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupción:21 Dirección base: 0x8000 Memoria:ffcfe000-ffcfefff
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;lo Link encap:Bucle local
Direc. inet:127.0.0.1 Másc:255.0.0.0
Dirección inet6: ::1/128 Alcance:Anfitrión
ACTIVO BUCLE FUNCIONANDO MTU:16436 Métrica:1
Paquetes RX:3299 errores:0 perdidos:0 overruns:0 frame:0
Paquetes TX:3299 errores:0 perdidos:0 overruns:0 carrier:0
colisiones:0 long.colaTX:0
Bytes RX:355696 (355.6 KB) TX bytes:355696 (355.6 KB)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sin embargo, si queremos utilizar el dato en concreto—la IP privada o la
dirección MAC—, necesitaremos trabajar un poco la salida que muestra
&lt;code&gt;ifconfig&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Utilizar SSH para establecer un servidor proxy SOCKS</title><link>http://karpoke.ignaciocano.com/2011/08/12/utilizar-ssh-para-establecer-un-servidor-proxy-socks/</link><pubDate>Fri, 12 Aug 2011 13:07:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/12/utilizar-ssh-para-establecer-un-servidor-proxy-socks/</guid><description>&lt;p&gt;Un &lt;em&gt;proxy&lt;/em&gt; SOCKS es un servidor que permite el acceso, normalmente, a
través de un cortafuegos. Podemos utilizar SSH para crear un &lt;em&gt;proxy&lt;/em&gt;
SOCKSv5 en local, de tal manera que si configuramos una aplicación para
que se conecte a través de este &lt;em&gt;proxy&lt;/em&gt;, todo el tráfico vaya a través
del canal seguro creado por SSH, y sea como si la conexión con dicha
aplicación se hiciera en la máquina remota a la cual nos hemos conectado
por SSH. Además, podemos utilizarlo con varias aplicaciones y diferentes
protocolos.&lt;/p&gt;</description></item><item><title>Servicio de SSH con sistema de verificación en dos pasos de Google en Ubuntu Natty Narwhal</title><link>http://karpoke.ignaciocano.com/2011/08/05/servicio-de-ssh-con-sistema-de-verificacion-en-dos-pasos-de-google-en-ubuntu-natty-narwhal/</link><pubDate>Fri, 05 Aug 2011 02:21:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/05/servicio-de-ssh-con-sistema-de-verificacion-en-dos-pasos-de-google-en-ubuntu-natty-narwhal/</guid><description>&lt;p&gt;Un sistema de verificación en dos pasos, (&lt;em&gt;Two Factor Authentication&lt;/em&gt; o
2FA) consiste en que la autenticación a un servicio se realiza mediante
dos piezas de información, una que conocemos y otra que no. La pieza que
conocemos es nuestra contraseña, que es susceptible de ser sustraída,
mientras que la información que no conocemos es un número de
identificación (PIN) aleatorio que cambia cada 30 segundos y que está
vinculado con un dispositivo hardware. Esto es lo que se conoce como una
contraseña de un solo uso (One Time Password u OTP). De esta forma,
aunque alguien nos robe o averigüe nuestra contraseña, a no ser que
también tenga acceso al dispositivo que crea los PINs, no podrá acceder
al servicio con nuestra cuenta.&lt;/p&gt;</description></item><item><title>sudo vacilón</title><link>http://karpoke.ignaciocano.com/2011/08/04/sudo-vacilon/</link><pubDate>Thu, 04 Aug 2011 13:32:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/04/sudo-vacilon/</guid><description>&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo passwd
[sudo] password for user:
Are you on drugs?
[sudo] password for user:
Maybe if you used more than just two fingers...
[sudo] password for user:
I’ve seen penguins that can type better than that.
sudo: 3 incorrect password attempts
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si te gustaría recibir un piropo cada vez que &lt;a href="http://usemoslinux.blogspot.com/2011/08/sudo-no-me-insultes-el-terminal-se.html"&gt;escribes mal la
contraseña de &lt;code&gt;sudo&lt;/code&gt;&lt;/a&gt;, no
tienes más que editar el archivo de configuración de &lt;a href="http://karpoke.ignaciocano.com/posts/memo/with-great-power-comes-great-responsibility/"&gt;&lt;code&gt;sudo&lt;/code&gt;&lt;/a&gt;,
&lt;code&gt;/etc/sudoers&lt;/code&gt;, mediante el comando &lt;code&gt;visudo&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>namebench, benchmarking de servidores DNS</title><link>http://karpoke.ignaciocano.com/2011/08/01/namebench-benchmarking-de-servidores-dns/</link><pubDate>Mon, 01 Aug 2011 19:40:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/01/namebench-benchmarking-de-servidores-dns/</guid><description>&lt;p&gt;Mediante &lt;a href="http://code.google.com/p/namebench/"&gt;&lt;code&gt;namebench&lt;/code&gt;&lt;/a&gt; se puede comprobar la velocidad de nuestros
DNSs y compararla con los servidores DNS de Google y los mejores
servidores DNS que pueda encontrar para nuestra localización. Para
realizar las pruebas, se utiliza un listado compuesto por los dominios
más visitados según el ranking de Alexa y las páginas visitadas que se
encuentren en el historial de nuestro navegador, incluyendo a Firefox o
Chromium. Tiene la opción de poder &lt;a href="http://code.google.com/p/namebench/wiki/UsingNameBenchCommandLine"&gt;utilizarse desde el terminal&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Limitando el número de procesos por usuario</title><link>http://karpoke.ignaciocano.com/2011/08/01/limitando-el-numero-de-procesos-por-usuario/</link><pubDate>Mon, 01 Aug 2011 19:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/01/limitando-el-numero-de-procesos-por-usuario/</guid><description>&lt;p&gt;Mediante el comando &lt;code&gt;ulimit&lt;/code&gt; podemos consultar y controlar el valor de los
recursos disponibles para la consola y los &lt;a href="http://karpoke.ignaciocano.com/2010/12/16/mejora-del-rendimiento-interactivo-agrupando-tareas-por-terminal/"&gt;procesos que puedan ser iniciados
desde ella&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Las diferentes opciones que acepta este comando son:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;-a All current limits are reported
-b The maximum socket buffer size
-c The maximum size of core files created
-d The maximum size of a process’s data segment
-e The maximum scheduling priority (&amp;#34;nice&amp;#34;)
-f The maximum size of files written by the shell and its children
-i The maximum number of pending signals
-l The maximum size that may be locked into memory
-m The maximum resident set size (many systems do not honor this limit)
-n The maximum number of open file descriptors (most systems do not allow this value to be set)
-p The pipe size in 512-byte blocks (this may not be set)
-q The maximum number of bytes in POSIX message queues
-r The maximum real-time scheduling priority
-s The maximum stack size
-t The maximum amount of cpu time in seconds
-u The maximum number of processes available to a single user
-v The maximum amount of virtual memory available to the shell and, on some systems, to its children
-x The maximum number of file locks
-T The maximum number of threads
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para consultar todos los valores asignados actualmente:&lt;/p&gt;</description></item><item><title>Controlando la actividad de los usuarios conectados</title><link>http://karpoke.ignaciocano.com/2011/08/01/controlando-la-actividad-de-los-usuarios-conectados/</link><pubDate>Mon, 01 Aug 2011 12:51:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/08/01/controlando-la-actividad-de-los-usuarios-conectados/</guid><description>&lt;p&gt;Podemos utilizar varios comandos para saber qué &lt;a href="http://karpoke.ignaciocano.com/2010/10/22/la-guardiana-de-la-puerta/"&gt;usuarios están
conectados al sistema&lt;/a&gt;, desde cuando y qué están haciendo. También
podemos saber cuando se han conectado anteriormente.&lt;/p&gt;
&lt;p&gt;También podríamos interactuar con los usuarios, enviarles mensajes,
matarles procesos, echarlos del sistema, etc, pero ahora nos vamos a
centrar en saber cuando entran, cuando salen y qué están haciendo.&lt;/p&gt;
&lt;h2 id="w"&gt;&lt;code&gt;w&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Con &lt;code&gt;w&lt;/code&gt; podemos saber que usuarios están conectados ahora mismo y que
procesos están ejecutando.&lt;/p&gt;</description></item><item><title>sslh, compartiendo el puerto 443</title><link>http://karpoke.ignaciocano.com/2011/07/30/sslh-compartiendo-el-puerto-443/</link><pubDate>Sat, 30 Jul 2011 19:21:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/30/sslh-compartiendo-el-puerto-443/</guid><description>&lt;p&gt;Podemos tener varios motivos para tener escuchando nuestro servicio de SSH en
el puerto 443. Ya sea porque queremos evitarnos los continuos intentos de
conexión que sufrimos por tener el servicio escuchando en el puerto 22 o porque
desde donde estemos, ya sea en el trabajo o en un hotel, no estén permitidas
las conexiones que no sean al puerto 80 o 443. Pero, ¿y si &lt;a href="http://dischord.org/blog/2010/08/25/multiplexing-ssh-and-ssl/"&gt;ya tenemos un
servidor web&lt;/a&gt; escuchando en el puerto 443?&lt;/p&gt;</description></item><item><title>Endianness</title><link>http://karpoke.ignaciocano.com/2011/07/30/endianness/</link><pubDate>Sat, 30 Jul 2011 17:34:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/30/endianness/</guid><description>&lt;p&gt;&amp;ldquo;&lt;a href="http://secure.wikimedia.org/wikipedia/es/wiki/Endianness"&gt;Endianicidad&lt;/a&gt;&amp;rdquo; designa el formato en el que se almacenan los datos
de más de un byte en un ordenador. El sistema &lt;em&gt;big-endian&lt;/em&gt; adoptado por
Motorola entre otros, consiste en representar los bytes en el orden
&amp;ldquo;natural&amp;rdquo;, así el valor hexadecimal 0x4A3B2C1D se codificaría en memoria
en la secuencia {4A, 3B, 2C, 1D}. En el sistema &lt;em&gt;little-endian&lt;/em&gt; adoptado
por Intel, entre otros, el mismo valor se codificaría como {1D, 2C, 3B,
4A}, de manera que de este modo se hace más intuitivo el acceso a datos,
porque se efectúa fácilmente de manera incremental de menos relevante a
más relevante (siempre se opera con incrementos de contador en la
memoria).&lt;/p&gt;</description></item><item><title>Salvapantallas con el código fuente del kernel</title><link>http://karpoke.ignaciocano.com/2011/07/28/salvapantallas-con-el-codigo-fuente-del-kernel/</link><pubDate>Thu, 28 Jul 2011 12:42:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/28/salvapantallas-con-el-codigo-fuente-del-kernel/</guid><description>&lt;p&gt;Si queremos que cada vez que aparezca el salvapantallas, lo haga
mostrando algunas líneas del código fuente del &lt;em&gt;kernel&lt;/em&gt; por pantalla,
sólo necesitamos configurar el salvapantallas &lt;code&gt;phosphor&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Phosphor" loading="lazy" src="http://karpoke.ignaciocano.com/images/phosphor-300x178.png"&gt;&lt;/p&gt;
&lt;p&gt;Lo primero es instalar el código fuente del &lt;code&gt;kernel&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo apt-get source linux-source-$(uname -r)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;El comando &lt;code&gt;uname&lt;/code&gt; muestra información acerca del sistema operativo
instalado, la versión del kernel, la familia del procesador, el nombre
de la máquina o la plataforma. En mi caso, uso un kernel PAE, porque
tengo una Ubuntu de 32 bits y 4 GB de RAM, por lo que el comando
anterior no me ha ido del todo bien:&lt;/p&gt;</description></item><item><title>Instalar módulos de CPAN usando CPAN</title><link>http://karpoke.ignaciocano.com/2011/07/22/instalar-modulos-de-cpan-usando-cpan/</link><pubDate>Fri, 22 Jul 2011 02:45:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/22/instalar-modulos-de-cpan-usando-cpan/</guid><description>&lt;p&gt;Una de las razones para querer instalar módulos del repositorio CPAN de
Perl utilizando, a su vez, el módulo &lt;code&gt;cpan&lt;/code&gt;, es que los módulos están
más actualizados que en los paquetes de los repositorios. Para
conseguirlo, podemos seguir los siguientes pasos&lt;/p&gt;
&lt;p&gt;Necesitamos tener instalado el paquete &lt;code&gt;build-essential&lt;/code&gt;. Lanzamos la
consola CPAN, con &lt;a href="http://www.troubleshooters.com/codecorn/littperl/perlcpan.htm"&gt;privilegios de administrador&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo perl -MCPAN -e shell
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;o también podríamos ejecutar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo cpan
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si no tuviéramos permisos, parece que también es posible &lt;a href="http://perl.jonallen.info/writing/articles/install-perl-modules-without-root"&gt;instalar
módulos de Perl sin tener privilegios de administrador&lt;/a&gt;, mediante el
módulo &lt;code&gt;local::lib&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Instalar Google Earth en Ubuntu Natty Narwhal</title><link>http://karpoke.ignaciocano.com/2011/07/15/instalar-google-earth-en-ubuntu-natty-narwhal/</link><pubDate>Fri, 15 Jul 2011 15:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/15/instalar-google-earth-en-ubuntu-natty-narwhal/</guid><description>&lt;p&gt;Ésta es la única manera en que me ha funcionado. Nada de &lt;a href="http://www.google.com/earth/download/ge/agree.html"&gt;bajar el &lt;code&gt;.deb&lt;/code&gt;&lt;/a&gt;
de su página—además de que, ahora mismo, baja el fichero
&lt;a href="http://mizaq.blogspot.com/2011/07/instalar-google-earth-en-ubuntu-1010.html"&gt;GoogleEarthLinux.bin&lt;/a&gt;—, ni &lt;a href="http://help.ubuntu.com/community/GoogleEarth#Using%20make-googleearth-package"&gt;googleearth-package&lt;/a&gt;, ni
&lt;a href="http://help.ubuntu.com/community/GoogleEarth#Installing%20the%20.deb%20file%20downloaded%20from%20the%20Google%20Earth%20Website"&gt;gdebi&lt;/a&gt;, ni &lt;a href="http://www.google.com/support/forum/p/earth/thread?tid=6f59e15bf811d4e2&amp;amp;hl=en"&gt;nada&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Google Earth" loading="lazy" src="http://karpoke.ignaciocano.com/images/google-earth-300x178.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.udp.cl/instalar-google-earth-6012032-beta-en-ubuntu-1010-maverick"&gt;Bajamos el paquete estable&lt;/a&gt; y lo instalamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ wget https://dl-ssl.google.com/linux/direct/google-earth-stable_current_i386.deb
$ sudo dpkg -i google-earth-stable_current_i386.deb
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Es posible que necesitemos el paquete &lt;code&gt;lsb-core&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install lsb-core
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si las fuentes de la interfaz gráfica se ven realmente mal, instalamos
las fuentes de Microsoft (ADV).&lt;/p&gt;</description></item><item><title>Copia de seguridad de GMail con getmail</title><link>http://karpoke.ignaciocano.com/2011/07/08/copia-de-seguridad-de-gmail-con-getmail/</link><pubDate>Fri, 08 Jul 2011 15:52:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/08/copia-de-seguridad-de-gmail-con-getmail/</guid><description>&lt;p&gt;Hay otras maneras de realizar una &lt;a href="http://www.mattcutts.com/blog/backup-gmail-in-linux-with-getmail/"&gt;copia de seguridad de GMail&lt;/a&gt;, como
por ejemplo, usar Thunderbird, pero utilizar &lt;code&gt;getmail&lt;/code&gt; tiene la ventaja
de que es sencillo, puede realizar la copia en formato Maildir y no
necesitamos utilizar ningún gestor de correo electrónico.&lt;/p&gt;
&lt;h2 id="maildir-y-mbox"&gt;Maildir y mbox&lt;/h2&gt;
&lt;p&gt;Básicamente, en GNU/Linux hay dos maneras de guardar el correo
electrónico, &lt;a href="http://www.linuxmail.info/mbox-maildir-mail-storage-formats/"&gt;Maildir y mbox&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="maildir"&gt;Maildir&lt;/h3&gt;
&lt;p&gt;Cada correo se guarda en un fichero por separado. Añadir, buscar y
eliminar correos es rápido, no se necesita bloqueo en ninguna operación,
se puede usar en sistemas de ficheros de red y no hay corrupción
(exceptuando fallos de hardware). El inconveniente viene dado porque
algunos sistemas de ficheros no gestionan eficientemente grandes
cantidades de ficheros pequeños, además de que la búsqueda de texto, que
requiere abrir todos los ficheros puede ser lenta.&lt;/p&gt;</description></item><item><title>Cambiar la contraseña de administrador en MySQL 5.1</title><link>http://karpoke.ignaciocano.com/2011/07/08/cambiar-la-contrasena-de-administrador-en-mysql-5-1/</link><pubDate>Fri, 08 Jul 2011 04:10:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/08/cambiar-la-contrasena-de-administrador-en-mysql-5-1/</guid><description>&lt;p&gt;Para &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html#resetting-permissions-generic"&gt;cambiar la contraseña de administrador en MySQL&lt;/a&gt; podemos iniciar
el servicio utilizando los argumentos &lt;code&gt;--skip-grant-tables&lt;/code&gt;, que permite
iniciar el servicio sin tener en cuenta los privilegios del sistema, por
lo que no es seguro, y el flag &lt;code&gt;--skip-networing&lt;/code&gt;, que deshabilita las
conexiones remotas pero no se lo impide a las locales, que seguirán
teniendo acceso y lo harán como &lt;code&gt;root&lt;/code&gt;, por lo que tampoco es seguro.
Antes de ver cómo podemos hacerlo de otra manera, veremos cómo hacerlo
con este método, que funciona siempre.&lt;/p&gt;</description></item><item><title>Cifrar una partición o un disco duro externo</title><link>http://karpoke.ignaciocano.com/2011/07/08/cifrar-una-particion-o-un-disco-duro-externo/</link><pubDate>Fri, 08 Jul 2011 02:48:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/08/cifrar-una-particion-o-un-disco-duro-externo/</guid><description>&lt;p&gt;Tenemos &lt;a href="http://conocimientoabierto.es/traducir-automaticamente-ficheros-po/207/"&gt;un disco duro externo y queremos cifrarlo&lt;/a&gt;. El comando
&lt;code&gt;cryptsetup&lt;/code&gt;, que se encuentra en los repositorios, hace uso de
DM-Crypt, que es la parte del kernel que se encarga del cifrado de
discos, y LUKS, un estándar independiente de la plataforma y del
software para acceder a volúmenes cifrados.&lt;/p&gt;
&lt;h2 id="requisitos"&gt;Requisitos&lt;/h2&gt;
&lt;p&gt;El primer paso, después de instalar el comando, es tener claro qué
dispositivo es nuestro disco duro. Un vistazo mediante &lt;code&gt;fdisk&lt;/code&gt; debería
ser suficiente. Además, si está montado, lo desmontamos.&lt;/p&gt;</description></item><item><title>I do not want to be tracked</title><link>http://karpoke.ignaciocano.com/2011/07/02/i-do-not-want-to-be-tracked/</link><pubDate>Sat, 02 Jul 2011 14:01:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/07/02/i-do-not-want-to-be-tracked/</guid><description>&lt;p&gt;&lt;img alt="firefox-preferences-privacy-tracking" loading="lazy" src="http://karpoke.ignaciocano.com/images/firefox-preferences-privacy-tracking-300x72.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Firefox &amp;gt; Menú Editar &amp;gt; Preferencias &amp;gt; Privacidad &amp;gt; No deseo ser
rastreado&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Un pequeño listado de &lt;a href="http://usemoslinux.blogspot.com/2011/07/las-5-mejores-extensiones-de-firefox.html"&gt;complementos para Firefox para proteger nuestra
privacidad&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;» &lt;a href="http://addons.mozilla.org/es-ES/firefox/addon/noscript/"&gt;No-Script&lt;/a&gt;, bloquea la ejecución de Javascript, Java, Flash,&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Silverlight y otros
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;» &lt;a href="http://addons.mozilla.org/es-ES/firefox/addon/ghostery/"&gt;Ghostery&lt;/a&gt;, bloquea aquellos servicios que recolectan información&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;privada y del comportamiento del usuario
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;» &lt;a href="http://addons.mozilla.org/es-ES/firefox/addon/betterprivacy/"&gt;BetterPrivacy&lt;/a&gt;, bloquea las cookies de Flash
» &lt;a href="http://addons.mozilla.org/en-US/firefox/addon/foxyproxy-standard/contribute/roadblock/?src=browse&amp;amp;version=3.0.1"&gt;Foxy Proxy&lt;/a&gt;, permite cambiar entre &lt;em&gt;proxies&lt;/em&gt; basándose en reglas&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;y de forma automática
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;» &lt;a href="http://addons.mozilla.org/es-ES/firefox/addon/duck-duck-go-ssl-search-plugin/"&gt;DuckDuckGo&lt;/a&gt;, incluye al buscador &lt;a href="http://duckduckgo.com/"&gt;DuckDuckGo&lt;/a&gt;, el cual&lt;/p&gt;</description></item><item><title>Extraer un archivo de un archivo comprimido, desde el terminal</title><link>http://karpoke.ignaciocano.com/2011/06/30/extraer-un-archivo-de-un-archivo-comprimido-desde-el-terminal/</link><pubDate>Thu, 30 Jun 2011 20:36:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/30/extraer-un-archivo-de-un-archivo-comprimido-desde-el-terminal/</guid><description>&lt;p&gt;Un día estás editando un archivo en un servidor remoto, &lt;a href="http://karpoke.ignaciocano.com/2011/06/17/compartiendo-una-conexion-por-ssh/"&gt;por &lt;code&gt;ssh&lt;/code&gt;&lt;/a&gt;,
y, a la hora de guardar, te das cuenta de que has editado el fichero sin
tener los privilegios suficientes, por lo que &lt;code&gt;vim&lt;/code&gt; se queja:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;E505: &amp;#34;app.config&amp;#34; is read-only (add ! to override)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La solución es sencilla, para guardarlo como &lt;code&gt;root&lt;/code&gt; escribes:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;:w !sudo tee %
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;O eso creías. De repente, te das cuenta de que eso no es lo que has
escrito, porque &lt;code&gt;vim&lt;/code&gt; se ha puesto en modo &lt;em&gt;inferno&lt;/em&gt;, y cada tecla que
pulsas le da vida propia, porque hace exactamente lo que le dices que
haga y no lo que realmente quieres que haga, y cuando pasa la tormenta y
vuelves a editar el fichero, sólo contiene:&lt;/p&gt;</description></item><item><title>Identificando los plugins de WordPress instalados</title><link>http://karpoke.ignaciocano.com/2011/06/20/identificando-los-plugins-de-wordpress-instalados/</link><pubDate>Mon, 20 Jun 2011 20:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/20/identificando-los-plugins-de-wordpress-instalados/</guid><description>&lt;p&gt;Hay un &lt;em&gt;script&lt;/em&gt; para &lt;code&gt;nmap&lt;/code&gt;, &lt;a href="http://seclists.org/nmap-dev/2011/q1/att-806/http-wp-plugins.nse"&gt;http-wp-plugins&lt;/a&gt;, que permite &lt;a href="http://blog.alexos.com.br/?p=2302"&gt;detectar
los complementos instalados en WordPress&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Dicho &lt;em&gt;script&lt;/em&gt; intenta acceder a los directorios de los complementos en
&lt;code&gt;wp-content/plugins/&lt;/code&gt; con la ayuda de un &lt;a href="http://seclists.org/nmap-dev/2011/q1/att-806/wp-plugins_lst_tar.gz"&gt;diccionario&lt;/a&gt;. Si la
respuesta no es un error 404 interpreta que el directorio, y por tanto
el complemento, existe. La lista de complementos para WordPress es extensa,
casi 13405 entradas, y podría llevar bastante tiempo analizarlas todas,
por lo que las entradas están ordenadas por popularidad y por defecto
sólo se escanean las 100 primeras.&lt;/p&gt;</description></item><item><title>Secuencias de escape en SSH</title><link>http://karpoke.ignaciocano.com/2011/06/18/secuencias-de-escape-en-ssh/</link><pubDate>Sat, 18 Jun 2011 19:44:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/18/secuencias-de-escape-en-ssh/</guid><description>&lt;p&gt;Secuencias de escape en SSH:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;user@remotehost:~$ ~?
Supported escape sequences:
~. - terminate connection (and any multiplexed sessions)
~B - send a BREAK to the remote system
~C - open a command line
~R - Request rekey (SSH protocol 2 only)
~^Z - suspend ssh
~# - list forwarded connections
~&amp;amp; - background ssh (when waiting for connections to terminate)
~? - this message
~~ - send the escape character by typing it twice
(Note that escapes are only recognized immediately after newline.)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;La primera, &lt;code&gt;~.&lt;/code&gt;, se puede utilizar para &lt;a href="http://www.commandlinefu.com/commands/view/8665/control-ssh-connection"&gt;cerrar la sesión cuando se nos
queda colgada&lt;/a&gt;, por ejemplo, al reiniciar la máquina remota.&lt;/p&gt;</description></item><item><title>Compartiendo una conexión por SSH</title><link>http://karpoke.ignaciocano.com/2011/06/17/compartiendo-una-conexion-por-ssh/</link><pubDate>Fri, 17 Jun 2011 15:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/17/compartiendo-una-conexion-por-ssh/</guid><description>&lt;p&gt;A partir de la versión 4 de OpenSSH se pueden &lt;a href="http://protempore.net/~calvins/howto/ssh-connection-sharing/"&gt;compartir las conexiones
seguras&lt;/a&gt; a un máquina remota, de tal manera que, una vez establecida
la primera conexión, el resto de conexiones reutilizan la primera, por
lo que el establecimiento de la conexión de éstas será mucho más rápido.&lt;/p&gt;
&lt;h2 id="configuración"&gt;Configuración&lt;/h2&gt;
&lt;p&gt;Lo primero es asegurarnos de que existe el directorio &lt;code&gt;~/.ssh&lt;/code&gt; en el
cliente, con permisos 700 (sólo accesible por nosotros mismos&amp;hellip; y
cualquier administrador).&lt;/p&gt;</description></item><item><title>Conectarse por SSH utilizando expect</title><link>http://karpoke.ignaciocano.com/2011/06/17/conectarse-por-ssh-utilizando-expect/</link><pubDate>Fri, 17 Jun 2011 14:59:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/17/conectarse-por-ssh-utilizando-expect/</guid><description>&lt;p&gt;&lt;code&gt;expect&lt;/code&gt; es un comando que &amp;ldquo;habla&amp;rdquo; con otros programas interactivos. Se
definen unas reglas en función de lo que esperamos que nos digan esos
programas y lo que queremos contestar.&lt;/p&gt;
&lt;p&gt;Un típico ejemplo es realizar una conexión a un servicio de FTP o SSH, y
utilizar &lt;code&gt;expect&lt;/code&gt; para que introduzca la contraseña por nosotros y lleve
a cabo diferentes acciones. La ventaja que tiene es que podemos
automatizar acciones en esos servicios. El gran inconveniente es que, si
esos servicios requieren autenticación, deberemos escribir la
contraseña, ya sea en un &lt;em&gt;script&lt;/em&gt; o directamente en el terminal,
pudiendo quedar reflejada en el historial. (Dependiendo de la
configuración, si incluimos espacios antes de ejecutar un comando, éste
no queda reflejado en el historial).&lt;/p&gt;</description></item><item><title>Encontrar los dominios que comparten IP con otro dado</title><link>http://karpoke.ignaciocano.com/2011/06/14/encontrar-los-dominios-que-comparten-ip-con-otro-dado/</link><pubDate>Tue, 14 Jun 2011 21:34:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/14/encontrar-los-dominios-que-comparten-ip-con-otro-dado/</guid><description>&lt;p&gt;Éste es algo viejuno, pero lo no había probado. Se trata del &lt;em&gt;script&lt;/em&gt;
&lt;code&gt;bing-ip2hosts&lt;/code&gt;, que permite &lt;a href="http://seifreed.com/2010/04/10/enumerar-todos-los-host-en-dominio-con-la-direccin-ip-bing/"&gt;encontrar los dominios que comparten IP&lt;/a&gt;
con un dominio dado utilizando Bing:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ./bing-ip2hosts -p ubuntu.com
http://brainstorm.ubuntu.com
http://kubuntu.org
http://search.ubuntu.com
http://www.ubuntu.com
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Con el argumento &lt;code&gt;-p&lt;/code&gt; se incluye el prefijo &lt;code&gt;http://&lt;/code&gt;, lo cual viene bien
para poder clicar directamente en el terminal.&lt;/p&gt;
&lt;p&gt;Este &lt;em&gt;script&lt;/em&gt; utiliza el comando &lt;code&gt;resolveip&lt;/code&gt; para encontrar la IP del
dominio dado:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ resolveip google.com
IP address of google.com is 209.85.146.147
IP address of google.com is 209.85.146.99
IP address of google.com is 209.85.146.104
IP address of google.com is 209.85.146.106
IP address of google.com is 209.85.146.103
IP address of google.com is 209.85.146.105
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ resolveip -s google.com
209.85.229.147
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y parsea los resultados del buscador Bing pasándole como parámetro la IP
recién obtenida:&lt;/p&gt;</description></item><item><title>Usando una conexión segura en el panel de control de Wordpress</title><link>http://karpoke.ignaciocano.com/2011/06/14/usando-una-conexion-segura-en-el-panel-de-control-de-wordpress/</link><pubDate>Tue, 14 Jun 2011 14:17:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/14/usando-una-conexion-segura-en-el-panel-de-control-de-wordpress/</guid><description>&lt;p&gt;Si tenemos &lt;a href="http://karpoke.ignaciocano.com/2010/12/30/la-infame-actualizacion-de-wordpress-en-15-segundos/"&gt;instalado un WordPress&lt;/a&gt; y queremos &lt;a href="http://rackerhacker.com/2009/07/31/requiring-ssl-encryption-for-wordpress-administration/"&gt;iniciar sesión a
través de una conexión segura&lt;/a&gt;, deberemos modificar el fichero
&lt;code&gt;/usr/share/wordpress/wp-config.php&lt;/code&gt; y añadir:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;define(&amp;#39;FORCE_SSL_LOGIN&amp;#39;, true);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si queremos que se use la conexión segura en todo el panel de control,
en lugar de lo anterior, añadiremos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;define(&amp;#39;FORCE_SSL_ADMIN&amp;#39;, true);
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para que esto funcione, es necesario que &lt;a href="http://karpoke.ignaciocano.com/2011/06/14/configurar-apache-para-servir-conexiones-seguras/"&gt;Apache esté configurado para
servir conexiones seguras&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="actualización-a-13-de-julio-de-2013"&gt;Actualización a 13 de julio de 2013&lt;/h4&gt;
&lt;p&gt;Si hemos iniciado sesión y navegamos por nuestra página web, deberíamos
asegurarnos de que seguimos usando una conexión segura, ya que estamos
enviando nuestra &lt;em&gt;cookie&lt;/em&gt; de sesión y alguien en la misma red podría
llegar a capturarla si no es así.&lt;/p&gt;</description></item><item><title>Configurar Apache para servir conexiones seguras</title><link>http://karpoke.ignaciocano.com/2011/06/14/configurar-apache-para-servir-conexiones-seguras/</link><pubDate>Tue, 14 Jun 2011 14:13:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/06/14/configurar-apache-para-servir-conexiones-seguras/</guid><description>&lt;p&gt;Si tenemos Apache, y queremos configurarlo para que se pueda navegar de
forma segura por nuestro sitio utilizando el protocolo HTTPS,
necesitamos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;crear las claves que se utilizarán para cifrar la conexión,&lt;/li&gt;
&lt;li&gt;configurar &lt;code&gt;mod_ssl&lt;/code&gt;, el módulo de Apache para usar conexiones&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;seguras,
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;y permitir la conexión por el puerto 443.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="crear-las-claves-de-cifrado"&gt;Crear las claves de cifrado&lt;/h2&gt;
&lt;p&gt;Vamos a generar un par de claves RSA triple DES de 2048 bits en el
directorio &lt;code&gt;/etc/ssl&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>UnicodeDecodeError con Wapiti</title><link>http://karpoke.ignaciocano.com/2011/05/28/unicodedecodeerror-con-wapiti/</link><pubDate>Sat, 28 May 2011 17:32:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/28/unicodedecodeerror-con-wapiti/</guid><description>&lt;p&gt;&lt;a href="http://wapiti.sourceforge.net/"&gt;Wapiti&lt;/a&gt; es un escáner de vulnerabilidades web basado en
&lt;a href="http://omniumpotentior.wordpress.com/2011/05/18/fuzzing-web-con-wapiti/"&gt;&lt;em&gt;fuzzing&lt;/em&gt;&lt;/a&gt;. En la última versión, &lt;a href="http://wapiti.sourceforge.net/README"&gt;2.2.1&lt;/a&gt;, permite detectar
vulnerabilidades referente a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Errores de gestión de ficheros (include/require local y remoto,&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;fopen, readfile...)
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;Database Injection (PHP/JSP/ASP SQL Injections y XPath Injections)&lt;/li&gt;
&lt;li&gt;XSS (Cross Site Scripting) Injection&lt;/li&gt;
&lt;li&gt;LDAP Injection&lt;/li&gt;
&lt;li&gt;Command Execution detection (eval(), system(), passtru()&amp;hellip;)&lt;/li&gt;
&lt;li&gt;CRLF Injection (HTTP Response Splitting, session fixation&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Sin embargo, si usamos Ubuntu Natty Narwhal, la versión de los
repositorios es la 1.1.6, por lo que es posible que nos encontremos el
siguiente error al escanear páginas que contengan &lt;a href="http://wiki.python.org/moin/UnicodeDecodeError"&gt;caracteres no
ASCII&lt;/a&gt;. Por ejemplo:&lt;/p&gt;</description></item><item><title>¿Dónde está el site-packages?</title><link>http://karpoke.ignaciocano.com/2011/05/28/donde-esta-el-site-packages/</link><pubDate>Sat, 28 May 2011 16:03:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/28/donde-esta-el-site-packages/</guid><description>&lt;p&gt;&lt;a href="http://docs.djangoproject.com/en/dev/topics/install/?from=olddocs#remove-any-old-versions-of-django"&gt;Nota&lt;/a&gt; mental:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ python -c &amp;#34;from distutils.sysconfig import get_python_lib; print get_python_lib()&amp;#34;
/usr/lib/python2.7/dist-packages
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="ligeramente-relacionado"&gt;Ligeramente relacionado&lt;/h2&gt;
&lt;p&gt;» &lt;a href="http://karpoke.ignaciocano.com/2011/03/27/creando-y-leyendo-codigos-qr-desde-python/"&gt;Creando y leyendo códigos QR desde Python&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;A lo mejor, si el intérprete de Python no encuentra un paquete es que no
está donde debería&amp;hellip; :facepalm:&lt;/p&gt;</description></item><item><title>Mejorando la seguridad de Apache con Varnish</title><link>http://karpoke.ignaciocano.com/2011/05/26/mejorando-la-seguridad-de-apache-con-varnish/</link><pubDate>Thu, 26 May 2011 19:39:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/26/mejorando-la-seguridad-de-apache-con-varnish/</guid><description>&lt;p&gt;&lt;a href="http://www.varnish-cache.org/docs/2.1/"&gt;Varnish&lt;/a&gt; es un acelerador web, que puede ser utilizado tanto para
cachear contenido estático de nuestro servidor, para balancear la carga
o &lt;a href="http://www.howtoforge.com/putting-varnish-in-front-of-apache-on-ubuntu-debian"&gt;para incrementar la seguridad&lt;/a&gt;, por ejemplo, bloqueando cierto tipo
de peticiones u ocultando cierto tipo de información.&lt;/p&gt;
&lt;p&gt;Se instala directamente de los repositorios:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install varnish
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Ahora lo configuraremos para utilizarlo como capa intermedia, delante de
nuestro Apache. Editamos el fichero &lt;code&gt;/etc/default/varnish&lt;/code&gt; y cambiamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;DAEMON_OPTS=&amp;#34;-a :6081
-T localhost:6082
-f /etc/varnish/default.vcl
-S /etc/varnish/secret
-s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,1G&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;por:&lt;/p&gt;</description></item><item><title>localepurge</title><link>http://karpoke.ignaciocano.com/2011/05/25/localepurge/</link><pubDate>Wed, 25 May 2011 10:44:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/25/localepurge/</guid><description>&lt;p&gt;&lt;code&gt;localepurge&lt;/code&gt; es una herramienta que elimina los archivos de traducción
que no necesitemos. Después de instalarlo, nos pedirá que &lt;a href="http://www.guia-ubuntu.org/index.php?title=Localepurge"&gt;seleccionemos
qué idiomas queremos conservar&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;en_US&lt;/li&gt;
&lt;li&gt;en_US.ISO-8859-15&lt;/li&gt;
&lt;li&gt;en_US.UTF-8&lt;/li&gt;
&lt;li&gt;es&lt;/li&gt;
&lt;li&gt;es_ES&lt;/li&gt;
&lt;li&gt;es_ES@euro&lt;/li&gt;
&lt;li&gt;es_ES.UTF-8&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Después de instalarlo, lo ejecutamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo localepurge
Total disk space freed by localepurge: 26552 KiB
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cada vez que instalemos un nuevo paquete de los respositorios se
ejecutará automáticamente, por lo que no tendremos que volver a
preocuparnos.&lt;/p&gt;
&lt;hr&gt;
&lt;h4 id="actualización-a-17-de-marzo-de-2013"&gt;Actualización a 17 de marzo de 2013&lt;/h4&gt;
&lt;p&gt;Acabo de encontrar una anotación interesante en el blog del &lt;a href="http://crysol.org/es/node/1696"&gt;crysol&lt;/a&gt;.
En lugar de eliminar las traducciones que no nos interesan, podemos,
directamente, evitar descargarlas. Editamos el fichero
&lt;code&gt;/etc/apt/apt.conf.d/99Translations&lt;/code&gt;, y añadimos lo que necesitemos, por
ejemplo:&lt;/p&gt;</description></item><item><title>Aplicaciones en el área de notificación de Ubuntu Natty Narwhal</title><link>http://karpoke.ignaciocano.com/2011/05/12/aplicaciones-en-el-area-de-notificacion-de-ubuntu-natty-narwhal/</link><pubDate>Thu, 12 May 2011 11:57:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/12/aplicaciones-en-el-area-de-notificacion-de-ubuntu-natty-narwhal/</guid><description>&lt;p&gt;Con la llegada de la nueva Ubuntu, se ha cambiado el área de
notificación por una &lt;a href="http://pricklytech.wordpress.com/2011/04/30/ubuntu-11-4-natty-customizing-the-notification-area-in-unity/"&gt;nueva API&lt;/a&gt;. Para las aplicaciones que todavía no
se han adaptado, se ha habilitado una lista blanca de aplicaciones que
pueden utilizar la antigua área de notificación, hasta que se
actualicen.&lt;/p&gt;
&lt;p&gt;Para ver qué aplicaciones hay en la lista:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ gsettings get com.canonical.Unity.Panel systray-whitelist
[&amp;#39;JavaEmbeddedFrame&amp;#39;, &amp;#39;Mumble&amp;#39;, &amp;#39;Wine&amp;#39;, &amp;#39;Skype&amp;#39;, &amp;#39;hp-systray&amp;#39;, &amp;#39;scp-dbus-service&amp;#39;]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para añadir una aplicación, por ejemplo, &lt;code&gt;dropbox&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Copiar un directorio excluyendo los archivos de una clase</title><link>http://karpoke.ignaciocano.com/2011/05/11/copiar-un-directorio-excluyendo-los-archivos-de-una-clase/</link><pubDate>Wed, 11 May 2011 21:09:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/11/copiar-un-directorio-excluyendo-los-archivos-de-una-clase/</guid><description>&lt;p&gt;Si queremos copiar un directorio pero no queremos que se copien los
archivos &lt;code&gt;.svn&lt;/code&gt;, o &lt;code&gt;.dropbox&lt;/code&gt;, podemos ejecutar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ rsync -r --exclude=.dropbox /path/source/dir /path/destination
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Recuperar los datos guardados en una sesión livecd</title><link>http://karpoke.ignaciocano.com/2011/05/11/recuperar-los-datos-guardados-en-una-sesion-livecd/</link><pubDate>Wed, 11 May 2011 19:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/11/recuperar-los-datos-guardados-en-una-sesion-livecd/</guid><description>&lt;p&gt;Si habíamos estado trabajando en una sesión &lt;em&gt;livecd&lt;/em&gt;, más tarde podemos
&lt;a href="http://www.portalubuntu.com/2011/05/como-recuperar-los-archivos-guardados.html"&gt;recuperar los datos que hayamos guardado en dicha sesión&lt;/a&gt; montando el
&lt;em&gt;usb&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo mount /media/miusb/casper.rw /mnt -o loop
&lt;/code&gt;&lt;/pre&gt;</description></item><item><title>Comprobar a dónde nos lleva un enlace corto</title><link>http://karpoke.ignaciocano.com/2011/05/07/comprobar-a-donde-nos-lleva-un-enlace-corto/</link><pubDate>Sat, 07 May 2011 12:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/07/comprobar-a-donde-nos-lleva-un-enlace-corto/</guid><description>&lt;p&gt;Un enlace corto es útil, por ejemplo, para incluir la dirección de una
página web en servicios como &lt;a href="http://karpoke.ignaciocano.com/posts/hack/robando-la-identidad-del-vecino/"&gt;Twitter&lt;/a&gt;, donde el número de caracteres
está limitado. Sin embargo, se pueden utilizar para engañarnos y
llevarnos a una página que no queramos, o incluso que &lt;a href="http://www.worsttech.com/hack/hacker-attack/malware-spreading-via-shortened-urls-1102581.html"&gt;distribuya
&lt;em&gt;malware&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para comprobar hacia dónde apunta un enlaces cortos podemos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilizar un servicio como &lt;a href="http://urlxray.com/"&gt;urlxray&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;utilizar el comando &lt;code&gt;curl&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -sI http://goo.gl/GPb7Z | grep Location
Location: http://terminus.homelinux.com/k/
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;utilizar un complemento para &lt;a href="http://addons.mozilla.org/en-US/firefox/search/?q=short+url+expand"&gt;Firefox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Sonido a través de SSH</title><link>http://karpoke.ignaciocano.com/2011/05/05/sonido-a-traves-de-ssh/</link><pubDate>Thu, 05 May 2011 22:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/05/05/sonido-a-traves-de-ssh/</guid><description>&lt;p&gt;Si tenemos &lt;a href="http://karpoke.ignaciocano.com/2011/03/03/conectarse-por-ssh-solo-usando-la-clave/"&gt;acceso por &lt;code&gt;ssh&lt;/code&gt;&lt;/a&gt; a otro ordenador, ambos con micrófono y
altavoces, podemos redirigir el sonido en ambos sentidos, es decir,
podemos conseguir cosas como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;que lo que capta nuestro &lt;a href="#microfono-local-altavoces-remotos"&gt;micrófono&lt;/a&gt; se escuche en los altavoces&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;del otro ordenador y [viceversa][]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;que lo que se &lt;a href="#texto-local-altavoces-remotos"&gt;escribe&lt;/a&gt; en un ordenador se escuche en el otro y&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[viceversa][1]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;que el contenido de un &lt;a href="#texto-local-altavoces-remotos"&gt;fichero de texto&lt;/a&gt; se oiga en los&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;altavoces remotos y [viceversa][1]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;que un archivo de &lt;a href="#fichero-audio-local-altavoces-remotos"&gt;audio&lt;/a&gt; se escuche en los altavoces remotos y&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;[viceversa][2]
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;que el audio de un archivo de &lt;a href="#fichero-video-local-altavoces-remotos"&gt;vídeo&lt;/a&gt; se escuche en los altavoces&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;remotos y [viceversa][3]
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="dispositivos-de-sonido-en-ubuntu-maverick-meerkat"&gt;Dispositivos de sonido en Ubuntu Maverick Meerkat&lt;/h2&gt;
&lt;p&gt;Uno de los cambios de Ubuntu Maverick Meerkat (10.10) fue la
desaparición del dispositivo &lt;code&gt;/dev/dsp&lt;/code&gt; y otros, como &lt;code&gt;/dev/mixer&lt;/code&gt;,
&lt;code&gt;/dev/sndstat&lt;/code&gt; y &lt;code&gt;/dev/audio&lt;/code&gt;, al utilizar la &lt;a href="http://bugs.launchpad.net/ubuntu/+source/linux/+bug/634211"&gt;interfaz ALSA en
detrimento de la OSS API&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cifrar el contenido de Dropbox</title><link>http://karpoke.ignaciocano.com/2011/04/21/cifrar-el-contenido-de-dropbox/</link><pubDate>Thu, 21 Apr 2011 13:37:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/04/21/cifrar-el-contenido-de-dropbox/</guid><description>&lt;p&gt;A raíz del cambio en los términos del servicio de Dropbox, en el cual se
afirma que le &lt;a href="http://www.businessinsider.com/dropbox-updates-security-terms-of-service-to-say-it-can-decrpyt-files-if-the-government-asks-it-to-2011-4?op=1"&gt;entregará tus ficheros al gobierno de Estados Unidos&lt;/a&gt;,
si éste se lo pide, o la noticia de que es posible &lt;a href="http://www.hispasec.com/unaaldia/4558"&gt;saltarse las
restricciones&lt;/a&gt;, y que nuestra cuenta sea usada en otra máquina sin
necesidad de conocer nuestra contraseña, se nos podría ocurrir cifrar
los datos que subimos a nuestra cuenta.&lt;/p&gt;
&lt;p&gt;Utilizaremos &lt;code&gt;ecryptfs&lt;/code&gt; para cifrar un directorio, y todo su contenido,
dentro del directorio de &lt;a href="http://karpoke.ignaciocano.com/2011/03/30/multiples-cuentas-de-dropbox-en-ubuntu-maverick-meerkat/"&gt;una de nuestras cuentas de Dropbox&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Acceder al panel de control de Wordpress tras haber sido baneado</title><link>http://karpoke.ignaciocano.com/2011/04/20/acceder-al-panel-de-control-de-wordpress-tras-haber-sido-baneado/</link><pubDate>Wed, 20 Apr 2011 01:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/04/20/acceder-al-panel-de-control-de-wordpress-tras-haber-sido-baneado/</guid><description>&lt;p&gt;De forma similar a &lt;a href="http://karpoke.ignaciocano.com/2011/03/07/detectando-intrusos-en-ubuntu-maverick-meerkat/"&gt;&lt;code&gt;fail2ban&lt;/code&gt; para &lt;code&gt;ssh&lt;/code&gt;&lt;/a&gt;, existe un
complemento para Wordpress, &lt;a href="http://wordpress.org/extend/plugins/login-lockdown/"&gt;Login LockDown&lt;/a&gt;, que controla el número de
intentos de acceso al panel de control, y si se falla en 3 intentos, &lt;em&gt;banea&lt;/em&gt;
dicha IP durante una hora. Estos parámetros, y alguno más, son configurables
desde la página de configuración del complemento.&lt;/p&gt;
&lt;p&gt;El problema es que si compartimos la misma IP pública con más gente, ya sea
porque estamos en un lugar público o en casa de unos amigos, y alguien en esta
misma red realiza más intentos de los permitidos, también nosotros quedamos
&lt;em&gt;baneados&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Múltiples cuentas de Dropbox en Ubuntu Maverick Meerkat</title><link>http://karpoke.ignaciocano.com/2011/03/30/multiples-cuentas-de-dropbox-en-ubuntu-maverick-meerkat/</link><pubDate>Wed, 30 Mar 2011 14:54:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/30/multiples-cuentas-de-dropbox-en-ubuntu-maverick-meerkat/</guid><description>&lt;p&gt;Una cuenta gratuita de Dropbox permite inicialmente 2 GB de espacio, que
se pueden ir ampliando con algunas sencillas acciones tales como
compartir un directorio, instalar el paquete para Ubuntu o
recomendárselo a un amigo. En principio, sólo se puede tener una cuenta
por dispositivo. Sin embargo, como vamos a ver, gestionar varias cuentas
para obtener más espacio, utilizándolas a la vez y desde la misma
máquina, es algo realmente sencillo y rápido.&lt;/p&gt;</description></item><item><title>Encuentra las diferencias... desde el terminal</title><link>http://karpoke.ignaciocano.com/2011/03/29/encuentra-las-diferencias-desde-el-terminal/</link><pubDate>Tue, 29 Mar 2011 22:08:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/29/encuentra-las-diferencias-desde-el-terminal/</guid><description>&lt;p&gt;Supongamos que queremos &lt;a href="http://www.linuxhispano.net/2011/03/29/diferencias/"&gt;encontrar las diferencias&lt;/a&gt; en la siguiente
imagen:&lt;/p&gt;
&lt;p&gt;&lt;img alt="diferencias" loading="lazy" src="http://karpoke.ignaciocano.com/images/diferencias-300x233.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente: &lt;a href="http://www.taringa.net/posts/imagenes/6577248/encuentra-las-diferencias.html"&gt;taringa.net&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Tal como se muestra en la tira cómica, se puede hacer utilizando las
herramientas de la suite &lt;code&gt;imagemagick&lt;/code&gt;, en particular, &lt;code&gt;composite&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Primero, creamos una imagen con cada mitad de la imagen original:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ convert diferencias.jpg -crop 50%x100% out.png
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Esto crea dos ficheros, &lt;code&gt;out-0.png&lt;/code&gt; y &lt;code&gt;out-0.png&lt;/code&gt;, uno con la mitad
izquierda y otro con la mitad izquierda.&lt;/p&gt;
&lt;p&gt;Vamos a obtener las diferencias:&lt;/p&gt;</description></item><item><title>Importar un volcado de datos en MySQL</title><link>http://karpoke.ignaciocano.com/2011/03/27/importar-un-volcado-de-datos-en-mysql/</link><pubDate>Sun, 27 Mar 2011 22:09:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/27/importar-un-volcado-de-datos-en-mysql/</guid><description>&lt;p&gt;Para realizar un volcado de datos, podemos ejecutar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ mysqldump -uuser -p --all-databases --host localhost &amp;gt; mysql.sql
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="MySQL Dump" loading="lazy" src="http://karpoke.ignaciocano.com/images/mysqldump.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente: &lt;a href="http://luauf.com/2008/05/17/mysql-shell-script-backup/"&gt;luauf.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Para importar este volcado, existe la herramienta &lt;code&gt;mysqlimport&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ mysqlimport -uuser -hhost -p --local dbname mysql.sql
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Sin embargo, no me acaba de ir bien, ya que me devuelve este error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;mysqlimport: Error: 1146, Table &amp;#39;dbname.mysql&amp;#39; doesn&amp;#39;t exist, when using table: mysql
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Una forma de conseguir &lt;a href="http://forums.mysql.com/read.php?10,269126,269264#msg-269264"&gt;restaurar el volcado de datos&lt;/a&gt; es desde el
cliente de &lt;code&gt;mysql&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Creando y leyendo códigos QR desde Python</title><link>http://karpoke.ignaciocano.com/2011/03/27/creando-y-leyendo-codigos-qr-desde-python/</link><pubDate>Sun, 27 Mar 2011 19:46:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/27/creando-y-leyendo-codigos-qr-desde-python/</guid><description>&lt;p&gt;Un código QR (Quick Response Barcode) permite almacenar información en
un código de barras de dos dimensiones.&lt;/p&gt;
&lt;p&gt;&lt;img alt="cc.qr.code.capacity`" loading="lazy" src="http://karpoke.ignaciocano.com/images/cc.qr_.code_.capacity-300x166.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Hay bastantes servicios en la web que nos permiten crear nuestros
propios códigos, por ejemplo &lt;a href="http://code.google.com/apis/chart/infographics/docs/qr_codes.html"&gt;el de Google&lt;/a&gt;, que podemos emplear desde
la línea de comandos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl http://chart.apis.google.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chld=H|0&amp;amp;chl=texto -o qr.png
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="QR Code Python" loading="lazy" src="http://karpoke.ignaciocano.com/images/qrcode-python.png"&gt;&lt;/p&gt;
&lt;p&gt;Un pequeño alias para tenerlo siempre a mano:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ alias qrurl=&amp;#39;qrurl() { curl http://chart.apis.google.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chld=H|0&amp;amp;chl=${@// /%20} -o qr.$(date +%Y%m%d%H%M%S).png; }; qrurl&amp;#39;
$ qrurl una ranita iba caminando
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Esto creará un fichero con un nombre parecido a &lt;code&gt;qr.20110325161706.png&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Solucionado el error "E: Problem with MergeList" al actualizar Debian</title><link>http://karpoke.ignaciocano.com/2011/03/17/solucionado-el-error-e-problem-with-mergelist-al-actualizar-debian/</link><pubDate>Thu, 17 Mar 2011 11:11:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/17/solucionado-el-error-e-problem-with-mergelist-al-actualizar-debian/</guid><description>&lt;p&gt;Tras realizar una actualización rutinaria, &lt;code&gt;aptitude update&lt;/code&gt;, me
encuentro con el siguiente error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;E: Encountered a section with no Package: header
E: Problem with MergeList /var/lib/apt/lists/ftp.caliu.cat_debian_dists_testing_main_binary-i386_Packages
E: No se pudieron analizar o abrir las listas de paquetes o el archivo de estado.
E: No se pudo reconstruir el almacén de paquetes
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="Deb packages" loading="lazy" src="http://karpoke.ignaciocano.com/images/icono-paquete-deb.png"&gt;&lt;/p&gt;
&lt;p&gt;La &lt;a href="http://ubuntuforums.org/archive/index.php/t-863742.html"&gt;solución&lt;/a&gt; para resolver el conflicto, que parece ser debido a una
corrupción en las listas, pasa por borrarlas, y ya podremos actualizar
normalmente:&lt;/p&gt;</description></item><item><title>inception</title><link>http://karpoke.ignaciocano.com/2011/03/14/inception/</link><pubDate>Mon, 14 Mar 2011 13:35:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/14/inception/</guid><description>&lt;p&gt;&lt;em&gt;&lt;a href="http://github.com/karthick18/inception"&gt;Inception&lt;/a&gt;&lt;/em&gt; en C:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ git clone https://github.com/karthick18/inception.git
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;img alt="inception" loading="lazy" src="http://karpoke.ignaciocano.com/images/inception-300x203.png"&gt;&lt;/p&gt;</description></item><item><title>Ocultando cabeceras</title><link>http://karpoke.ignaciocano.com/2011/03/12/ocultando-cabeceras/</link><pubDate>Sat, 12 Mar 2011 14:26:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/12/ocultando-cabeceras/</guid><description>&lt;p&gt;Tras instalar Apache, tanto en las &lt;a href="http://karpoke.ignaciocano.com/2011/02/28/cabeceras-http-personalizadas-en-apache2/"&gt;cabeceras de la página&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ curl -I localhost
HTTP/1.1 200 OK
Date: Sat, 12 Mar 2011 11:55:12 GMT
Server: Apache/2.2.16 (Ubuntu)
Last-Modified: Sat, 02 Jan 2010 00:00:23 GMT
ETag: &amp;#34;aa34-b1-47c232cbc0633&amp;#34;
Accept-Ranges: bytes
Content-Length: 177
Vary: Accept-Encoding
Content-Type: text/html
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;como en las páginas de error:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;#34;-//IETF//DTD HTML 2.0//EN&amp;#34;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;404 Not Found
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Not Found
The requested URL /terminus was not found on this server.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;Apache/2.2.16 (Ubuntu) Server at localhost Port 80
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;se muestra la versión de Apache, y de PHP si también lo hemos instalado.
Ocultar este tipo de información se conoce como seguridad por oscuridad,
por lo que no es realmente seguridad, pero puede ayudar a evitar ataques
automatizados.&lt;/p&gt;</description></item><item><title>Detectando intrusos en Ubuntu Maverick Meerkat</title><link>http://karpoke.ignaciocano.com/2011/03/07/detectando-intrusos-en-ubuntu-maverick-meerkat/</link><pubDate>Mon, 07 Mar 2011 22:11:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/07/detectando-intrusos-en-ubuntu-maverick-meerkat/</guid><description>&lt;p&gt;Un artículo para tener en cuenta algunas de las acciones que podemos
llevar a cabo para &lt;a href="http://dzulkifli.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=109:securing-maverick-meerkat&amp;amp;catid=35:ubuntu&amp;amp;Itemid=85"&gt;securizar Ubuntu Maverick Meerkat&lt;/a&gt;. Algunos
programas para facilitar la tarea de controlar los intentos de acceso al
sistema:&lt;/p&gt;
&lt;h2 id="ufw"&gt;ufw&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ufw&lt;/code&gt; es una forma sencilla de manejar un cortafuegos. Nada más
instalarlo, lo habilitamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo ufw enable
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Damos de alta los servicios^&lt;a href="#servicios"&gt;1&lt;/a&gt;^ que queremos que estén disponibles:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow 1234
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si queremos deshacer alguna de estas acciones, por ejemplo, eliminar la
regla para el puerto 1234:&lt;/p&gt;</description></item><item><title>Conectarse por SSH sólo usando la clave</title><link>http://karpoke.ignaciocano.com/2011/03/03/conectarse-por-ssh-solo-usando-la-clave/</link><pubDate>Thu, 03 Mar 2011 21:22:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/03/03/conectarse-por-ssh-solo-usando-la-clave/</guid><description>&lt;p&gt;Conectarnos a nuestro servidor de SSH utilizando una clave RSA en lugar
de una contraseña es más seguro, dado que la clave RSA será bastante más
larga y difícil de comprometer que nuestra contraseña, y más cómodo,
dado que ya no tendremos que escribir la contraseña para iniciar sesión.&lt;/p&gt;
&lt;h2 id="configuración"&gt;Configuración&lt;/h2&gt;
&lt;p&gt;En el equipo local, creamos la clave. Cuando nos pida contraseña, le
asignamos una, que nos será requerida cada vez que queramos usar dicha
clave. Si estuviéramos creando las claves en el servidor la &lt;a href="http://marc.info/?l=secure-shell&amp;amp;m=91703263608458&amp;amp;w=2"&gt;dejaríamos
en blanco&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Cabeceras HTTP personalizadas en Apache2</title><link>http://karpoke.ignaciocano.com/2011/02/28/cabeceras-http-personalizadas-en-apache2/</link><pubDate>Mon, 28 Feb 2011 20:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/28/cabeceras-http-personalizadas-en-apache2/</guid><description>&lt;p&gt;Podemos modificar las cabeceras que devuelve el Apache usando el módulo
&lt;code&gt;mod_headers&lt;/code&gt;. Por ejemplo, añadiendo a nuestro &lt;em&gt;virtualhost&lt;/em&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Header set X-MyHeader &amp;#34;It took %D microseconds to serve this page.&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Se pueden modificar tanto las cabeceras que van a ser enviadas, con la
directiva &lt;code&gt;Header&lt;/code&gt;, como las que vienen con una petición, con la
directiva &lt;code&gt;RequestHeader&lt;/code&gt;. Las acciones que se pueden llevar a cabo son:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;set&lt;/code&gt;, especifica el valor de la cabecera, la crea si no existía o&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;la modifica en caso contrario
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;append&lt;/code&gt;, añade el valor al final de la cabecera existente, y separa&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;los valores por comas
&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;add&lt;/code&gt;, añade una cabecera, duplicando la cabecera si ésta ya existía&lt;/li&gt;
&lt;li&gt;&lt;code&gt;unset&lt;/code&gt;, elimina una cabecera&lt;/li&gt;
&lt;li&gt;&lt;code&gt;echo&lt;/code&gt;, sólo en el caso de la directiva &lt;code&gt;Header&lt;/code&gt;, y permite utilizar&lt;/li&gt;
&lt;/ul&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;el valor de una cabecera en el `request`
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Este es el resultado:&lt;/p&gt;</description></item><item><title>setuid y setgid</title><link>http://karpoke.ignaciocano.com/2011/02/28/setuid-y-setgid/</link><pubDate>Mon, 28 Feb 2011 14:33:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/28/setuid-y-setgid/</guid><description>&lt;p&gt;&lt;code&gt;setuid&lt;/code&gt; y &lt;code&gt;setgid&lt;/code&gt; son unos permisos especiales, también llamados los
&lt;em&gt;sticky bits&lt;/em&gt;, que se les pueden asignar a los programas ejecutables
para que se ejecuten con los permisos del propietario y no del usuario
que los ejecuta. Esto sirve para, por ejemplo, que cualquier usuario
ejecute el comando &lt;code&gt;ping&lt;/code&gt; aunque éste necesite privilegios de
administrador, que es el propietario. En GNU/Linux, y en Unix, estos
bits se ignoran cuando se aplican a directorios.&lt;/p&gt;</description></item><item><title>html2pdf = html2ps + ps2pdf</title><link>http://karpoke.ignaciocano.com/2011/02/28/html2pdf-html2ps-ps2pdf/</link><pubDate>Mon, 28 Feb 2011 13:47:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/28/html2pdf-html2ps-ps2pdf/</guid><description>&lt;p&gt;Un buen comando para &lt;a href="http://www.atareao.es/ubuntu/conociendo-ubuntu/convetir-un-sitio-web-a-pdf-en-ubuntu/"&gt;convertir una web a PDF&lt;/a&gt;, idóneo para sitios con
documentación pero que ésta sólo está disponible &lt;em&gt;online&lt;/em&gt;. Por ejemplo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ html2ps -W b http://www.vala-project.org/doc/vala/ | ps2pdf - out.pdf
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Con la opción &lt;code&gt;-W b&lt;/code&gt; le decimos a &lt;code&gt;html2ps&lt;/code&gt; que siga sólo los enlaces
que están en el mismo directorio, o a partir de él,
respecto a la ruta proporcionada.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Cool HTML Codes" loading="lazy" src="http://karpoke.ignaciocano.com/images/cool-html-codes-300x225.jpg"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente: &lt;a href="http://www.techpin.com/"&gt;techpin.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Podemos crear un alias que reciba dos parámetros, la URL y el nombre que
queremos ponerle al PDF:&lt;/p&gt;</description></item><item><title>Solucionado el error "Tcl/Tk not found" al instalar OMNeT++ en Ubuntu</title><link>http://karpoke.ignaciocano.com/2011/02/21/solucionado-el-error-tcltk-not-found-al-instalar-omnet-en-ubuntu/</link><pubDate>Mon, 21 Feb 2011 14:37:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/21/solucionado-el-error-tcltk-not-found-al-instalar-omnet-en-ubuntu/</guid><description>&lt;p&gt;&lt;a href="http://www.omnetpp.org/"&gt;OMNeT++&lt;/a&gt; es un entorno de desarrollo modular y extensible
desarrollado en C++, y gratuito pasa uso no comercial, especialmente
pensado para construir simuladores de redes de eventos discretos en el
sentido más amplio: redes de comunicaciones alámbricas, inalámbricas,
redes de colas, etc. El soporte para dominios específicos tales como
redes de sensores, redes inalámbricas &lt;em&gt;ad-hoc&lt;/em&gt;, protocolos de Internet,
modelado del rendimiento, etc, viene dado por proyectos desarrollados de
forma independiente. OMNeT++ ofrece un IDE basado en eclipse, un entorno
de ejecución gráfico y otras herramientas. Hay extensiones para
simulación en tiempo real, emulación de redes, lenguages de programación
alternativos (Java, C#), integración con bases de datos, etc.&lt;/p&gt;</description></item><item><title>Cambiar la dirección MAC</title><link>http://karpoke.ignaciocano.com/2011/02/09/cambiar-la-direccion-mac/</link><pubDate>Wed, 09 Feb 2011 12:58:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/02/09/cambiar-la-direccion-mac/</guid><description>&lt;p&gt;A veces, nos puede interesar cambiar la MAC de nuestra tarjeta de red,
ya sea porqué nos conectamos a una red en la que no queremos que quede
registrada nuestra MAC real (todavía se podría ser más paranoico), ya
sea porqué hay un filtrado por MAC y la nuestra no se encuentra en la
lista de las MAC autorizadas para conectarse.&lt;/p&gt;
&lt;p&gt;&lt;img alt="MAC Address" loading="lazy" src="http://karpoke.ignaciocano.com/images/mac_address-300x252.png"&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Fuente: &lt;a href="http://en.wikipedia.org/wiki/MAC_address"&gt;wikipedia&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Para conocer la MAC de nuestras interfaces de red:&lt;/p&gt;</description></item><item><title>32 ó 64 bits</title><link>http://karpoke.ignaciocano.com/2011/01/18/32-o-64-bits/</link><pubDate>Tue, 18 Jan 2011 15:41:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/18/32-o-64-bits/</guid><description>&lt;p&gt;Para saber si el procesador es de 64 bits, ejecutamos el siguiente
comando:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ grep flags /proc/cpuinfo | grep -Eo &lt;span style="color:#e6db74"&gt;&amp;#34; lm &amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;&amp;amp;&amp;amp;&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;64&amp;#34;&lt;/span&gt; &lt;span style="color:#f92672"&gt;||&lt;/span&gt; echo &lt;span style="color:#e6db74"&gt;&amp;#34;32&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Otro comando que nos dirá si la arquitectura es de 32 ó 64 bits es &lt;code&gt;lshw&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ sudo lshw -C CPU | grep width
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;width: &lt;span style="color:#ae81ff"&gt;32&lt;/span&gt; bits
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Para saber si el sistema operativo es de 32 ó 64 bits ejecutamos el
siguiente comando:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ getconf LONG_BIT
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ae81ff"&gt;32&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ uname -m
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;i686
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$ arch &lt;span style="color:#75715e"&gt;# es lo mismo que la anterior&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;i6868
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Otro comando útil es &lt;code&gt;dpkg-architecture&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Personalizando el arranque gráfico en Ubuntu Maverirk Meerkat</title><link>http://karpoke.ignaciocano.com/2011/01/18/personalizando-el-arranque-grafico-en-ubuntu-maverirk-meerkat/</link><pubDate>Tue, 18 Jan 2011 06:55:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/18/personalizando-el-arranque-grafico-en-ubuntu-maverirk-meerkat/</guid><description>&lt;p&gt;Tras arreglar un par de &lt;a href="http://karpoke.ignaciocano.com/2011/01/18/solucion-de-problemas-con-plymouth-y-ati-en-ubuntu-maverick-meerkat/"&gt;problemas que tenía con el arranque&lt;/a&gt;, ya que
estamos, vamos a darle un toque distinto al asunto.&lt;/p&gt;
&lt;h2 id="temas-de-plymouth"&gt;Temas de Plymouth&lt;/h2&gt;
&lt;p&gt;Instalamos algunos de los &lt;a href="http://sliceoflinux.com/2010/05/14/cambia-el-tema-plymouth-de-tu-ubuntu-10-04/"&gt;temas para Plymouth&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo apt-get install plymouth-theme-{fade-in,glow,sabily,script,solar,spinfinity,text,ubuntu-logo,text}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cambiamos por el que queramos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo update-alternatives --config default.plymouth
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y actualizamos el &lt;code&gt;initramfs&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo update-initramfs -u
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Cuando reiciniemos habremos cambiado el tema de Playmouth.&lt;/p&gt;
&lt;h2 id="splashscreen-de-grub2"&gt;Splashscreen de Grub2&lt;/h2&gt;
&lt;p&gt;Editamos el archivo &lt;code&gt;/etc/grub.d/05_debian_theme&lt;/code&gt;, y modificamos la
línea:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;WALLPAPER=&amp;#34;/usr/share/images/desktop-base/moreblue-orbit-grub.png&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;para que apunte a la ruta de la imagen que queramos.&lt;/p&gt;</description></item><item><title>Solución de problemas con Plymouth y ATI en Ubuntu Maverick Meerkat</title><link>http://karpoke.ignaciocano.com/2011/01/18/solucion-de-problemas-con-plymouth-y-ati-en-ubuntu-maverick-meerkat/</link><pubDate>Tue, 18 Jan 2011 06:23:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/18/solucion-de-problemas-con-plymouth-y-ati-en-ubuntu-maverick-meerkat/</guid><description>&lt;p&gt;Se conoce que tras &lt;a href="http://karpoke.ignaciocano.com/2011/01/07/actualizando-ubuntu-a-la-ultima-distribucion-de-forma-remota/"&gt;actualizar a Maverick Meerkat&lt;/a&gt;, incluso de Karmic
a Lucid, algo pasaba con Playmouth, de tal manera que utilizaba una
resolución inadecuada.&lt;/p&gt;
&lt;p&gt;La solución parece depender en algunos casos de la tarjeta gráfica que
tengamos, así que describiré la que me &lt;a href="http://www.nosinmiubuntu.com/2010/10/solucion-para-el-plymouth-en-ubuntu.html"&gt;funcionó con una ATI Radeon&lt;/a&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ lspci | grep vga
01:00.0 VGA compatible controller: ATI Technologies Inc M92 [Mobility Radeon HD 4500 Series]
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Instalamos el paquete &lt;code&gt;v86d&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install v86d
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comprobamos las resoluciones que podemos poner:&lt;/p&gt;</description></item><item><title>w00t w00t</title><link>http://karpoke.ignaciocano.com/2011/01/17/w00t-w00t/</link><pubDate>Mon, 17 Jan 2011 04:18:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/17/w00t-w00t/</guid><description>&lt;p&gt;Si revisamos los &lt;em&gt;logs&lt;/em&gt; del servidor web, de vez en cuando aparecen toda una
serie de peticiones del tipo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;193.108.81.203 - - [12/Jan/2011:16:48:31 +0100] &amp;#34;GET /w00tw00t.at.blackhats.romanian.anti-sec:) HTTP/1.1&amp;#34; 404 488 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:34 +0100] &amp;#34;GET /db/scripts/setup.php HTTP/1.1&amp;#34; 404 471 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:35 +0100] &amp;#34;GET /mysql/scripts/setup.php HTTP/1.1&amp;#34; 404 473 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:35 +0100] &amp;#34;GET /typo3/phpmyadmin/scripts/setup.php HTTP/1.1&amp;#34; 404 480 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:38 +0100] &amp;#34;GET /phpmyadmin/scripts/setup.php HTTP/1.1&amp;#34; 404 477 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:38 +0100] &amp;#34;GET /pma/scripts/setup.php HTTP/1.1&amp;#34; 404 472 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:39 +0100] &amp;#34;GET /web/phpMyAdmin/scripts/setup.php HTTP/1.1&amp;#34; 404 479 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:39 +0100] &amp;#34;GET /xampp/phpmyadmin/scripts/setup.php HTTP/1.1&amp;#34; 404 480 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:39 +0100] &amp;#34;GET /web/scripts/setup.php HTTP/1.1&amp;#34; 404 472 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:39 +0100] &amp;#34;GET /websql/scripts/setup.php HTTP/1.1&amp;#34; 404 474 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:40 +0100] &amp;#34;GET /webadmin/scripts/setup.php HTTP/1.1&amp;#34; 404 476 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:40 +0100] &amp;#34;GET /sqlweb/scripts/setup.php HTTP/1.1&amp;#34; 404 474 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
193.108.81.203 - - [12/Jan/2011:16:48:40 +0100] &amp;#34;GET /websql/scripts/setup.php HTTP/1.1&amp;#34; 404 474 &amp;#34;-&amp;#34; &amp;#34;ZmEu&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En este caso, la IP parece ser del &lt;a href="http://www.ipillion.com/ip/193.108.81.203"&gt;Reino Unido&lt;/a&gt;, pero va variando, así como
la petición característica que hace al principio y el &lt;em&gt;&lt;a href="http://httpd.apache.org/docs/2.0/es/logs.html"&gt;user agent&lt;/a&gt;&lt;/em&gt; del
final, &amp;ldquo;&lt;a href="http://linux.m2osw.com/zmeu-attack"&gt;Zemu&lt;/a&gt;&amp;rdquo;. En otras ocasiones, la petición es
&lt;code&gt;/w00tw00t.at.ISC.SANS.DFind:)&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>pci_add_option_rom: failed to find romfile "pxe-rtl8139.bin"</title><link>http://karpoke.ignaciocano.com/2011/01/14/pci_add_option_rom-failed-to-find-romfile-pxe-rtl8139-bin/</link><pubDate>Fri, 14 Jan 2011 22:07:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/14/pci_add_option_rom-failed-to-find-romfile-pxe-rtl8139-bin/</guid><description>&lt;p&gt;Trasteando con &lt;code&gt;qemu&lt;/code&gt; y &lt;code&gt;Damn Small Linux&lt;/code&gt;, creamos una imagen de disco
de 500 MB:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ qemu-img create -f qcow hd-500m.img 500M
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Y lanzamos el programa:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ qemu -hda hd-500m.img -cdrom dsl-4.4.10.iso -boot d -m 128 -localtime
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En seguida nos aparece el siguiente mensaje:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;pci_add_option_rom: failed to find romfile &amp;#34;pxe-rtl8139.bin&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;El error que aparece, aunque no evita que la distribución arranque, se
debe a que en Ubuntu, por defecto, &lt;a href="http://wiki.tudos.org/QEmu"&gt;no están instalados los binarios&lt;/a&gt;
para permitir que el sistema operativo emulado arranque por red.&lt;/p&gt;</description></item><item><title>Optimizar el rendimiento de Flash</title><link>http://karpoke.ignaciocano.com/2011/01/11/optimizar-el-rendimiento-de-flash/</link><pubDate>Tue, 11 Jan 2011 12:33:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/11/optimizar-el-rendimiento-de-flash/</guid><description>&lt;p&gt;Leyendo el blog &lt;a href="http://usemoslinux.blogspot.com/2011/01/como-evitar-que-flash-arruine-tu.html"&gt;Usemos Linux&lt;/a&gt;, veo que podemos &lt;a href="http://blogs.adobe.com/penguinswf/2008/08/secrets_of_the_mmscfg_file_1.html"&gt;optimizar el
rendimiento del uso de Flash&lt;/a&gt;, configurando el complemento para que no
realice algunas comprobaciones de la GPU, con lo que se alivia el
consumo de CPU y de memoria.&lt;/p&gt;
&lt;p&gt;Sin embargo, no en todos los casos se conseguirá esta mejora del
rendimiento. Esto &lt;a href="http://www.kaourantin.net/2008/05/what-does-gpu-acceleration-mean.html"&gt;dependerá&lt;/a&gt; de:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;el contenido debe estar preparado para utilizar la GPU, de lo&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;contrario, la reproducción hasta podría volverse más lenta.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;los requerimientos de hardware para la GPU en el modo GPU son&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;importantes.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;no se puede garantizar la fidelidad de los &lt;em&gt;píxels&lt;/em&gt;, ya que podrían&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;cambiar de color.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;no importa si el &lt;em&gt;frame rate&lt;/em&gt; está por encima de 60, nunca será&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;superior. De hecho, podemos esperar que sea entre 50 y 55 fps.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;no se debería usar, o abusar, del modo GPU para todo el contenido&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Flash que se utilice en una página, ya que degradaría bastante la
respuesta del navegador.
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;el rendimiento también depende de los fabricantes y sus&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;controladores.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Para configurar el complemento, deberemos crear el fichero de configuración
&lt;code&gt;mms.cfg&lt;/code&gt;. Ejecutamos:&lt;/p&gt;</description></item><item><title>kernel time sync status change</title><link>http://karpoke.ignaciocano.com/2011/01/07/kernel-time-sync-status-change/</link><pubDate>Fri, 07 Jan 2011 06:04:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/07/kernel-time-sync-status-change/</guid><description>&lt;p&gt;Tras instalar &lt;code&gt;logcheck&lt;/code&gt;, un programa que escanea los ficheros de &lt;em&gt;log&lt;/em&gt;
del sistema en busca de &amp;ldquo;líneas interesantes&amp;rdquo;, comencé a recibir
demasiados avisos del tipo:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Jan 7 02:04:38 terminus ntpd[1117]: kernel time sync status change 6001
&amp;#34;1117&amp;#34;
Jan 7 02:21:44 terminus ntpd[1117]: kernel time sync status change 2001
&amp;#34;1117&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="http://lists.freebsd.org/pipermail/freebsd-stable/2005-April/013404.html"&gt;Estos cambios son debidos&lt;/a&gt; a que &lt;code&gt;ntp&lt;/code&gt; cambia &lt;a href="http://www.eecis.udel.edu/~mills/database/papers/allan.pdf"&gt;dinámicamente&lt;/a&gt; entre
los modo &lt;code&gt;FLL&lt;/code&gt; y el &lt;code&gt;PLL&lt;/code&gt;, lo que le permite tener en cuenta la latencia
de la red o el &lt;em&gt;jitter&lt;/em&gt; a la hora de actualizar el reloj del sistema.&lt;/p&gt;</description></item><item><title>Actualizando Ubuntu a la última distribución de forma remota</title><link>http://karpoke.ignaciocano.com/2011/01/07/actualizando-ubuntu-a-la-ultima-distribucion-de-forma-remota/</link><pubDate>Fri, 07 Jan 2011 04:38:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2011/01/07/actualizando-ubuntu-a-la-ultima-distribucion-de-forma-remota/</guid><description>&lt;p&gt;Instalamos el paquete &lt;code&gt;update-manager&lt;/code&gt;, si es que no lo teníamos:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo aptitude install update-manager
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Comprobamos que el fichero &lt;code&gt;/etc/update-manager/release-upgrades&lt;/code&gt;
contiene:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Prompt=normal
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Si contiene &lt;code&gt;Prompt=lts&lt;/code&gt; sólo nos actualizará si hay una &lt;a href="http://es.wikipedia.org/wiki/Ubuntu"&gt;LTS&lt;/a&gt; nueva.
Si contiene &lt;code&gt;Prompt=never&lt;/code&gt;&amp;hellip; no actualizará nada.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Ape Man Evolution" loading="lazy" src="http://karpoke.ignaciocano.com/images/ape_man_evolution.png"&gt;&lt;/p&gt;
&lt;p&gt;Y ejecutamos el comando &lt;code&gt;do-release-upgrade&lt;/code&gt;:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo do-release-upgrade
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;» &lt;a href="http://www.ubuntugeek.com/how-to-upgrade-from-ubuntu-10-04-lucid-to-ubuntu-10-10-maverick-desktop-and-server.html"&gt;ubuntugeek&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Asignar la IP que queramos a un dominio de DynDNS</title><link>http://karpoke.ignaciocano.com/2010/12/30/asignar-la-ip-que-queramos-a-un-dominio-de-dyndns/</link><pubDate>Thu, 30 Dec 2010 19:12:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/12/30/asignar-la-ip-que-queramos-a-un-dominio-de-dyndns/</guid><description>&lt;p&gt;Con el comando &lt;code&gt;inadyn&lt;/code&gt; podemos actualizar la IP de nuestro dominio, o
&lt;a href="http://karpoke.ignaciocano.com/2010/12/11/dyndns-e-inadyn/"&gt;dominios&lt;/a&gt;, en DynDNS, pero la IP no se pasa como argumento sino que
se hace una consulta a un servidor que devuelve la IP pública que
tenemos en ese momento. Por defecto, el servidor es
&lt;code&gt;checkip.dyndns.org:80&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Podemos hacer que el dominio apunte a la IP que queramos utilizando el
argumento &lt;code&gt;--ip_server_name&lt;/code&gt; para especificar un servidor controlado por
nosotros y que devuelva la IP que queramos.&lt;/p&gt;</description></item><item><title>La infame actualización de WordPress en 15 segundos</title><link>http://karpoke.ignaciocano.com/2010/12/30/la-infame-actualizacion-de-wordpress-en-15-segundos/</link><pubDate>Thu, 30 Dec 2010 04:21:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/12/30/la-infame-actualizacion-de-wordpress-en-15-segundos/</guid><description>&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Copia de respaldo de la base de datos&lt;/strong&gt;. Entre el flag &lt;code&gt;-u&lt;/code&gt; y el&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;nombre de usuario no debe haber ningún espacio. Ojo, se bloquearán
las tablas hasta que termine. Y otro ojo, no es muy recomendable
escribir la contraseña directamente en la línea de comandos. Si sólo
ponemos el flag `-p`, se nos pedirá la contraseña para el usuario
proporcionado.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; $ /usr/bin/mysqldump -uuser -p --all-databases | gzip &amp;gt; mysql-$(date +%F).tgz
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;&lt;strong&gt;Copia de respaldo de los archivos&lt;/strong&gt;. Tanto del directorio&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;`wp-uploads` como del directorio `wordpress`.
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt; $ tar -cvzf wordpress-$(date +%F).tgz /usr/share/wordpress
$ tar -cvzf wp-uploads-$(date +%F).tgz /var/www/wp-uploads
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;&lt;strong&gt;Desactivamos todos los &lt;em&gt;plugins&lt;/em&gt;&lt;/strong&gt; desde el panel de control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eliminamos los subdirectorios&lt;/strong&gt; &lt;code&gt;wp-admin&lt;/code&gt; y &lt;code&gt;wp-includes&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; $ cd /usr/share/wordpress
$ sudo rm -fr wp-admin wp-includes
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;&lt;strong&gt;Instalamos&lt;/strong&gt; la última versión.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt; $ wget -NP /tmp http://wordpress.org/latest.zip
$ sudo unzip /tmp/latest.zip -d /usr/share # yes to [A]ll
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Comprobamos si se debe &lt;strong&gt;actualizar la base de datos de WordPress&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;En principio, basta ir al panel de administración y ahí nos
aparecerá un mensaje diciéndonos que es necesario actualizar la base
de datos y que visitemos la página `/wp-admin/upgrade.php` para
realizar dicha actualización.
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;En una sola línea:&lt;/p&gt;</description></item><item><title>Buscando rootkits y troyanos</title><link>http://karpoke.ignaciocano.com/2010/12/17/buscando-rootkits-y-troyanos/</link><pubDate>Fri, 17 Dec 2010 03:04:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/12/17/buscando-rootkits-y-troyanos/</guid><description>&lt;p&gt;Tres herramientas muy útiles: &lt;code&gt;rkhunter&lt;/code&gt;, &lt;code&gt;chkrootkit&lt;/code&gt; y &lt;code&gt;unhide&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="rkhunter"&gt;rkhunter&lt;/h2&gt;
&lt;p&gt;Busca &lt;em&gt;rootkits&lt;/em&gt;, puertas traseras y &lt;em&gt;exploits&lt;/em&gt;. Al instalarlo, se
programa un escaneo diario, pero cuando instalamos las actualizaciones
de algunos programas, &lt;a href="http://www.mail-archive.com/rkhunter-users@lists.sourceforge.net/msg01966.html"&gt;las firmas de &lt;code&gt;rkhunter&lt;/code&gt; quedan obsoletas&lt;/a&gt;, por
lo que empieza a mandar avisos.&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;Warning: The file properties have changed:
File: /usr/bin/md5sum
Current inode: 1093680 Stored inode: 475456
Current file modification time: 1285094009 (21-sep-2010 20:33:29)
Stored file modification time : 1267759792 (05-mar-2010 04:29:52)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Podemos actualizar las firmas de &lt;code&gt;rkhunter&lt;/code&gt; ejecutando:&lt;/p&gt;</description></item><item><title>Mejora del rendimiento interactivo agrupando tareas por terminal</title><link>http://karpoke.ignaciocano.com/2010/12/16/mejora-del-rendimiento-interactivo-agrupando-tareas-por-terminal/</link><pubDate>Thu, 16 Dec 2010 02:03:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/12/16/mejora-del-rendimiento-interactivo-agrupando-tareas-por-terminal/</guid><description>&lt;p&gt;El &lt;a href="http://lkml.org/lkml/2010/10/19/123"&gt;parche de 200 líneas&lt;/a&gt; para el kernel, o su versión en &lt;a href="http://usemoslinux.blogspot.com/2010/11/foto-resumen-tras-haber-realizado-el.html"&gt;espacio de
usuario&lt;/a&gt;, &lt;a href="http://ubuntulife.wordpress.com/2010/11/20/el-parche-milagro-de-linux-de-200-lineas-implementado-en-4-lineas-de-bash/#comment-43848"&gt;mejora el rendimiento interactivo&lt;/a&gt; agrupando los procesos
por &lt;code&gt;tty&lt;/code&gt;. La mejora sólo será notable si tenemos varios procesos
asociados a un terminal que tengan un consumo importante de CPU, ya que
la potencia de ésta no se repartirá entre el número de procesos sino
entre el número de grupos de procesos. De ahí que sea una mejora
&lt;em&gt;interactiva&lt;/em&gt;, el ordenador no irá más rápido, pero sí tendremos la
sensación de que responde más rápido. Este parche requiere un kernel
superior al 2.6.36 con soporte a grupos de tareas.&lt;/p&gt;</description></item><item><title>Dyndns e inadyn</title><link>http://karpoke.ignaciocano.com/2010/12/11/dyndns-e-inadyn/</link><pubDate>Sat, 11 Dec 2010 03:29:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/12/11/dyndns-e-inadyn/</guid><description>&lt;p&gt;&lt;a href="http://free.domain.name/"&gt;Dyndns&lt;/a&gt; no hace mucho que cambió su política de servicios, reduciendo
el número de direcciones gratuitas que se podían gestionar con una
cuenta de usuario de 5 a 2, y reduciendo también el número de dominios
entre los que escoger.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Karpoke" loading="lazy" src="http://karpoke.ignaciocano.com/extra/favicon.ico"&gt;&lt;/p&gt;
&lt;p&gt;Sin embargo, si antes de que cambiaran la política ya teníamos más de 2
direcciones o eran de dominios que ya no están disponibles, podremos
seguir conservándolos mientras sigan siendo utilizados, es decir,
mientras se siga actualizando regularmente la IP a la que deben apuntar,
como mínimo una vez al mes. Si actualmente usamos la dirección no hay
problema, ya se encarga el router o el cliente de escritorio de
actualizarla. Pero si tenemos alguna dirección que no estamos utilizando
pero que queremos conservar y tenemos más de 2 direcciones en nuestra
cuenta, corremos el peligro de que se nos pase y la perdamos.&lt;/p&gt;</description></item><item><title>Cómo publicar directorios en Ubuntu One y Dropbox</title><link>http://karpoke.ignaciocano.com/2010/10/31/como-publicar-directorios-en-ubuntu-one-y-dropbox/</link><pubDate>Sun, 31 Oct 2010 06:28:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/31/como-publicar-directorios-en-ubuntu-one-y-dropbox/</guid><description>&lt;p&gt;&lt;a href="http://one.ubuntu.com/"&gt;Ubuntu One&lt;/a&gt; es el servicio que ofrece Ubuntu en la nube. Entre otras
cosas, como &lt;a href="http://wiki.ubuntu.com/UbuntuOne/Tutorials/"&gt;sincronizar archivos de configuración o nuestros
favoritos&lt;/a&gt;, permite &lt;a href="http://wiki.ubuntu.com/UbuntuOne/Tutorials/FileSharing"&gt;compartir archivos y directorios&lt;/a&gt; de nuestro
espacio en la nube con las personas que queramos de una forma sencilla.&lt;/p&gt;
&lt;p&gt;Tambíen permite publicar archivos, para cada uno de los cuales se genera
una URL corta, y que sean accesibles por cualquiera. Sin embargo, &lt;a href="http://lists.launchpad.net/ubuntuone-users/msg00523.html"&gt;no
permite publicar directorios&lt;/a&gt;, al menos por ahora.&lt;/p&gt;</description></item><item><title>Recuperando archivos del USB</title><link>http://karpoke.ignaciocano.com/2010/10/27/recuperando-archivos-del-usb/</link><pubDate>Wed, 27 Oct 2010 11:57:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/27/recuperando-archivos-del-usb/</guid><description>&lt;p&gt;Tengo la mala costumbre de borrar archivos utilizando la combinación
&lt;code&gt;shift+del&lt;/code&gt;, para borrarlos directamente sin pasar por la papelera.
Llegará el momento en que borre algo que no debería o algo que
necesitaré más tarde.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Sushi USB2" loading="lazy" src="http://karpoke.ignaciocano.com/images/sushi_usb_2-300x190.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Si esto sucediese, lo mejor podría ser:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Desmontar el USB para evitar males mayores&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ sudo umount /media/miusb # &amp;#39;miusb&amp;#39; es el nombre del volumen del USB
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;Hacer una copia del USB con &lt;code&gt;dd&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ dd if=/dev/sdb1 of=/tmp/miusb.dd # sdb1 es la unidad donde se monta el USB
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="3"&gt;
&lt;li&gt;Podemos listar los archivos borrados con &lt;code&gt;ils&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ ils -r /tmp/miusb.dd
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;class|host|device|start_time
ils|anacreonte||1288172460
st_ino|st_alloc|st_uid|st_gid|st_mtime|st_atime|st_ctime|st_crtime|st_mode|st_nlink|st_size
8|f|0|0|1263329350|1265842800|0|1263329350|777|0|33076
12|f|0|0|1265738134|1288130400|0|1265738134|777|0|31609
14|f|0|0|1263325690|1288130400|0|1263325690|777|0|28946
16|f|0|0|1263326438|1288130400|0|1263326438|777|0|2305751
19|f|0|0|1263327386|1288130400|0|1263327386|777|0|91028
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="4"&gt;
&lt;li&gt;Creamos un directorio para tener todos los archivos que se puedan&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;recuperar
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;$ mkdir /tmp/miusb_tmp
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="5"&gt;
&lt;li&gt;Recuperamos los archivos con &lt;code&gt;icat&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ for i in $(ils -r /tmp/miusb.dd | awk &amp;#39;{print $1}&amp;#39; FS=&amp;#34;|&amp;#34; | sed 1,3d); do
icat -r /tmp/miusb.dd $i &amp;gt; /tmp/miusb_tmp/$i
echo $i
done
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="6"&gt;
&lt;li&gt;Comprobamos el tipo de archivos recuperados&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ file /tmp/miusb_tmp/*
&lt;/code&gt;&lt;/pre&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;8: OpenDocument Text
12: PDF document, version 1.2
14: PDF document, version 1.3
16: PDF document, version 1.4
19: PDF document, version 1.2
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;code&gt;ils&lt;/code&gt; y &lt;code&gt;icat&lt;/code&gt; vienen incluidos en el paquete &lt;code&gt;sleuthkit&lt;/code&gt;, que se
encuentra en los repositorios. También existe &lt;code&gt;autopsy&lt;/code&gt;, que es una
interfaz web para &lt;code&gt;sleuthkit&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Sa Nostra y SSL</title><link>http://karpoke.ignaciocano.com/2010/10/25/sa-nostra-y-ssl/</link><pubDate>Mon, 25 Oct 2010 11:50:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/25/sa-nostra-y-ssl/</guid><description>&lt;p&gt;Leyendo la comparativa de &lt;a href="http://www.securitybydefault.com/2010/10/bancos-y-ssl-quien-aprueba.html"&gt;SbD&lt;/a&gt; sobre el uso de SSL por parte de los
bancos online, estos son los resultados de Sa Nostra:&lt;/p&gt;
&lt;p&gt;URL: &lt;a href="https://linea.sanostra.es"&gt;https://linea.sanostra.es&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="verificación-sslv2"&gt;Verificación SSLv2&lt;/h2&gt;
&lt;p&gt;Comando:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ openssl s_client -ssl2 -connect linea.sanostra.es:443
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Bien: no da soporte&lt;/p&gt;
&lt;h2 id="tipo-de-certificado-normalev"&gt;Tipo de certificado (Normal/EV)&lt;/h2&gt;
&lt;p&gt;Esto lo podemos comprobar a través del navegador.
Mal: Tiene un certificado SSL sin Validación Extendida.&lt;/p&gt;
&lt;h2 id="longitud-de-la-clave-rsa-del-certificado"&gt;Longitud de la clave RSA del certificado&lt;/h2&gt;
&lt;p&gt;Comando:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ openssl s_client -connect linea.sanostra.es:443
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Mal: La clave es de 1024 bits.&lt;/p&gt;</description></item><item><title>La guardiana de la puerta</title><link>http://karpoke.ignaciocano.com/2010/10/22/la-guardiana-de-la-puerta/</link><pubDate>Fri, 22 Oct 2010 19:37:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/22/la-guardiana-de-la-puerta/</guid><description>&lt;p&gt;¿A veces no os gustaría saber si el que se mete en vuestra casa no es el
maestro de las llaves?&lt;/p&gt;
&lt;p&gt;&lt;img alt="la guardiana de la puerta" loading="lazy" src="http://karpoke.ignaciocano.com/images/guardiana-300x260.jpg"&gt;&lt;/p&gt;
&lt;p&gt;En &lt;a href="http://serverfault.com/questions/77983/run-shell-script-each-time-any-user-logs-on"&gt;ubuntu&lt;/a&gt;, los &lt;em&gt;scripts&lt;/em&gt; que estén en el directorio &lt;code&gt;/etc/profile.d&lt;/code&gt;
se ejecutan cada vez que un usuario inicia la sesión. Si nuestro
servidor sólo lo usamos nosotros, y si no también, podríamos &lt;a href="http://terminus.ignaciocano.com/wp-uploads/linked/user-has-logged-in.sh"&gt;enviarnos
un correo cada vez que un usuario se conecta&lt;/a&gt;. Así, al menos,
podríamos saber si alguien ha entrado con nuestro usuario.&lt;/p&gt;</description></item><item><title>Mostrando las cabeceras HTTP</title><link>http://karpoke.ignaciocano.com/2010/10/07/mostrando-las-cabeceras-http/</link><pubDate>Thu, 07 Oct 2010 10:35:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/10/07/mostrando-las-cabeceras-http/</guid><description>&lt;p&gt;Leyendo el artículo de &lt;a href="http://www.securitybydefault.com/2010/08/analizando-cabeceras-http-just-for-fun.html"&gt;análisis de cabeceras&lt;/a&gt; de SbD y, en
particular, lo relacionado con las cabeceras no estándar, es decir, las
que comienzan por &lt;code&gt;X-&lt;/code&gt;, se me ha ocurrido que estaría bien ver qué debe
haber por el mundo:&lt;/p&gt;
&lt;p&gt;&lt;img alt="HTTP Header" loading="lazy" src="http://karpoke.ignaciocano.com/images/http_header.jpg"&gt;&lt;/p&gt;
&lt;p&gt;Suponiendo que el archivo &lt;a href="http://terminus.ignaciocano.com/wp-uploads/linked/sites.txt"&gt;sites.txt&lt;/a&gt; contiene un listado de los
sitios que queremos comprobar:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;$ for url in $(cat sites.txt); do
&amp;gt; echo $url
&amp;gt; curl -sI $url | grep &amp;#34;^X-&amp;#34;
&amp;gt; done &amp;gt; headers.txt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Es cierto que se podría haber realizado de otras formas:&lt;/p&gt;</description></item><item><title>La batería del portátil</title><link>http://karpoke.ignaciocano.com/2010/09/26/la-bateria-del-portatil/</link><pubDate>Sun, 26 Sep 2010 00:10:00 +0100</pubDate><guid>http://karpoke.ignaciocano.com/2010/09/26/la-bateria-del-portatil/</guid><description>&lt;p&gt;Algunos &lt;a href="http://www.macoteca.com/falsos-mitos-de-las-baterias/90/"&gt;falsos mitos de las baterías del portátil&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Es necesario que se agote la batería para ponerla a cargar,&lt;/li&gt;
&lt;li&gt;no se debe dejar el portátil siempre enchufado a la corriente,&lt;/li&gt;
&lt;li&gt;ni se debe suspender conectado a la corriente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;También existen técnicas para &lt;a href="http://www.macoteca.com/rejuvenece-la-bateria-de-tu-portatil/94/"&gt;alargar la vida de la batería&lt;/a&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;enchufa el portátil (y enciéndelo, si quieres) hasta que la batería&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;este cargada y déjalo cargando 2 horas más,
&lt;/code&gt;&lt;/pre&gt;&lt;ol start="2"&gt;
&lt;li&gt;desenchufa el portátil y espera a que se gaste la batería e hiberne&lt;/li&gt;
&lt;li&gt;enchufa el portátil sin encenderlo hasta que se cargue la batería&lt;/li&gt;
&lt;li&gt;realizar estas operaciones cada 2 ó 3 meses&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;En principio, las baterías de los portátiles &lt;em&gt;ya&lt;/em&gt; incorporan un
mecanismo que corta la corriente cuando éstas están totalmente cargadas,
evitando así la fatiga por la carga continua.&lt;/p&gt;</description></item></channel></rss>