<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>El rincón de Zerial &#187; Tips</title>
	<atom:link href="http://blog.zerial.org/tag/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zerial.org</link>
	<description>Informática, GNU/Linux, Seguridad, Hacking, Programación, Ocio</description>
	<lastBuildDate>Tue, 03 Jan 2012 00:13:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Manipular volúmenes lógicos (LVM) en discos virtuales</title>
		<link>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/</link>
		<comments>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 07:48:50 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[kpartx]]></category>
		<category><![CDATA[losetup]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[virtual machine]]></category>
		<category><![CDATA[virtualizacion]]></category>
		<category><![CDATA[vm]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2673</guid>
		<description><![CDATA[Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg"><img class="alignleft size-full wp-image-2680" style="margin: 4px;" title="quantum-bigfoot" src="http://blog.zerial.org/wp-content/uploads/2011/09/quantum-bigfoot.jpg" alt="" width="181" height="154" /></a>Me refiero a <strong>discos virtuales</strong> a los que creamos usando <strong>dd</strong>. Cuando creamos un disco utilizando por ejemplo <em>dd if=/dev/zero of=imagen.img</em> y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.</p>
<p>Tengo mi disco original llamado &#8220;<em>vm1.img</em>&#8221; y la clono simplemente con un <strong>cp</strong> o bien con &#8220;<strong>dd if=vm1.img vm1_clon.img</strong>&#8220;, paso a paso, lo que tenemos que hacer es:</p>
<ol>
<li>Crear un dispositivo &#8220;loop&#8221; en base a nuestro disco virtual</li>
<li>Mapear el dispositivo loop creado</li>
<li>Revisar los dispositivos creados en /dev/mapper/</li>
<li>Activar el volúmen y realizar las tareas necesarias</li>
</ol>
<p>Las herramientas que usé son <a href="http://linux.die.net/man/8/losetup">losetup</a>, <a href="http://linux.die.net/man/8/kpartx">kpartx</a> y <a href="http://linux.die.net/man/8/vgchange">vgchange</a>.</p>
<p><span id="more-2673"></span></p>
<p>Primero, ya tenemos nuestro disco creado, en este caso lo llamaré &#8220;testing&#8221; y tiene un tamaño de 80GB.<br />
<code># fdisk -l testing</p>
<p>Disk testing: 85.9 GB, 85899345920 bytes<br />
255 heads, 63 sectors/track, 10443 cylinders, total 167772160 sectors<br />
Units = sectors of 1 * 512 = 512 bytes<br />
Sector size (logical/physical): 512 bytes / 512 bytes<br />
I/O size (minimum/optimal): 512 bytes / 512 bytes<br />
Disk identifier: 0x0007759f</p>
<p>  Device Boot      Start         End      Blocks   Id  System<br />
testing1   *          63      208844      104391   83  Linux<br />
testing2          208845   167766794    83778975   8e  Linux LVM</code></p>
<p>Para comenzar vamos a usar el comando <strong>losetup</strong> para crear un dispositivo &#8220;loop&#8221; en base a nuestra imagen de disco, para esto ejecutamos:</p>
<p><code># losetup -f testing</code></p>
<p>Y verificamos con el mismo comando losetup que se haya creado</p>
<p><code># losetup -a<br />
/dev/loop0: [fe01]:24577 (/mnt/vardata/testing)</code></p>
<p>Ya tenemos nuestro dispositivo &#8220;loop&#8221; en /dev/loop0 mapeado a la imagen de disco virtual ubicada en /mnt/vardata/testing. </p>
<p>Ahora debemos usar la herramienta <strong>kpartx</strong> para <em>mapear</em> ese dispositivo que hemos mapeado a nuestro disco virtual hacia nuestro administrador de volúmenes lógicos</p>
<p><code># kpartx -a -v /dev/loop0<br />
add map loop0p1 (254:2): 0 208782 linear /dev/loop0 63<br />
add map loop0p2 (254:3): 0 167557950 linear /dev/loop0 208845</code></p>
<p>Ahora tenemos otros dispositivos creados en /dev/mapper, corresponden a &#8220;loop0p1&#8243; y &#8220;loop0p2&#8243; correspondientes a las particiones de nuestro disco virtual. Así debería ser presentarse:</p>
<p><code># ls -lia /dev/mapper/<br />
total 0<br />
   1072 drwxr-xr-x  2 root root     140 sep 13 15:19 .<br />
      3 drwxr-xr-x 15 root root    3260 sep 13 15:19 ..<br />
   1073 crw-------  1 root root 10, 236 ago 11 12:12 control<br />
2672529 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p1 -&gt; ../dm-2<br />
2671232 lrwxrwxrwx  1 root root       7 sep 13 15:19 loop0p2 -&gt; ../dm-3<br />
   3655 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-backup -&gt; ../dm-0<br />
   3672 lrwxrwxrwx  1 root root       7 ago 11 12:12 VolGroup_ID_15211-vardata -&gt; ../dm-1</code></p>
<p>Y el comando <strong>vgdisplay</strong> debería mostrar la información del grupo</p>
<p><code># vgdisplay<br />
  --- Volume group ---<br />
  VG Name               VolGroup00<br />
  System ID<br />
  Format                lvm2<br />
  Metadata Areas        1<br />
  Metadata Sequence No  3<br />
  VG Access             read/write<br />
  VG Status             resizable<br />
  MAX LV                0<br />
  Cur LV                2<br />
  Open LV               0<br />
  Max PV                0<br />
  Cur PV                1<br />
  Act PV                1<br />
  VG Size               79,88 GiB<br />
  PE Size               32,00 MiB<br />
  Total PE              2556<br />
  Alloc PE / Size       2556 / 79,88 GiB<br />
  Free  PE / Size       0 / 0<br />
  VG UUID               yAIBPd-1PD6-IN1U-aoK7-bLSW-rz08-ERktCp</code></p>
<p>Y con <strong>lvdisplay</strong> revisamos la información de los volúmenes dentro del grupo VolGroup00</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
  LV Status              NOT available<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto</code></p>
<p>Si te fijan en un detalle, en ambos volúmenes, el estado es &#8220;<strong>NOT available</strong>&#8220;, pues debemos activarlo</p>
<p><code># vgchange VolGroup00 -a y<br />
  2 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p>Y volvemos a revisar</p>
<p><code># lvdisplay VolGroup00<br />
  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol00<br />
  VG Name                VolGroup00<br />
  LV UUID                Du8Hwj-BUff-RhS3-lNTZ-KsxS-jvEp-S71om4<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                77,84 GiB<br />
  Current LE             2491<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:4</p>
<p>  --- Logical volume ---<br />
  LV Name                /dev/VolGroup00/LogVol01<br />
  VG Name                VolGroup00<br />
  LV UUID                Sg3KQG-F3Ad-kgIx-yJi0-OSxm-fBUg-bKUR3O<br />
  LV Write Access        read/write<br />
<strong>  LV Status              available</strong><br />
  # open                 0<br />
  LV Size                2,03 GiB<br />
  Current LE             65<br />
  Segments               1<br />
  Allocation             inherit<br />
  Read ahead sectors     auto<br />
  - currently set to     256<br />
  Block device           254:5</code></p>
<p>Ya los tenemos disponibles y ahora podemos trabajar con ese volúmen como si fuese un &#8220;lvm&#8221; normal, realizar tareas de mantención, montar el volumen, disminuir o aumentar su tamaño, etc.</p>
<p>Cuando ya terminemos de hacer todo lo que queramos con el disco virtual, hay que volver todo a la normalidad, haciendo los pasos inversos:</p>
<p><strong>Desactivar el volumen</strong><br />
<code># vgchange VolGroup00 -a n<br />
  0 logical volume(s) in volume group "VolGroup00" now active</code></p>
<p><strong>Remover el mapeo de los dispositivos loop0p1 y loop0p2</strong> creados desde loop0<br />
<code># kpartx -d /dev/loop0</code></p>
<p><strong>Remover el mapeo de /dev/loop0</strong> creado desde nuestro disco virtual &#8220;testing&#8221;<br />
<code># losetup -v -d /dev/loop0</code></p>
<p>Ya dejamos todo como estaba y podemos volver a utilizar nuestro disco virtual.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fmanipular-volumenes-logicos-lvm-en-discos-virtuales%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/"  data-text="Manipular volúmenes lógicos (LVM) en discos virtuales" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/manipular-volumenes-logicos-lvm-en-discos-virtuales/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Mini-Post: Acceso directo a archivos de descarga</title>
		<link>http://blog.zerial.org/seguridad/mini-post-acceso-directo-a-archivos-de-descarga/</link>
		<comments>http://blog.zerial.org/seguridad/mini-post-acceso-directo-a-archivos-de-descarga/#comments</comments>
		<pubDate>Sun, 11 Sep 2011 01:36:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Interes general]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[desarrollo seguro]]></category>
		<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[programacion segura]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2483</guid>
		<description><![CDATA[Una forma de hacer un bypass a los sistemas de autenticación es poder acceder a archivos &#8220;sensibles&#8221; que sólo un usuario con autorización debería poder ver. Existen muchos sitios que tienen panel de administración pero no protegen los directorios donde se encuentran los archivos, por ejemplo, imaginemos que el usuario &#8220;admin&#8221; subió un archivo con [...]]]></description>
			<content:encoded><![CDATA[<p>Una forma de hacer un bypass a los sistemas de autenticación es poder acceder a archivos &#8220;sensibles&#8221; que sólo un usuario con autorización debería poder ver. Existen muchos sitios que tienen panel de administración pero no protegen los directorios donde se encuentran los archivos, por ejemplo, imaginemos que el usuario &#8220;admin&#8221; subió un archivo con datos de acceso a un servidor y en el sistema configuró que sólo algunos usuarios puedan verlo, sin embargo, cualquier persona que se sepa la URL puede acceder a el &#8230; Aunque suene bastante simple e incluso estúpido, es lamentable que existan sistemas o sitios web que lo permiten.</p>
<p>Por lo general, esto sucede cuando no existe una capa intermedia entre el archivo y el sistema, sino que se linkea directamente. Algo que debería ser <strong>http://www.dominio.cl/sistema/index.php/descargar/949394</strong> es <strong>http://www.dominio.cl/sistema/admin/archivos/usuarios_y_passwords.docx</strong>, y en el peor de los casos hasta se puede eliminar el nombre del archivo y listar el contenido del directorio &#8220;archivos&#8221; <img src='http://blog.zerial.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Los sistemas web deberían manejar internamente un &#8220;id&#8221; o nombre ficticio del archivo, <em>hasheado</em> y <em>mapeado</em> al momento de subirlo, para no permitir que cualquier usuario pueda acceder. Por ejemplo, si tenemos la URL de prueba dada anteriormente, 949394 correspondería al ID del archivo, el sistema debería -internamente- hacer una consulta a la base de datos y ver a que archivo corresponde ese ID, luego ver quienes tienen permisos para acceder a ese archivo y, luego de verificar la sesión y permisos, permitir la descarga del archivo.<br />
Para evitar la descarga directa de los archivos, el directorio &#8220;uploads&#8221; debería estar fuera del directorio de la aplicación, por ejempo, si el directorio de la aplicación es /var/www/html/sistema1/, el directorio debería estar fuera de &#8220;sistema1&#8243;, sino, aunque hagas todas las validaciones posibles, de todas formas se podrá acceder directamente al archivo saltandose la validación de la aplicación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fmini-post-acceso-directo-a-archivos-de-descarga%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/mini-post-acceso-directo-a-archivos-de-descarga/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/mini-post-acceso-directo-a-archivos-de-descarga/"  data-text="Mini-Post: Acceso directo a archivos de descarga" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/mini-post-acceso-directo-a-archivos-de-descarga/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela</title>
		<link>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/</link>
		<comments>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/#comments</comments>
		<pubDate>Sat, 11 Jun 2011 04:36:45 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bzip]]></category>
		<category><![CDATA[bzip2]]></category>
		<category><![CDATA[compresion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[pbzip2]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2331</guid>
		<description><![CDATA[Ya todos conocemos &#8220;bzip2&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;pbzip2&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing). PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses [...]]]></description>
			<content:encoded><![CDATA[<p>Ya todos conocemos &#8220;<a href="http://www.bzip.org/">bzip2</a>&#8220;, un algoritmo de compresión sin perdida, pero no todos conocen la existencia del proyecto &#8220;<a href="http://www.compression.ca/pbzip2/">pbzip2</a>&#8220;, una implementación &#8220;paralela&#8221; del anterior; un algoritmo de compresión, basado en bzip2, que aprovecha los recursos de una máquina con SMP (Symmetric Multi-Processing).</p>
<blockquote><p>PBZIP2 is a parallel implementation of the bzip2 block-sorting file compressor that uses pthreads and achieves near-linear speedup on SMP machines. The output of this version is fully compatible with bzip2 v1.0.2 or newer</p></blockquote>
<p><a href="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png"><img class="aligncenter size-full wp-image-2333" title="pbzip2 - bzip2 multi hilo" src="http://blog.zerial.org/wp-content/uploads/2011/06/intro.png" alt="" width="624" height="125" /></a><center>(<em>Intel(R) Core(TM)2 Duo CPU     P8700  @ 2.53GHz</em>)</center></p>
<p>En la imagen pueden ver los 3 procesos de pbzip2 consumiendo los 2 CPUs al 100%, de esta forma el tiempo de compresión es practicamente la mitad.<br />
A simple vista, si bzip2 se demora 30 segundos, pbzip2 demora 15. Por ejemplo, con un archivo de texto (el típico dump sql) de tamaño 137Mb:<br />
<code>$ time bzip2 poc.sql </p>
<p>real	0m33.010s<br />
user	0m32.788s<br />
sys	0m0.147s</code></p>
<p>Y con pbzip2:<br />
<code>$ time pbzip2 poc.sql </p>
<p>real	0m19.827s<br />
user	0m36.868s<br />
sys	0m0.960s</code></p>
<p><span id="more-2331"></span></p>
<p>Parallel-bzip2 se encuentra oficialmente en la mayoría de los repositorios, por ejemplo en:<br />
- <a href="http://packages.debian.org/squeeze/pbzip2">Debian</a><br />
- <a href="http://www.archlinux.org/packages/community/i686/pbzip2/">Archlinux</a><br />
- <a href="http://software.opensuse.org/search?q=pbzip2&#038;baseproject=openSUSE%3A11.4&#038;lang=en&#038;exclude_debug=true">OpenSuSe</a></p>
<p>El software se instala y se usa identico al bzip2 normal.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/"  data-text="[Tip] bzip2 vs pbzip2: Comprimir con bzip2 en forma paralela" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-bzip2-vs-pbzip2-comprimir-con-bzip2-en-forma-paralela/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Joomla! Password Cracker</title>
		<link>http://blog.zerial.org/seguridad/joomla-password-cracker/</link>
		<comments>http://blog.zerial.org/seguridad/joomla-password-cracker/#comments</comments>
		<pubDate>Thu, 19 May 2011 15:03:25 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[cracker]]></category>
		<category><![CDATA[cracking]]></category>
		<category><![CDATA[john]]></category>
		<category><![CDATA[john the ripper]]></category>
		<category><![CDATA[joomla]]></category>
		<category><![CDATA[joomla cracker]]></category>
		<category><![CDATA[joomla password cracker]]></category>
		<category><![CDATA[password cracker]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[utilidades]]></category>
		<category><![CDATA[utils]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2282</guid>
		<description><![CDATA[Saber como &#8220;hashea&#8221; las password el cms Joomla! no es algo muy complicado, no tiene ninguna ciencia y es muy facil de entender para intentar crackear algun password obtenido de alguna base de datos. El hash en la base de datos tiene la forma de &#8220;HASH:SALT&#8221; y la forma en que genera el HASH es [...]]]></description>
			<content:encoded><![CDATA[<p>Saber como &#8220;<em>hashea</em>&#8221; las password el cms Joomla! no es algo muy complicado, no tiene ninguna ciencia y es muy facil de entender para intentar crackear algun password obtenido de alguna base de datos.<br />
El hash en la base de datos tiene la forma de &#8220;HASH:SALT&#8221; y la forma en que genera el HASH es agregando el SALT al final de la password original, de esta forma: <strong>md5(password.SALT):SALT</strong><br />
Por ejemplo, si tenemos la password &#8220;foo&#8221; y el SALT &#8220;bar&#8221;, la forma de crear el hash sería:<strong>md5(foobar):bar</strong><br />
Lo que quedaría como <strong>3858f62230ac3c915f300c664312c63f:bar</strong></p>
<p>Por ejemplo, para probar con un hash mas real probaremos con  <strong>bd874661cb31eb7b612862725d0008f2:5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel</strong> que corresponde a la password &#8220;test&#8221; concatenada con el SALT 5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel:</p>
<p><strong>md5(testbd874661cb31eb7b612862725d0008f2:5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel) = bd874661cb31eb7b612862725d0008f2</strong></p>
<p>Entonces, la forma de crackear usando por ejemplo un diccionario seria tan facil como &#8220;parsear&#8221; el SALT, concatenarlo a la palabra del diccionario, calcular su md5 y compararla con el valor que está antes de los &#8220;:&#8221; del hash. Para esto, hice el siguiente script en Python:</p>
<pre name="code" class="c">#!/usr/bin/python2

from hashlib import md5
import sys
import string

original = sys.argv[1].split(':')
_md5 = original[0]
_salt = original[1]
print 'Trying to crack ' + _md5 + ' SALTED with ' + _salt + '... '
for line in sys.stdin:
	line = line.strip()
	attempt = md5(line + _salt).hexdigest()
	if(attempt == _md5):
		print _md5 + ':' + _salt + ' --- Password Found: ' + line
		print 'Hapy hacking!'
		sys.exit(0)
print 'Password not found : - ('
sys.exit(1)</pre>
<p>Intenemos crackear el hash correspondiente a la password &#8220;test&#8221;:</p>
<p><code>$ ./john -i --stdout|python2 joomla-cracker.py bd874661cb31eb7b612862725d0008f2:5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel</p>
<p>Trying to crack bd874661cb31eb7b612862725d0008f2 SALTED with 5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel...<br />
bd874661cb31eb7b612862725d0008f2:5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel<br />
--- Password Found: test<br />
Hapy hacking!<br />
$ </code></p>
<p>En este caso use &#8220;john the ripper&#8221; para generar un diccionario en el stdout pasandolo por stdin al script. Tambien se pueden usar diccionarios de la siguiente forma:</p>
<p><code>$ cat diccionario.txt|python2 joomla-cracker.py bd874661cb31eb7b612862725d0008f2:5LCuch6GA3Du5c3ywjxzlfPvXvvHZQel</code></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Fjoomla-password-cracker%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/joomla-password-cracker/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/joomla-password-cracker/"  data-text="Joomla! Password Cracker" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/joomla-password-cracker/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tip: Destrucción de archivos y datos en GNU/Linux</title>
		<link>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/</link>
		<comments>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/#comments</comments>
		<pubDate>Sun, 01 May 2011 20:03:22 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[destruccion]]></category>
		<category><![CDATA[eliminacion]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[shred]]></category>
		<category><![CDATA[wipe]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2108</guid>
		<description><![CDATA[Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: dd, shred y wipe. La primera, nos ayudará a zero-izar un sector de nuestro disco [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-2207" style="margin: 3px;" title="data-loss" src="http://blog.zerial.org/wp-content/uploads/2011/05/data-loss.jpg" alt="" width="107" height="108" />Cuando digo &#8220;destrucción&#8221; de información no me refiero a simpemente eliminarla o purgarla del disco duro, sino a sobrescribirla y hacer imposible su restauración. Existen varias utilidades y formas de hacerlo, pero yo les mostraré tres utilidades/herramientas que nos ayudarán: <strong>dd</strong>, <strong>shred</strong> y <strong>wipe</strong>. La primera, nos ayudará a zero-izar un sector de nuestro disco duro, memoria o lo que sea. Las otras dos son herramientas que nos permitiran sobreescribir y eliminar definitivamente un archivo para que sea irrecuperable. <strong>shred</strong> viene por defecto en <em>casi</em> todas las distribuciones unixlike, <strong>wipe</strong> se puede instalar en cualquiera.</p>
<p>Según los <em>manpages</em>,</p>
<blockquote><p><strong>wipe:</strong><br />
Wipe  is  a  secure file wiping utility. There are some low level issues that must be taken into consideration. One of these is that there must be some sort of write barrier between passes. Wipe uses fdatasync(2) (or fsync(2)) as a write barrier, or if fsync(2) isn&#8217;t available, the file is opened with the O_DSYNC or O_SYNC flag. For wipe to be effective, each pass must be completely  written.  To ensure this, the drive must support some form of a write barrier, write cache flush, or write cache disabling. SCSI supports ordered command tags, has a force media access bit for commands, and write cache can be disable on mode page 8. IDE/ATA drives support write cache flushes and write cache disabling. Unfortunetly, not all drives actually disable write cache when asked to.  Those  drives  are broken. Write caching should always be disabled, unless your system is battery backed and always powers down cleanly.</p></blockquote>
<blockquote><p><strong>shred:</strong><br />
Overwrite the specified FILE(s) repeatedly, in order to make it harder for even very expensive hardware probing to recover the data.</p></blockquote>
<blockquote><p><strong>dd: </strong><br />
Copy a file, converting and formatting according to the operands</p></blockquote>
<p>Vamos a lo practico.</p>
<p><span id="more-2108"></span></p>
<h3>dd</h3>
<p>Nos servirá cuando queramos eliminar información de un sector del disco, partición o disco completo, llenandolo de <em>zeros</em>. Es muy simple, basta con ejecutar:<br />
<code># dd if=/dev/zero of=/dev/sda</code><br />
En este caso, llenaremos de <em>zeros</em> el disco <strong>sda</strong>, eliminando el mbr, tabla de particiones, data, etc. Tambien podemos aplicarlo a una partición especifica<br />
<code># dd if=/dev/zero of=/dev/sdb1</code><br />
O bien a un archivo,<br />
<code># dd if=/dev/zero of=my_file.iso</code><br />
Podemos jugar con los parametros <strong>bs</strong>, <strong>count</strong>, <strong>seek</strong>, etc.</p>
<h3>wipe &#038; shred</h3>
<p>La ejecución de estas dos herramientas es sencilla, basta con ejecutar el comando y luego el nombre del archivo:<br />
<code># shred file.jpg</code><br />
o<br />
<code># wipe file.jpg</code></p>
<p>Ambos comando son bien personalizables, puedes decirle que al terminar lo complete con zeros, que los elimina, que los sobre escriba una cantidad X de veces y luego lo elimine, o que no lo elimine, etc.</p>
<p>Para más detalles recomiendo leer el manpage de cada uno.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ftip-destruccion-de-archivos-y-datos-en-gnulinux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/"  data-text="Tip: Destrucción de archivos y datos en GNU/Linux" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/tip-destruccion-de-archivos-y-datos-en-gnulinux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tip: Mantener sesiones ssh activas con autossh</title>
		<link>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/</link>
		<comments>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/#comments</comments>
		<pubDate>Mon, 07 Mar 2011 14:25:04 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[autossh]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[gnu]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tuneles]]></category>
		<category><![CDATA[tunneling]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2116</guid>
		<description><![CDATA[autossh (1) &#8211; monitor and restart ssh sessions Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los tuneles que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse. Lo ideal es trabajar con llaves [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>autossh (1)          &#8211; monitor and restart ssh sessions</p></blockquote>
<p>Esta herramienta es muy util cuando queremos mantener las sesiones activas y mantener los <a href="http://blog.zerial.org/seguridad/ssh-port-forwarding-y-tunneling-saltarse-las-restricciones-del-firewall/">tuneles</a> que hemos hecho con ssh. En simples palabras lo que hace este programita es monitorear la sesión y cuando se pierde la conexion, vuelve a conectarse.<br />
Lo ideal es trabajar con llaves públicas/privadas para autenticarse con el servidor, para que al intentar restablecer la conexion no pida la contraseña. Le pasamos a &#8220;autossh&#8221; los mismos parámetros que a ssh, por ejemplo:<br />
<code>autossh -L5022:10.0.0.11:22 -L5023:10.0.0.15:22 -L5024:10.0.0.20:22 10.0.0.1</code><br />
Para hacer un <em>bind</em> de puertos locales a distintas maquinas remotas. O<br />
<code>autossh -R2200:localhost:22 example.com</code><br />
Para hacer <em>bind</em> de puertos remotos hacia nuestra maquina local.</p>
<p>Link: <a href="http://www.harding.motd.ca/autossh/">http://www.harding.motd.ca/autossh/</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-mantener-sesiones-ssh-activas-con-autossh%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/"  data-text="Tip: Mantener sesiones ssh activas con autossh" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-mantener-sesiones-ssh-activas-con-autossh/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Tethering con un BlackBerry 8520 en Archlinux via bluetooth</title>
		<link>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/</link>
		<comments>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 17:09:10 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[3g]]></category>
		<category><![CDATA[archlinux]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[howto]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[movil]]></category>
		<category><![CDATA[tethering]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2058</guid>
		<description><![CDATA[Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;Dial Up&#8220;. Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo [...]]]></description>
			<content:encoded><![CDATA[<p>Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte &#8220;<em>Dial Up</em>&#8220;.<br />
Debemos tener instaladas las herramientas de bluetooth: <strong>bluez-utils bluez-libs dbus wvdial</strong></p>
<p>Primero, debemos poner el bluetooth del teléfono en modo <em>escucha</em> y escanearlo con nuestro disponisitivo, para ver si soporte el modo.</p>
<p><code>[root@balcebu zerial]# hcitool scan<br />
Scanning ...<br />
        F4:0B:93:DB:90:FF       BlackBerry 8520<br />
[root@balcebu zerial]#</code></p>
<p>Y vemos si soporta el modo <em>Dial Up</em></p>
<p><code>root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF<br />
Browsing F4:0B:93:DB:90:FF ...<br />
[...]<br />
Service Name: Dialup Networking<br />
Service RecHandle: 0x10000<br />
Service Class ID List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
  "Generic Networking" (0x1201)<br />
Protocol Descriptor List:<br />
  "L2CAP" (0x0100)<br />
  "RFCOMM" (0x0003)<br />
<strong>    Channel: 1</strong><br />
Profile Descriptor List:<br />
  "<strong>Dialup Networking</strong>" (0x1103)<br />
    Version: 0x0100<br />
[...]</code></p>
<p>En este caso soporta, en el canal 1.</p>
<p><span id="more-2058"></span></p>
<p>Hay que configurar el archivo /etc/bluetooth/rfcomm.conf</p>
<pre name="code" class="c">#
# RFCOMM configuration file.
#

rfcomm0 {
#       # Automatically bind the device at startup
        bind yes;
#
#       # Bluetooth address of the device
        device F4:0B:93:DB:90:FF;
#
#       # RFCOMM channel for the connection
        channel 1;
#
#       # Description of the connection
        comment "BlackBerry 8520";
}</pre>
<p>&#8220;device&#8221; corresponde a la MAC encontrada al hacer el scan, es decir, la de nuestro dispositivo movil y Channel, el canal en el cual está soportado el &#8220;Dial Up&#8221;.</p>
<p>Luego ejecutamos <strong>hidd &#8211;connect F4:0B:93:DB:90:FF</strong> y <strong>rfcomm connect 0</strong> para establecer la conexion con el telefono.</p>
<p><code>[root@balcebu bluetooth]# hidd --connect F4:0B:93:DB:90:FF<br />
[root@balcebu bluetooth]# rfcomm connect 0<br />
Connected /dev/rfcomm0 to F4:0B:93:DB:90:FF on channel 1<br />
Press CTRL-C for hangup</code></p>
<p>En el telefono debería aparecer la opción de &#8220;emparejamiento&#8221;. Ahora debemos configurar <strong>wvdial</strong>, editamos el archivo <strong>/etc/wvdial.conf</strong> y agregamos:</p>
<pre name="code" class="c">[Dialer blackberry]
Modem = /dev/rfcomm0
Baud = 115200
Dial Command = ATDT
Init2 = AT+CGDCONT=1,"IP","imovil.entelpcs.cl"
FlowControl = crtscts
Modem Type = Analog Modem
Username = entelpcs
Password = entelpcs
Stupid Mode = 1
New PPPD = yes
Phone = *99#</pre>
<p>En este caso, estoy conectado con el operador &#8220;entelpcs&#8221; y los datos corresponden a ésta compañía, en el caso de pertenecer a otro proveedor, deben camiar los datos&#8221; Init2, Username y Password por los que correspondan.<br />
Una vez añadida la configuración al archivo, ejecutamos</p>
<p><code># wvdial blackberry<br />
--&gt; WvDial: Internet dialer version 1.61<br />
--&gt; Cannot get information for serial port.<br />
--&gt; Initializing modem.<br />
--&gt; Sending: ATZ<br />
ATZ<br />
OK<br />
--&gt; Sending: AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
AT+CGDCONT=1,"IP","imovil.entelpcs.cl"<br />
OK<br />
--&gt; Modem initialized.<br />
--&gt; Sending: ATDT*99#<br />
--&gt; Waiting for carrier.<br />
ATDT*99#<br />
CONNECT<br />
--&gt; Carrier detected.  Starting PPP immediately.<br />
--&gt; Starting pppd at Wed Jan  5 09:52:13 2011<br />
--&gt; Pid of pppd: 24392<br />
--&gt; Using interface ppp0<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; local  IP address 186.10.247.119<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; remote IP address 169.254.1.1<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; primary   DNS address 200.63.56.3<br />
--&gt; pppd: Ð¶·¸[12][10]<br />
--&gt; secondary DNS address 200.63.56.4<br />
--&gt; pppd: Ð¶·¸[12][10] </code></p>
<p>Listo, el proveedor ya me asignó una ip publica y puedo navegar a traves de mi celular.</p>
<p>Referencias:</p>
<p>Bluetooth GPRS Howto: <a href="https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto">https://wiki.archlinux.org/index.php/Bluetooth_GPRS_Howto</a><br />
Configurando un Blackberry como Modem en Debian: <a href="http://apostols.net/?p=176">http://apostols.net/?p=176</a><br />
Guía Bluetooth de Gentoo Linux: <a href="http://www.gentoo.org/doc/es/bluetooth-guide.xml">http://www.gentoo.org/doc/es/bluetooth-guide.xml</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fthethering-bluetooth-usar-como-modem-telefono-gnu-linux%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/"  data-text="Tethering con un BlackBerry 8520 en Archlinux via bluetooth" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/thethering-bluetooth-usar-como-modem-telefono-gnu-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>[Tip] AND (&amp;&amp;) y OR (&#124;&#124;) en bash</title>
		<link>http://blog.zerial.org/linux/tip-and-y-or-en-bash/</link>
		<comments>http://blog.zerial.org/linux/tip-and-y-or-en-bash/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 01:24:05 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=2021</guid>
		<description><![CDATA[Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos &#38;&#38; y &#124;&#124; al momento de crear scripts o ejecutar comandos en bash. Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si [...]]]></description>
			<content:encoded><![CDATA[<p>Parece algo muy simple, pero estoy seguro que muchos no lo saben: Usar los operadores lógicos <strong>&amp;&amp;</strong> y <strong>||</strong> al momento de crear scripts o ejecutar comandos en bash.<br />
Podemos condicionar la ejecución de un comando en función de otro; por ejemplo, si falla el primer comando, entonces no ejecuto el segundo, o bien, si no se ejecuta el primero entonces ejecuto el segundo, dependiendo de lo que necesitemos.<br />
Ejemplos:</p>
<p>Ejecutar el comando2 solo si se ejecuta el comando1:<br />
<code>$ comando1 &amp;&amp; comando2</code></p>
<p>Ejecutar el comando2 solo si <strong>no</strong> se ejecuta el primero<br />
<code>$ comando1 || comando2</code></p>
<p>Sería así:<br />
<code>[zerial@balcebu ~]$ comando1 || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
bash: comando1: command not found<br />
Como comando1 no existe, entonces ejecuto el echo<br />
[zerial@balcebu ~]$ echo "El primer echo se ejecuta, pero el segnudo no" || echo "Como comando1 no existe, entonces ejecuto el echo"<br />
El primer echo se ejecuta, pero el segnudo no<br />
[zerial@balcebu ~]$ </code></p>
<p>Es muy útil cuando queremos programar scripts para ejecutar tareas condicionadas a otros comandos.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-and-y-or-en-bash%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-and-y-or-en-bash/"  data-text="[Tip] AND (&#038;&#038;) y OR (||) en bash" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-and-y-or-en-bash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Filtrar inyecciones SQL y XSS con Mod_Rewrite en Apache</title>
		<link>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/</link>
		<comments>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 17:47:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Seguridad]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mod_rewrite]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1909</guid>
		<description><![CDATA[Revisando un servidor me encontré con la siguientes reglas para el módulo ModRewrite de apache, que nos ayudan a filtrar las URLs potencialmente maliciosas. Este codigo nos va a ayudar a proteger el servidor de las aplicaciones que tengan fallas de seguridad. RewriteEngine On  ########## Begin - Rewrite rules to block out some common exploits [...]]]></description>
			<content:encoded><![CDATA[<p>Revisando un servidor me encontré con la siguientes reglas para el módulo ModRewrite de apache, que nos ayudan a filtrar las URLs potencialmente maliciosas. Este codigo nos va a ayudar a proteger el servidor de las aplicaciones que tengan fallas de seguridad.</p>
<pre>RewriteEngine On 
########## Begin - Rewrite rules to block out some common exploits
        #
        # Block out any script trying to set a mosConfig value through the URL
        RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
        # Block out any script trying to base64_encode crap to send via URL
        RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]
        # Block out any script that includes a &lt;script&gt; tag in URL
        RewriteCond %{QUERY_STRING} (\&lt;|%3C).*script.*(\&gt;|%3E) [NC,OR]
        # Block out any script trying to set a PHP GLOBALS variable via URL
        RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
        # Block out any script trying to modify a _REQUEST variable via URL
        RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
        # Send all blocked request to homepage with 403 Forbidden error!
        RewriteRule ^(.*)$ index.php [F,L]
######### End - Rewrite rules to block out some common exploits</pre>
<p>Nos protegerá de ataques XSS y SQL Injection. Este script podría afectar el funcionamiento de algunas aplicaciones.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Fseguridad%2Ffiltrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/"  data-text="Filtrar inyecciones SQL y XSS con Mod_Rewrite en Apache" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/seguridad/filtrar-inyecciones-sql-y-xss-con-mod_rewrite-en-apache/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>[Tip] Limitar el uso de ancho de banda con Trickle</title>
		<link>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/</link>
		<comments>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 14:01:38 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[aplicaciones]]></category>
		<category><![CDATA[bandwidth]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[herramientas]]></category>
		<category><![CDATA[limitar ancho de banda]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[trickle]]></category>
		<category><![CDATA[utilidad]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1876</guid>
		<description><![CDATA[trickle is a portable lightweight userspace bandwidth shaper. It can run in collaborative mode (together with trickled) or in stand alone mode. Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong><a href="http://monkey.org/~marius/pages/?page=trickle">trickle</a></strong> is a portable lightweight userspace bandwidth shaper. It can run  in collaborative mode (together with <em>trickled</em>) or in stand alone mode.</p></blockquote>
<p>Con esta herramienta podemos limitar la velocidad de subida y bajada de cualquier aplicación. Como dice en la descripción, puede trabajar &#8220;solo&#8221; y tambien como demonio. Si ejecutamos el demonio, todas las aplicaciones que se corran usando trickle (sin especificar subida ni bajada) correrán con el límite señalado. Por ejemplo, si corremos el demonio con los parametros:</p>
<p><code>trickled -d 150 -u 20</code><br />
 Establecemos que la velocidad de bajada y subida será de 150 y 20 Kb/s, respectivamente. Desde ahora, todas las aplicaciones corridas con <strong>trickle</strong> tendran esa configuración, por ejemplo:</p>
<p><code>trickle axel http://domain.com/download.tbz2</code><br />
Limitará la bajada a 150kb/s.</p>
<p>Podemos pasarle parametros a trickle directamente, por ejemplo <strong>trickle -d 100 -u 100 wget http://domain.com/file.tbz2</strong>, de esta forma se limitara a wget solo descargar a 100kb/s.</p>
<p>Aunque <strong>wget</strong> tiene la opción <strong>&#8211;limit-rate</strong> que nos permite limitar el RATE, y <strong>&#8211;max-speed</strong> que nos permite limitar la máxima velocidad en <strong>axel</strong>, trickle nos puede servir para limitar el ancho de banda de cualquier aplicación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-limitar-el-uso-de-ancho-de-banda-con-trickle%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/"  data-text="[Tip] Limitar el uso de ancho de banda con Trickle" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-limitar-el-uso-de-ancho-de-banda-con-trickle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip: Ver y modificar los parametros de tu tarjeta de red</title>
		<link>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/</link>
		<comments>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 17:42:14 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ethtool]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[mii-tool]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[red]]></category>
		<category><![CDATA[tip]]></category>
		<category><![CDATA[tool]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1818</guid>
		<description><![CDATA[Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas mii-tool y ethtool, aunque la primera herramienta está obsoleta (deprecated), aún sirve para sistemas con instalaciones antiguas. mii-tool &#8211; view, manipulate media-independent interface status ethtool &#8211; Display or change ethernet card settings Para modificar la velocidad de transferencia [...]]]></description>
			<content:encoded><![CDATA[<p>Para ver y modificar los parametros de configuración de tu tarjeta de red puedes usar las herramientas <strong>mii-tool</strong> y <strong>ethtool</strong>, aunque la primera herramienta está obsoleta (<em>deprecated</em>), aún sirve para sistemas con instalaciones antiguas.</p>
<blockquote><p><strong>mii-tool</strong> &#8211; view, manipulate media-independent interface status<br />
<strong>ethtool</strong> &#8211; Display or change ethernet card settings</p></blockquote>
<p>Para modificar la velocidad de transferencia de las tarjetas usamos el siguiente comando:</p>
<p><code>ethtool eth1 speed 1000 duplex full</code></p>
<p>Para dejarla a 1Gbps full duplex. Podemos setear la tarjeta a 10, 100 o 1000mbps según su capacidad, tambien  decirle si es <em>half</em> o <em>full</em> duplex, activar y desactivar la autonegociación, modiicar el tamaño de los Jumbo Frames, etc.</p>
<p>Para conocer la configuración actual de la tarjeta de red sólo debemos ejecutar <strong>ethtool</strong> y especificarle el dispositivo:</p>
<p><img class="aligncenter size-full wp-image-1821" title="ethtool_ss" src="http://blog.zerial.org/wp-content/uploads/2010/08/ethtool_ss.png" alt="" width="400" height="459" /></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Ftip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/"  data-text="Tip: Ver y modificar los parametros de tu tarjeta de red" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/tip-ver-y-modificar-los-parametros-de-tu-tarjeta-de-red/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>DPMS y ScreenBlanking: Controlar el ahorro de energía de la pantalla</title>
		<link>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/</link>
		<comments>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 18:13:34 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ayuda]]></category>
		<category><![CDATA[dpms]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[screenblanking]]></category>
		<category><![CDATA[x]]></category>
		<category><![CDATA[xorg]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1795</guid>
		<description><![CDATA[Despues de una actualización, magicamente, cuando veia alguna película en mi portatil despues de 10 minutos se iba a negro y se apagaba la pantalla. Es un comportamiento normal si pensamos en que el laptop estaba inactivo, pero no me sucedía cuando dejaba corriendo VLC o mplayer. Ultimamente comenzó a suceder &#8230; entonces pensé inmediatamente [...]]]></description>
			<content:encoded><![CDATA[<p>Despues de una actualización, magicamente, cuando veia alguna película en mi portatil despues de 10 minutos se iba a negro y se apagaba la pantalla. Es un comportamiento normal si pensamos en que el laptop estaba inactivo, pero no me sucedía cuando dejaba corriendo VLC o mplayer. Ultimamente comenzó a suceder &#8230; entonces pensé inmediatamente que era la opción DPMS de la X.</p>
<p>Probé poniendo la opción <strong>Options &#8220;DPMS&#8221; &#8220;false&#8221;</strong>, configurando la X usando <strong>xset</strong> para desactivar la opción de ahorro de energia y tambien probé con <strong>vbetool</strong>, pero ninguna me dio resultado.</p>
<p>Buscando y buscando, encontré que existen dos opciones: <strong>DPMS</strong> y <strong>ScreenBlanking</strong>.</p>
<p><strong>ScreenBlanking: </strong>Es un &#8220;apagado de pantalla/monitor&#8221; de mentira, hace que la pantalla se &#8220;apague&#8221; y se ponga negra, pero realmente sigue prendida, por lo que solamente le baja el brillo. Por defecto está <em>seteado</em> en 10 minutos.</p>
<p><strong>DPMS:</strong> Esta es una función real del manejo de energia para las pantallas. Por defecto pasa a un estado &#8220;StandBy&#8221; luego de 20 minutos, &#8220;Suspend&#8221; luego de 30 minutos y &#8220;Off&#8221; luego de 40.</p>
<p>Para manejar las configurar los parametros de estas opciones podemos hacerlo mediante la configuración de la X o usando xset.</p>
<p><span id="more-1795"></span></p>
<p>Si ejecutamos <strong>xset -q</strong> podemos ver la configuración actual:</p>
<blockquote><p>Keyboard Control:<br />
auto repeat:  on    key click percent:  0    LED mask:  00000000<br />
XKB indicators:<br />
00: Caps Lock:   off    01: Num Lock:    off    02: Scroll Lock: off<br />
03: Compose:     off    04: Kana:        off    05: Sleep:       off<br />
06: Suspend:     off    07: Mute:        off    08: Misc:        off<br />
09: Mail:        off    10: Charging:    off    11: Shift Lock:  off<br />
12: Group 2:     off    13: Mouse Keys:  off<br />
auto repeat delay:  660    repeat rate:  25<br />
auto repeating keys:  00ffffffdffffbbf<br />
fadfffefffedffff<br />
9fffffffffffffff<br />
fff7ffffffffffff<br />
bell percent:  50    bell pitch:  400    bell duration:  100<br />
Pointer Control:<br />
acceleration:  2/1    threshold:  4<br />
<strong>Screen Saver:<br />
prefer blanking:  yes    allow exposures:  yes<br />
timeout:  0    cycle:  600</strong><br />
Colors:<br />
default colormap:  0&#215;20    BlackPixel:  0    WhitePixel:  16777215<br />
Font Path:<br />
/usr/share/fonts/misc,/usr/share/fonts/100dpi:unscaled,/usr/share/fonts/75dpi:unscaled,/usr/share/fonts/TTF,/usr/share/fonts/Type1,/usr/share/fonts/misc/,/usr/share/fonts/TTF/,/usr/share/fonts/Type1/,/usr/share/fonts/100dpi/,/usr/share/fonts/75dpi/,built-ins<br />
<strong>DPMS (Energy Star):<br />
Standby: 600    Suspend: 600    Off: 600<br />
DPMS is Disabled</strong><br />
Font cache:<br />
Server does not have the FontCache Extension</p></blockquote>
<p>Fijarse en la sección &#8220;DPMS&#8221;, aparecen tres valores, standby, suspend, off que estan seteados en 600 segundos, es decir, 10 minutos. Para configurar estos valores debemos hacer lo siguiente:</p>
<p><code>xset dpms 300 600 900</code><br />
El primer número corresponde a Standby, el segundo a Suspend y el tercero a Off. Para desactivarlo podemos dejarlo en cero:<br />
<code>xset dpms 0 0 0</code><br />
Tambien podemos desactivar directamente el DPMS con<br />
<code>xset -dpms</code><br />
Y para activarlo cambiamos el signo menos (-) por un signo mas: +</p>
<p>Si desactivamos DPMS veremos que seguirá apagandose el monitor, pues debemos desactivar (o aumentar el valor) de ScreenBlanking.</p>
<p><code>xset s 0</code><br />
Seteamos el valor a 0 (desactivado).</p>
<p>Para más información les recomiendo el siguiente link (fue el que me ayudó a mi):</p>
<p><a href="http://www.shallowsky.com/linux/x-screen-blanking.html">http://www.shallowsky.com/linux/x-screen-blanking.html</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fdpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/"  data-text="DPMS y ScreenBlanking: Controlar el ahorro de energía de la pantalla" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/dpms-y-screenblanking-controlar-el-ahorro-de-energia-de-la-pantalla/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Creación de passwords aleatorias con /dev/urandom</title>
		<link>http://blog.zerial.org/linux/creacion-de-passwords-aleatorias-con-devurandom/</link>
		<comments>http://blog.zerial.org/linux/creacion-de-passwords-aleatorias-con-devurandom/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 14:34:02 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[password]]></category>
		<category><![CDATA[password aleatoria]]></category>
		<category><![CDATA[password segura]]></category>
		<category><![CDATA[passwords]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1762</guid>
		<description><![CDATA[/dev/random es un archivo especial que sirve como un generador de números aleatorios, o un generador de números seudo-aleatorios. Permite el acceso a ruido ambiental recogido de dispositivos y otras fuentes [...] /dev/urandom que reutiliza la fuente interna para producir más bits seudoaleatorios. Esto implica que llamadas de lectura nunca se bloquearán, pero la salida [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-1763" title="random" src="http://blog.zerial.org/wp-content/uploads/2010/06/random.png" alt="" width="472" height="123" /></p>
<blockquote><p><strong><tt>/dev/random</tt></strong> es un archivo especial que sirve como un  generador de números aleatorios, o un generador de números  seudo-aleatorios. Permite el acceso a ruido ambiental recogido de  dispositivos y otras fuentes [...] <strong>/dev/urandom</strong> que reutiliza la fuente interna para producir más bits seudoaleatorios. Esto implica que llamadas de lectura nunca se bloquearán, pero la salida puede contener menos entropía que una lectura de /dev/random. La intención es servir como un generador de números seudoaleatorios criptográficamente seguro. Éste puede ser utilizado en aplicaciones que no necesiten de tanta seguridad. (<a href="http://es.wikipedia.org/wiki//dev/random">Wikipedia</a>)</p></blockquote>
<p>Para generar password aleatorias usaremos una combinación de los comandos <strong>tr</strong> y <strong>head</strong>, para poder hacer legible para humanos los bits aleatorios que nos entregará <em>urandom</em>.</p>
<p><span id="more-1762"></span></p>
<p>Si hacemos un <strong>cat</strong> directamente a <strong>/dev/urandom</strong> solamente vamos a ver caracteres raros</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_raw_output.png"><img class="aligncenter size-full wp-image-1768" title="urandom_raw_output" src="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_raw_output.png" alt="" width="546" height="188" /></a></p>
<p>Para &#8220;traducir&#8221; estos bits aleatorios a caracteres legibles por nosotros usaremos <strong>tr</strong>anslate.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_tr_az.png"><img class="aligncenter size-full wp-image-1770" title="urandom_tr_az" src="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_tr_az.png" alt="" width="541" height="167" /></a></p>
<p>De esta forma, le decimos a <strong>tr</strong> que nos interprete los bits en caracteres de la A a la Z (mayúscula). Podemos jugar con el juego de caracteres que queremos obtener, por ejemplo decirle que me muestre letras de la a-z y A-Z</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_tr_azaz.png"><img class="aligncenter size-full wp-image-1771" title="urandom_tr_azaz" src="http://blog.zerial.org/wp-content/uploads/2010/06/urandom_tr_azaz.png" alt="" width="535" height="124" /></a></p>
<p>Tambien podemos decirle que nos muestre números y caracteres como guión o guión bajo. El comando final quedaria de la siguiente forma:</p>
<p><code>tr -dc A-Za-z0-9_ &lt; /dev/urandom | head -c 8</code></p>
<p>Con <em>head -c 8</em> le diremos que nos muestre solo los primeros 8 caracteres. Podemos cambiar su valor si deseamos caracteres de mayor o menor longitud. Al final de la linea podemos agregarle un <em> &#038;&#038; echo &#8220;&#8221;</em>  para que nos muestre un salto de linea al final.</p>
<blockquote><p>[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
Z2_gaCcE<br />
[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
Tob68gN0<br />
[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
boEzFU3O<br />
[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
EFfcRcuf<br />
[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
cTY330uO<br />
[zerial@balcebu ~]$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 &#038;&#038; echo<br />
l3UnaDPo<br />
[zerial@balcebu ~]$ </p></blockquote>
<p>O una forma más elegante:</p>
<p><strong>$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs</strong></strong></p></blockquote>
<p></code></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fcreacion-de-passwords-aleatorias-con-devurandom%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/creacion-de-passwords-aleatorias-con-devurandom/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/creacion-de-passwords-aleatorias-con-devurandom/"  data-text="Creación de passwords aleatorias con /dev/urandom" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/creacion-de-passwords-aleatorias-con-devurandom/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Imagenes y snapshots: Respaldo de servidores</title>
		<link>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/</link>
		<comments>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 13:15:02 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[automatizacion]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[gnu/linux]]></category>
		<category><![CDATA[lvm]]></category>
		<category><![CDATA[nfs]]></category>
		<category><![CDATA[respaldos]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[snapshots]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1563</guid>
		<description><![CDATA[Mi propósito era crear imágenes de todos los servidores del datacenter para que, en caso de cualquier contingencia, levantar un nuevo servidor identico simplemente traspasando la imágen de respaldo hacia ese servidor. Los sistemas estaban instalados usando volumenes lógicos (LVM) por lo que sería mucho más fácil crear imágenes y snapshots de respaldos. En un [...]]]></description>
			<content:encoded><![CDATA[<p>Mi propósito era crear imágenes de todos los servidores del datacenter para que, en caso de cualquier contingencia, levantar un nuevo servidor identico simplemente traspasando la imágen de respaldo hacia ese servidor. Los sistemas estaban instalados usando volumenes lógicos (LVM) por lo que sería mucho más fácil crear imágenes y snapshots de respaldos. En un prinicpio pensé hacer directamente <strong>dd</strong> sobre los volumenes lógicos pero la imágen se corrompía y en muchos casos no podía volver a recuperarla. Existe la posibilidad de montar el volumen lógico en un directorio y respaldar, usando tar, bzip y esas cosas, sólo los archivos, pero no era mi propósito, ya que para restaurar solamente los archivos, debía tener una partición ya preparada, con el sistma de ficheros, sistema instalado, etc etc. En cambio, con la imágen simplemente hacia un <strong>dd</strong> para restaurarla, sin tener el sistema de archivos creado, etc.</p>
<p>Por twitter me recomendaron varias opciones. <a href="http://twitter.com/apostols">@Apostols</a> me recomendó las herramientas &#8220;puppet&#8221; y &#8220;rlbackup&#8221;, mientras que <a href="http://twitter.com/ssugasti">@ssugasti</a> &#8220;mondorescue&#8221;, pero yo seguia con mi idea de usar directamente &#8220;dd&#8221;. Debía hacer el mismo procedimiento en mas de 40 servidores, por lo que usar una aplicación &#8220;cliente->servidor&#8221; no era mi solución. Usar aplicaciones que requieran modo grafico o que requieran mucha interacción con el usuario tampoco me servian, yo necesitaba algo automatizado que pueda dejar corriendo de noche y volver al otro día y encontrar el trabajo hecho.</p>
<p><span id="more-1563"></span></p>
<p>Leyendo el manual de LVM, especialmente el de <strong>lvcreate</strong>, encontré la opción &#8220;<strong>snapshot</strong>&#8221; que básicamente le toma una &#8220;foto&#8221; al volumen lógico de origen y crea un nuevo volumen con ese preciso instante en que se hizo el snapshot, de ésta forma la partición original podrá ser actualizara mientras que el snapshot se respalda sin problemas. Luego de eso, el snapshot se elimina y se guarda la imágen. La rutína sería mas o menos asi:</p>
<p><code># lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k<br />
# dd if=/dev/Vol00/var-snap of=/backup/var.img<br />
# lvremove -f /dev/Vol00/var-snap </code></p>
<p>De esta forma, creamos un snapshot llamado &#8220;var-snap&#8221; en base a la partición (o volumen) /dev/Vol00/var, luego, usando dd, creamos la imágen de dicha partición y la guardamos en /backup. Finalmente eliminamos el snapshot.<br />
Para tener aún más certesa de que todo funcionaría, tambien decidí empaquetar, comprimir y guardar los ficheros, por lo que antes de eliminarla (lvremove) la debo montar y hacer un tar. La rutina quedaría así:</p>
<p><code># lvcreate --snapshot /dev/Vol00/var --name var-snap -L100k<br />
# dd if=/dev/Vol00/var-snap of=/backup/var.img<br />
# mount /dev/Vol00/var-snap /mnt<br />
# tar cfjv /bakcup/var.tbz2 /mnt<br />
# umount /mnt<br />
# lvremove -f /dev/Vol00/var-snap </code></p>
<p>En mi caso, /backup corresponde a un punto de montaje de red NFS.<br />
Mi misión era realizar ésta misma rutina en más de 40 servidores, por lo que necesitaba hacer un script que se paseara por todos los servidores y ejecutara estos comandos.</p>
<pre name="code" class="c">
#!/bin/bash

IDENTITYFILE=$HOME/.ssh/id_rsa
MACHINES=servidores.list
DATE=$(date +%d%m%Y)
NFS=/mnt/imagenes/servers/
DIR_SNAPSHOT=/mnt/snapshot

for server in $(cat servidores.list);
do
        echo "Respaldando $server ..."
        ssh -i $IDENTITYFILE $server "lvdisplay" >/tmp/lvdisplay_temp
        lvdisplay=$(awk '
                /LV Name/ { name = $3 }
                /VG Name/ { print name","$3 } ' /tmp/lvdisplay_temp)
        for _logicalv in $lvdisplay;
        do
                lvname=$(echo $_logicalv |cut -f1 -d ","|cut -f4 -d "/")
                logicalv=$(echo $_logicalv |cut -f2 -d ",")
                echo -e "\tVolumen Logico: $lvname"
                ssh $server "lvcreate --size 100m --snapshot --name $lvname-snap /dev/$logicalv/$lvname"
                ssh $server "mount /dev/$logicalv/$lvname-snap $DIR_SNAPSHOT"
                ssh $server "mkdir $NFS$server"
                ssh $server "tar cfj $NFS$server/snapshot_$lvname-$DATE.tar.bz2 $DIR_SNAPSHOT"
                ssh $server "umount $DIR_SNAPSHOT"
                ssh $server "dd if=/dev/$logicalv/$lvname-snap of=$NFS$server/image_$lvname-$DATE.img"
                ssh $server "lvremove -f /dev/$logicalv/$lvname-snap"
                echo -e "\tArchivo imagen: $NFS$server/image_$lvname-$DATE.img"
                echo -e "\tArchivo tarball: $NFS$server/snapshot_$lvname-$DATE.tar.bz2"
        done
done
scp /tmp/lvdisplay_temp $server:$NFS$server/lvdisplay
</pre>
<p>El script trabaja con la salida del comando <strong>lvdisplay</strong> que entrega una salida con los detalles de cada volumen lógico. Lee un fichero llamado <em>servidores.list</em> y hace un recorrido línea por línea, conectándose a cada servidor y ejecutando las instrucciones necesarias. Para hacer el proceso más eficiente y automatizado es necesario, previamente, copiar todas las claves públicas a cada servidor, para evitar la autentificación.</p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fimagenes-y-snapshots-respaldo-de-servidores%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/"  data-text="Imagenes y snapshots: Respaldo de servidores" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/imagenes-y-snapshots-respaldo-de-servidores/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Bottom Stack en Dynamic Window Manager (DWM)</title>
		<link>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/</link>
		<comments>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:10:49 +0000</pubDate>
		<dc:creator>Zerial</dc:creator>
				<category><![CDATA[Documentacion]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[dwm]]></category>
		<category><![CDATA[dynamic window manager]]></category>
		<category><![CDATA[gnu/linux]]></category>

		<guid isPermaLink="false">http://blog.zerial.org/?p=1358</guid>
		<description><![CDATA[Hace meses que me decidí por usar DWM y de a poco voy teniendo distintas necesidades, por lo que he ido configurando poco a poco el gestor. Ultimamente, me dieron ganas de querer ordenar las ventanas de forma horizontal y revisando el sitio de DWM he encontrado el llamado &#8220;Bottom Stack&#8221;, que me ayudará a [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1359" style="margin: 4px;" title="dwm" src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm.png" alt="" width="96" height="40" />Hace meses que me decidí por usar DWM y de a poco voy teniendo distintas necesidades, por lo que he ido configurando poco a poco el gestor. Ultimamente, me dieron ganas de querer ordenar las ventanas de forma horizontal y revisando el sitio de DWM he encontrado el llamado &#8220;Bottom Stack&#8221;, que me ayudará a cumplir mi propósito.</p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_ad.png"><img class="aligncenter size-full wp-image-1361" title="dwm_ad" src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_ad.png" alt="" width="519" height="158" /></a></p>
<p>Para lograrlo, simplemente tenemos que agregar un par de líneas al <em>config.h</em> y volver a compilarlo.</p>
<p><span id="more-1358"></span></p>
<p>Debemos descargar los ficheros <a href="http://dwm.suckless.org/patches/bstack.c">bstack.c</a> y <a href="http://dwm.suckless.org/patches/bstackhoriz.c">bstackhoriz.c</a> y agregar las siguientes líneas a nuestro fichero de configuración <em>config.h</em>, despues de la definición de la variable <strong>mfact</strong> y antes de la definición de <strong>layouts</strong>:</p>
<pre name="code" class="c">
#include "bstack.c"
#include "bstackhoriz.c"
</pre>
<p>Y dentro de la definición de <strong>layouts</strong> debemos agregar:</p>
<pre name="code" class="c">
{ "TTT",      bstack },
{ "===",      bstackhoriz },
</pre>
<p>El fichero <em>config.h</em> se debería ver mas o menos así:</p>
<pre name="code" class="c">
[...]

/* layout(s) */
static const float mfact      = 0.55; /* factor of master area size [0.05..0.95] */
static const Bool resizehints = True; /* False means respect size hints in tiled resizals */

#include "bstack.c"
#include "bstackhoriz.c"

static const Layout layouts[] = {
        /* symbol     arrange function */
        { "TTT",      bstack },
        { "[]=",      tile },    /* first entry is default */
        { "><>",      NULL },    /* no layout function means floating behavior */
        { "[M]",      monocle },
        { "===",      bstackhoriz },
};

/* key definitions */
#define MODKEY Mod1Mask
#define TAGKEYS(KEY,TAG) \

[...]
</pre>
<p><strong>Imágenes:</strong></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTILE.png"><img src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTILE-300x187.png" alt="" title="dwm_showTILE" width="300" height="187" class="aligncenter size-medium wp-image-1366" /></a></p>
<p><a href="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTTT.png"><img src="http://blog.zerial.org/wp-content/uploads/2010/01/dwm_showTTT-300x187.png" alt="" title="dwm_showTTT" width="300" height="187" class="aligncenter size-medium wp-image-1367" /></a></p>
<p>Pueden encontrar el artículo original en el siguiente link:<br />
<a target="_blank" href="http://dwm.suckless.org/patches/bottom_stack">http://dwm.suckless.org/patches/bottom_stack</a></p>
<div id="bottomcontainerBox" style="border:1px solid #808080;">
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.zerial.org%2Flinux%2Fbottom-stack-en-dynamic-window-manager-dwm%2F&amp;layout=button_count&amp;show_faces=false&amp;width=85&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width=85px; height:21px;" allowTransparency="true"></iframe></div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<g:plusone size="medium" href="http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/"></g:plusone>
			</div>
			<div style="float:left; width:85px;padding-right:10px; margin:4px 4px 4px 4px;height:30px;">
			<a href="http://twitter.com/share" class="twitter-share-button" data-url="http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/"  data-text="Bottom Stack en Dynamic Window Manager (DWM)" data-count="horizontal" data-via="Zerial">Tweet</a>
			</div>			
			</div><div style="clear:both"></div><div style="padding-bottom:4px;"></div>]]></content:encoded>
			<wfw:commentRss>http://blog.zerial.org/linux/bottom-stack-en-dynamic-window-manager-dwm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

