<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" version="2.0"><channel><atom:id>tag:blogger.com,1999:blog-3568264525762188479</atom:id><lastBuildDate>Thu, 29 Aug 2024 07:43:28 +0000</lastBuildDate><category>howtos_gnu/linux</category><category>howto</category><category>seguridad</category><category>post-it</category><category>gnu/linux</category><category>personal</category><category>debian</category><category>os x</category><category>mis_codigos</category><category>monitorizacion</category><category>python</category><category>programación</category><category>cifrado</category><category>red</category><category>faq</category><category>github</category><category>howtos_os_x</category><category>smartphones</category><category>git</category><category>google</category><category>open_source</category><category>twitter</category><category>7z</category><category>aespipe</category><category>android</category><category>backups</category><category>forense</category><category>grub2</category><category>gtalk</category><category>hacking</category><category>hardening</category><category>internet</category><category>isp</category><category>kopete</category><category>mac</category><category>macbook</category><category>mapa_teclado</category><category>mplayer</category><category>n85</category><category>nokia</category><category>p7zip</category><category>samba</category><category>xfce4</category><category>xmms</category><category>abp</category><category>airport</category><category>alsa</category><category>badblocks</category><category>blog</category><category>bloqueos</category><category>bruteforce</category><category>centericq</category><category>cine/tv</category><category>cleantweetsgood</category><category>cloud</category><category>ctf</category><category>cvs</category><category>diagnostico</category><category>discos_duros</category><category>dns</category><category>dns_leaks</category><category>drive</category><category>eclipse</category><category>esteganografia</category><category>firestarter</category><category>firewall</category><category>gmail</category><category>gnome</category><category>iStats</category><category>iceweasel</category><category>inhibidores</category><category>isight</category><category>kali</category><category>kdm</category><category>lighttpd</category><category>metadatos</category><category>microfono</category><category>mindmap</category><category>motorola</category><category>mtr</category><category>nfs</category><category>ntfs</category><category>nube</category><category>opinión</category><category>optimizacion</category><category>parallels</category><category>pdf</category><category>performance</category><category>php5</category><category>ping</category><category>raspberry</category><category>recovering</category><category>rtmp</category><category>seedbox</category><category>smart</category><category>smartctl</category><category>spam</category><category>sqlite</category><category>ssh</category><category>symbian</category><category>testdisk</category><category>tor</category><category>torrent</category><category>torrentflux-b4rt</category><category>traceroute</category><category>tuning_performance</category><category>vlc</category><category>wifi</category><category>wireshark</category><category>xkeycaps</category><category>xrandr</category><title>rubenhortas@blog:~$</title><description>Que sea paranoico no quiere decir que no me persigan ;)</description><link>http://rubenhortas.blogspot.com/</link><managingEditor>noreply@blogger.com (Rubén Hortas)</managingEditor><generator>Blogger</generator><openSearch:totalResults>74</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-591594251204652405</guid><pubDate>Sun, 08 May 2022 10:42:00 +0000</pubDate><atom:updated>2022-05-08T12:48:25.235+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">blog</category><category domain="http://www.blogger.com/atom/ns#">github</category><category domain="http://www.blogger.com/atom/ns#">personal</category><title>Me mudo a https://rubenhortas.github.io</title><description>&lt;p&gt;Después de todo el tiempo sin publicar en este blog, creo que es hora de abandonarlo definitivamente, mudarse y empezar de cero.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;He decidido mudar el blog a &lt;a href=&quot;https://github.com&quot; target=&quot;_blank&quot;&gt;github&lt;/a&gt;: &lt;a href=&quot;https://rubenhortas.github.io&quot; target=&quot;_blank&quot;&gt;https://rubenhortas.github.io&lt;/a&gt; y realizar algunos cambios. El cambio más notable será el idioma, que pasará de castellano a inglés. Respecto a la temática y la frecuencia... Seguiré publicando con la frecuencia que pueda y sobre algún tema que me apetezca y también migraré los artículos de este blog que creo que merezcan la pena tener a mano.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;No cerraré este blog por dejarlo a modo de histórico y porque algunos artículos se encuentran referenciados desde otros sitios en internet ;)&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;Nos vemos en la nueva dirección!&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2022/05/me-mudo-httpsrubenhortasgithubio.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-7184185821356182448</guid><pubDate>Sun, 15 May 2016 19:00:00 +0000</pubDate><atom:updated>2016-05-15T21:00:03.345+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cleantweetsgood</category><category domain="http://www.blogger.com/atom/ns#">git</category><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">monitorizacion</category><category domain="http://www.blogger.com/atom/ns#">open_source</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">twitter</category><title>CleanTweetsGood</title><description>&lt;p&gt;
Os presento a &lt;strong&gt;CleanTweetsGood&lt;/strong&gt;!
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt; Qué es?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;CleanTweetsGood&lt;/strong&gt; es un programa que permite eliminar &lt;i&gt;tweets&lt;/i&gt; de un usuario a partir de su histórico de &lt;a href=&quot;https://twitter.com/&quot;&gt;twitter&lt;/a&gt;.
Los tweets se pueden eliminar de dos formas:
&lt;ol&gt;
&lt;li&gt;
&lt;b&gt;Por contenido&lt;/b&gt;: Se eliminan los &lt;i&gt;tweets&lt;/i&gt; que contengan una o varias palabras previamente añadidas a una lista negra.
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Por ID&lt;/b&gt;: Se eliminan los &lt;i&gt;tweets&lt;/i&gt; a partir de su ID.
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Qué *NO* es?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
No es un &lt;i&gt;panic button&lt;/i&gt; ni una solución mágica. 
&lt;/p&gt;
&lt;p&gt;
Aunque los &lt;i&gt;tweets&lt;/i&gt; se borren del &lt;i&gt;timeline&lt;/i&gt;, los cambios en el &lt;i&gt;timeline&lt;/i&gt; tardan un tiempo en verse reflejados
(se puede comprobar descargando el historial de nuevo).
&lt;/p&gt;
&lt;p&gt;
Los &lt;i&gt;tweets&lt;/i&gt; borrados del &lt;i&gt;timeline&lt;/i&gt; pueden quedar almacenados en sitios fuera del alcance de esta aplicación:
Los servidores de &lt;i&gt;twitter&lt;/i&gt;, capturas de pantalla de otros usuarios... 
Cuando se borran los mensajes directos *no* se borran de la cuenta del otro usuario.
&lt;/p&gt;

&lt;p&gt;
&lt;strong&gt;Por qué?&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Porque hay países donde las personas pueden  acabar en la cárcel por tuitear.
&lt;/p&gt;
&lt;p&gt;
Porque las empresas y los medios viven obsesionados con las redes sociales y algún &lt;i&gt;tweet&lt;/i&gt; del pasado sacado 
de contexto puede hacerte tristemente famoso o puede hacer que pierdas una posible oportunidad de trabajo
o un trabajo.
&lt;/p&gt;


&lt;p&gt;
&lt;strong&gt;Instalación y uso&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
La aplicación la podéis encontrar y descargar en &lt;a href=&quot;https://github.com/rubenhortas&quot;&gt;mi github&lt;/a&gt;: &lt;a href=&quot;https://github.com/rubenhortas/cleantweetsgood&quot;&gt;https://github.com/rubenhortas/cleantweetsgood&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
La información sobre la instalación y el uso la podéis encontrar en &lt;a href=&quot;https://github.com/rubenhortas/cleantweetsgood/blob/master/LEEME.md&quot;&gt;el fichero LEEME&lt;/a&gt;.
&lt;/p&gt;

&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2016/05/cleantweetsgood.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-801587354170990068</guid><pubDate>Sat, 05 Mar 2016 19:38:00 +0000</pubDate><atom:updated>2016-03-05T21:53:45.131+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">abp</category><category domain="http://www.blogger.com/atom/ns#">howto</category><title>eliminar el anuncio de las cookies con adblock plus</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZWEeXYnWKbqyATRw7lfq6kzjDD6mMQ8NXHepfcmH4EF2Wsr49Aoa6hbaeSOt39VuuZ-Pb2V6OJKsNkOfL9LYp9huyfOIcTUPXIKGRl_QXPIpH_-qjak8ytJptRHgAhi31Oa9NKOZCxac/s1600/Adblock_Plus_2014_Logo.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZWEeXYnWKbqyATRw7lfq6kzjDD6mMQ8NXHepfcmH4EF2Wsr49Aoa6hbaeSOt39VuuZ-Pb2V6OJKsNkOfL9LYp9huyfOIcTUPXIKGRl_QXPIpH_-qjak8ytJptRHgAhi31Oa9NKOZCxac/s200/Adblock_Plus_2014_Logo.svg.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
&lt;a href=&quot;https://adblockplus.org/es/&quot;&gt;Adblock Plus (ABP)&lt;/a&gt; es el bloqueador de publicidad más utilizado actualmente. Es gratuito y está liberado bajo licencia &lt;a href=&quot;https://www.gnu.org/licenses/quick-guide-gplv3.html&quot;&gt;GPLv3&lt;/a&gt;. Tanto en su versión de complemento para navegador como en &lt;a href=&quot;https://adblockbrowser.org/&quot;&gt;su versión de navegador para móvil (Adblock browser)&lt;/a&gt;, esta herramienta permite bloquear &lt;i&gt;tracking&lt;/i&gt;, dominios de &lt;i&gt;malware&lt;/i&gt;, &lt;i&gt;banners&lt;/i&gt;, &lt;i&gt;popups&lt;/i&gt; (ventanas emergentes) y anuncios incustados en los vídeos.
&lt;/p&gt; 
&lt;p&gt;
Lo que no sabía hasta hace poco, es que &lt;b&gt;con ABP puedes eliminar los molestos anuncios de las &lt;i&gt;cookies&lt;/i&gt;&lt;/b&gt; (Sí, a estas alturas todos sabemos que los sitios web utilizan &lt;i&gt;cookies&lt;/i&gt;...).
&lt;/p&gt;
&lt;p&gt;
&lt;br&gt;Para bloquear la advertencia de las &lt;i&gt;cookies&lt;/i&gt; sólo hay que ir a a &lt;a href=&quot;https://adblockplus.org/es/subscriptions&quot;&gt;la lista de Suscripciones de filtros para &lt;i&gt;Adblock Plus&lt;/i&gt;&lt;/a&gt; y suscribirse al filtro &quot;&lt;a href=&quot;abp:subscribe?location=http%3A//www.kiboke-studio.hr/i-dont-care-about-cookies/abp/&amp;title=I%20don%27t%20care%20about%20cookies&quot;&gt;&lt;b&gt;&lt;i&gt;I don&#39;t care about cookies&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;&quot; en la sección &quot;Misceláneos&quot;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9xAHPbiNkV7xBpbZ1FtKCzIgooIdVjCtpLsMbcQLVXwGVLnwSSiDP2pDEgAXmrP9eDMk5xFF3QNgPHELMHRQnDH1sOWhJsdE1UPOZ_7liSgeIHy992owZgB9DW2F__DEOwRUdapoEClo/s1600/ABPiDontCareAboutCookies.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg9xAHPbiNkV7xBpbZ1FtKCzIgooIdVjCtpLsMbcQLVXwGVLnwSSiDP2pDEgAXmrP9eDMk5xFF3QNgPHELMHRQnDH1sOWhJsdE1UPOZ_7liSgeIHy992owZgB9DW2F__DEOwRUdapoEClo/s320/ABPiDontCareAboutCookies.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
En la &lt;a href=&quot;https://adblockplus.org/es/subscriptions&quot;&gt;la lista de Suscripciones de filtros&lt;/a&gt;, en la sección &quot;Bloqueo de publicidad&quot;, también se encuentra la lista para bloquear publicidad de las &lt;i&gt;webs&lt;/i&gt; en español: &lt;a href=&quot;abp:subscribe?location=https%3A//easylist-downloads.adblockplus.org/easylistspanish.txt&amp;title=EasyList%20Spanish&amp;requiresLocation=https%3A//easylist-downloads.adblockplus.org/easylist.txt&amp;requiresTitle=EasyList&quot;&gt;&lt;b&gt;&lt;i&gt;EasyList Spanish&lt;/i&gt;&lt;/b&gt;&lt;/a&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2KF3XTcTWF52VNyQkCNCuT-tGl-NO4v2MwAbMAcH_6cswEFyGIRvfPq0222GxhQ8mrjRaX6EkhhoxFFvZMazeH9Gofa1pWS5JPSuHyxoJHM1PUpTuakBmc_UGHlBLT4Gi2LoK9M-KNjQ/s1600/ABPeasylistSpanish.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2KF3XTcTWF52VNyQkCNCuT-tGl-NO4v2MwAbMAcH_6cswEFyGIRvfPq0222GxhQ8mrjRaX6EkhhoxFFvZMazeH9Gofa1pWS5JPSuHyxoJHM1PUpTuakBmc_UGHlBLT4Gi2LoK9M-KNjQ/s320/ABPeasylistSpanish.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Para suscribirse a cualquier lista sólo hay que hacer click en el nombre de la lista, en el campo &quot;Suscribirse: nombre_de_la_lista&quot; y, luego, hacer click en &quot;&lt;i&gt;Add&lt;/i&gt; (Añadir)&quot; en la pestaña que se abre a continuación.
&lt;/p&gt;
&lt;p&gt;
Como ABP es configurable, y algunos sitios se mantienen gracias a la publicidad, se puede permitir cierta publicidad no intrusiva, o crear listas blancas para permitir toda la publicidad en ciertos sitios &lt;i&gt;web&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2016/03/eliminar-el-anuncio-de-las-cookies-con.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZWEeXYnWKbqyATRw7lfq6kzjDD6mMQ8NXHepfcmH4EF2Wsr49Aoa6hbaeSOt39VuuZ-Pb2V6OJKsNkOfL9LYp9huyfOIcTUPXIKGRl_QXPIpH_-qjak8ytJptRHgAhi31Oa9NKOZCxac/s72-c/Adblock_Plus_2014_Logo.svg.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5823403951115824531</guid><pubDate>Fri, 24 Jul 2015 16:09:00 +0000</pubDate><atom:updated>2015-09-12T21:31:59.741+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gnome</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">kali</category><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><title>Configurar las brightness keys en Kali Linux</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s1600/rheve-tux-ouvrier.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s320/rheve-tux-ouvrier.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;Recientemente he tenido que cambiar de portátil, y esta vez (y por el momento) me he decidido por instalarle &lt;a href=&quot;https://www.kali.org/&quot;&gt;Kali Linux&lt;/a&gt;. La verdad es que me sorprendió ver que funcionaba &lt;b&gt;*&lt;i&gt;casi&lt;/i&gt;*&lt;/b&gt; todo recién instalda &lt;i&gt;Kali&lt;/i&gt;, pero una de las cosas que no funcionaban eran las &lt;b&gt;teclas de brillo o iluminación de pantalla&lt;/b&gt; (también conocidas como &lt;i&gt;&lt;b&gt;screen brightness keys&lt;/b&gt;&lt;/i&gt; o &lt;i&gt;&lt;b&gt;brightness buttons&lt;/b&gt;&lt;/i&gt;). Después de darle un par de vueltas, encontré dos formas fáciles de solucionarlo, la mía y una un poco mejor ;)
&lt;/p&gt;
&lt;p&gt;
La primera forma que encontré de solucionarlo -la mía- fue modificar directamente los valores del &lt;i&gt;gnome settings daemon power&lt;/i&gt; a través de un pequeño &lt;i&gt;script&lt;/i&gt;. El &lt;i&gt;script&lt;/i&gt; lo he colgado en mi &lt;i&gt;github&lt;/i&gt; &lt;a href=&quot;https://github.com/rubenhortas/gnome_brightness_keys&quot;&gt;https://github.com/rubenhortas/gnome_brightness_keys&lt;/a&gt; y lo podéis utilizar libremente. 
&lt;/p&gt;
&lt;p&gt;
Para utilizarlo sólo hay que guardarlo en un directorio en el que tenga permisos de ejecución, y asignar los comandos &quot;&lt;i&gt;&lt;b&gt;brightnessControl up&lt;/b&gt;&lt;/i&gt;&quot; (para aumentar el brillo) y &quot;&lt;i&gt;&lt;b&gt;brightnessControl down&lt;/b&gt;&lt;/i&gt;&quot; (para bajar el brillo) a las teclas a través del propio menú de &lt;i&gt;gnome&lt;/i&gt; (&lt;i&gt;&lt;b&gt;Aplicaciones &gt; Herramientas del sistema &gt; Preferencias &gt; Configuración del sistema &gt; Teclado &gt; Atajos &gt; Combinación personal&lt;/b&gt;&lt;/i&gt;).
&lt;/p&gt;
&lt;p&gt;
Haciéndolo de esta forma las teclas van a funcionar, pero no nos va a salir el indicador de brillo en la pantalla cada vez que cambiemos el brillo.
&lt;/p&gt;
&lt;p&gt;
La solución que encontré para que las teclas funcionen y muestre el indicador de cambio de brillo en pantalla ha sido instalar  &lt;i&gt;&lt;b&gt;xdotool&lt;/b&gt;&lt;/i&gt; y asignar loscomandos &quot;&lt;i&gt;&lt;b&gt;xdotool key XF86MonBrightnessUp&lt;/b&gt;&lt;/i&gt;&quot; (para subir el brillo) y &quot;&lt;i&gt;&lt;b&gt;xdotool key XF86MonBrightnessDown&lt;/b&gt;&lt;/i&gt;&quot; (para bajar el brillo) a las teclas.
&lt;/p&gt;
&lt;p&gt;
Con cualquiera de estas dos soluciones tendremos las teclas de brillo funcionando.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy! ;)&lt;/i&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2015/07/configurar-las-brightness-keys-en-kali.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s72-c/rheve-tux-ouvrier.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-3585129385017963667</guid><pubDate>Sun, 19 Apr 2015 19:30:00 +0000</pubDate><atom:updated>2015-04-19T21:30:00.139+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">android</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">motorola</category><title>borrar la partición de caché en un moto g</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtHp6r6-0pKzWJqDOM1UpMvZwXDTUteDHN43B6wIYjBRnCvFXLzQuXzc-vQ2mxliNOSkMpQUhyVH4DGKOetTNEQp-2HQRZylM9YV3NuZ2YExLmWVVxfgo8yMRDC04mk7eMwd7Qdcl-lM/s1600/android_studio_logo-300x300.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtHp6r6-0pKzWJqDOM1UpMvZwXDTUteDHN43B6wIYjBRnCvFXLzQuXzc-vQ2mxliNOSkMpQUhyVH4DGKOetTNEQp-2HQRZylM9YV3NuZ2YExLmWVVxfgo8yMRDC04mk7eMwd7Qdcl-lM/s200/android_studio_logo-300x300.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;br&gt;
&lt;br&gt;
&lt;p&gt;Hace un par de meses mi &lt;b&gt;Motorola Moto G&lt;/b&gt; (primera generación) empezó a sufrir de &quot;muerte súbita&quot;. El teléfono, aún teniendo batería se apagaba de repente. Aunque volvía a encender aleatoriamente (sobretodo después de ponerlo a cargar unas horas), era un problema que me tenía enfadado. La solución fue borrar la partición de caché del dispositivo. Para borrar esta partición, los pasos a seguir son:
&lt;br&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;li&gt;
Con el teléfono apagado, pulsar la tecla &lt;b&gt;bajar volumen&lt;/b&gt; durante 2-3 segundos. Sin soltar la tecla, pulsar también la tecla de &lt;b&gt;encendido&lt;/b&gt; y después soltar ambas.
&lt;/li&gt;
&lt;br&gt;
&lt;i&gt;* El dispositivo mostrará distintas opciones de arranque.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Utilizar la tecla &lt;b&gt;bajar volumen&lt;/b&gt; para desplazarse a &quot;&lt;i&gt;Recovery&lt;/i&gt;&quot; (recuperación) y la tecla &lt;b&gt;subir volumen&lt;/b&gt; para seleccionar la opción. 
&lt;/li&gt;
&lt;br&gt;
&lt;i&gt;* Si el dispositivo se reinicia, es que se ha esperado demasiado para hacer una selección. Hay que volver a empezar el proceso.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;i&gt;* El dispositivo mostrará el logotipo de &lt;i&gt;Motorola&lt;/i&gt; y, a continuación, el de &lt;i&gt;Android&lt;/i&gt; de emergencia (un logotipo con una exclamación)&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Mantener pulsada la tecla &lt;b&gt;subir volumen&lt;/b&gt; durante 10-15 segundos. Manteniendo pulsada la tecla &lt;b&gt;subir volumen&lt;/b&gt;, tocar y soltar la tecla de &lt;b&gt;encendido&lt;/b&gt;.
&lt;/li&gt;
&lt;br&gt;
&lt;i&gt;* El dispositivo mostrará opciones de menú adicionales (el texto aparecerá en azul)&lt;/i&gt;
&lt;i&gt;* Si se queda atascado en este paso, se puede intentar un reinicio forzado pulsando la tecla de &lt;b&gt;encendido&lt;/b&gt; y la tecla &lt;b&gt;bajar volumen&lt;/b&gt;. (Habrá que volver a empezar todo el proceso)&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Utilice la tecla &lt;b&gt;bajar volumen&lt;/b&gt; para desplazarse hasta la opción de borrado de la partición de caché &quot;&lt;i&gt;Wipe Cache&lt;/i&gt;&quot; y la tecla de &lt;b&gt;encendido&lt;/b&gt; para seleccionar la opción.
&lt;/li&gt;
&lt;br&gt;
&lt;i&gt;* El dispositivo llevará a cabo el borrado de la partición.&lt;/i&gt;
&lt;br&gt;
&lt;i&gt;* El dispositivo se reiniciará y comenzará la secuencia de encendido normal.&lt;/i&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2015/04/borrar-la-particion-de-cache-en-un-moto.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhUtHp6r6-0pKzWJqDOM1UpMvZwXDTUteDHN43B6wIYjBRnCvFXLzQuXzc-vQ2mxliNOSkMpQUhyVH4DGKOetTNEQp-2HQRZylM9YV3NuZ2YExLmWVVxfgo8yMRDC04mk7eMwd7Qdcl-lM/s72-c/android_studio_logo-300x300.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-2203725821923374934</guid><pubDate>Mon, 08 Dec 2014 20:00:00 +0000</pubDate><atom:updated>2016-02-05T20:29:27.766+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>python 101 para desarrolladores</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0nni2ZnL7u3nybtHZ3zsakFF0ZLfadY_k12RLunNjNFOV7dUMddGASzXWpXHKvhtWzNR3okQe7uoidtw67x0xn4T_B5WNxkPoRKsICEqwrAsiTktL8sDnmz98AehZ8tq_DP_4era0ow4/s1600/avatar.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0nni2ZnL7u3nybtHZ3zsakFF0ZLfadY_k12RLunNjNFOV7dUMddGASzXWpXHKvhtWzNR3okQe7uoidtw67x0xn4T_B5WNxkPoRKsICEqwrAsiTktL8sDnmz98AehZ8tq_DP_4era0ow4/s200/avatar.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
&lt;b&gt;&lt;i&gt;Coruña Developers&lt;/i&gt;&lt;/b&gt; (&lt;a href=&quot;https://twitter.com/corunadev&quot;&gt;@CorunaDev&lt;/a&gt;) es una iniciativa que acaba de surgir en A Coruña y que, en resumidas cuentas, pretende ser un punto de encuentro para desarrolladores. Un lugar donde poder conversar, debatir y sobretodo aprender de otros desarrolladores con más experiencia en otras áreas.
&lt;/p&gt;
&lt;p&gt;
El viernes pasado tuve la oportunidad de inaugurar las charlas con &quot;&lt;strong&gt;&lt;a href=&quot;https://drive.google.com/file/d/0BwZ9pe7x5UspMXhhVjVpb2p6cG8/view?usp=sharing&quot;&gt;Python 101 para desarrolladores&lt;/a&gt;&lt;/strong&gt;&quot;. La charla es una introducción a &lt;i&gt;Python&lt;/i&gt;, pasando por alto cosas básicas, haciendo hincapié, sobretodo, en las diferencias, ventajas y desventajas que presenta &lt;i&gt;Python&lt;/i&gt; respecto a otros lenguajes de programación. Dejando para el final ciertas anotaciones que consideré necesarias, aunque no pude profundizar en ellas por la extensión de los temas a los que hacen referencia.
&lt;/p&gt;
&lt;p&gt;
Desde aquí quiero volver a aprovechar para agradecerles a los chicos de &lt;b&gt;Coruña Developers&lt;/b&gt; la oportunidad y la experiencia (también el trato recibido), y a los asistentes el interés y la curiosidad demostrada. La verdad es que para mi ha sido una experiencia muy positiva, y espero que resultase productiva para los asistentes.
&lt;/p&gt;
&lt;p&gt;
Aunque sé que para los no asistentes las diapositivas y los ejemplos pueden resultar escuetos, por consenso con la organización y los asistentes, he decidido colgar el material utilizado (diapositivas y ejemplos de código). Mientras se crean los servicios que servirán de puntos comunes para alojar todo el material que vaya generando el proyecto &lt;b&gt;Coruña Developers&lt;/b&gt;, he subido &lt;a href=&quot;https://github.com/rubenhortas/python101&quot;&gt;las diapositivas y los ejemplos utilizados&lt;/a&gt; a &lt;a href=&quot;https://github.com/rubenhortas/&quot;&gt;mi cuenta en &lt;i&gt;github&lt;/i&gt;&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Para los no asistentes, esta documentación podrá resultar escueta por encontrarse fuera de contexto. Ya que simplemente se trata de material de apoyo (notas breves y ejemplos simples) para la charla. Material que sirve para dotar de estructura, consistencia y un hilo argumentativo la narración. Un material que, por su formato, deja fuera ciertos temas y matices y comentados durante la charla. De todas formas, puede que aún así resulte de interés.
&lt;/p&gt;
&lt;p&gt;
Personalmente, y después de hablar con los organizadores sobre las ideas que tienen, creo que es una iniciativa muy interesante. Estoy seguro de que estaré en futuras ocasiones, en principio como asistente, pero quien sabe! Quizás en un futuro tenga la oportunidad de repetir como ponente ;)
&lt;/p&gt;
&lt;p&gt;
Podéis seguir las actividades de &lt;b&gt;Coruña Developers&lt;/b&gt; en su página de &lt;i&gt;facebook&lt;/i&gt;: &lt;a href=&quot;https://www.facebook.com/groups/CorunaDevelopers&quot;&gt;https://www.facebook.com/groups/CorunaDevelopers&lt;/a&gt; y/o en su &lt;i&gt;twitter&lt;/i&gt;: &lt;a href=&quot;https://twitter.com/corunadev&quot;&gt;@CorunaDev&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Nos veremos en futuras ediciones!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;Python 101 para desarrolladores (Material)&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://drive.google.com/file/d/0BwZ9pe7x5UspMXhhVjVpb2p6cG8/view?usp=sharing&quot;&gt;Python 101 para desarrolladores - Diapositivas (pdf)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/rubenhortas/python101&quot;&gt;Python 101 para desarrolladores - Códigos de ejemplo (github)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2014/12/python-101-para-desarrolladores.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0nni2ZnL7u3nybtHZ3zsakFF0ZLfadY_k12RLunNjNFOV7dUMddGASzXWpXHKvhtWzNR3okQe7uoidtw67x0xn4T_B5WNxkPoRKsICEqwrAsiTktL8sDnmz98AehZ8tq_DP_4era0ow4/s72-c/avatar.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-8217263458118670917</guid><pubDate>Sun, 14 Sep 2014 19:00:00 +0000</pubDate><atom:updated>2014-09-14T21:00:01.127+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cvs</category><category domain="http://www.blogger.com/atom/ns#">eclipse</category><category domain="http://www.blogger.com/atom/ns#">faq</category><category domain="http://www.blogger.com/atom/ns#">git</category><category domain="http://www.blogger.com/atom/ns#">github</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>integrar pydev y github en eclipse</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s1600/rheve-tux-ouvrier.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s320/rheve-tux-ouvrier.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
Cuanto más programas, más indispensables se vuelven los sistemas de control de versiones. Aunque &lt;a href=&quot;http://www.rubenhortas.blogspot.com.es/2014/04/creando-repositorios-locales-en-git.html&quot;&gt;ya he hablado de alguno ellos en este blog anteriormente&lt;/a&gt;, hoy voy a explicar cómo integrar &lt;strong&gt;&lt;i&gt;eclipse&lt;/i&gt; + &lt;i&gt;PyDev&lt;/i&gt; + &lt;i&gt;GitHub&lt;/i&gt;&lt;/strong&gt;. Para programar en &lt;i&gt;python&lt;/i&gt; como un &lt;i&gt;pro&lt;/i&gt; ;)
&lt;/p&gt;
&lt;h2&gt;Requisitos previos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;https://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;https://www.python.org/&quot;&gt;python&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;Cuenta en &lt;i&gt;&lt;a href=&quot;https://GitHub.com/&quot;&gt;github&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;h2&gt;Instalar &lt;i&gt;&lt;a href=&quot;http://pydev.org&quot;&gt;PyDev&lt;/a&gt;&lt;/i&gt; (rama &lt;i&gt;Main&lt;/i&gt;)&lt;/h2&gt;
&lt;p&gt;
Requisitos:
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;Java 7&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Python&lt;/i&gt; &gt;= 2.1 o &lt;i&gt;Jython&lt;/i&gt; &gt;= 2.1 o &lt;i&gt;IronPython&lt;/i&gt; &gt;= 2.6&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Eclipse&lt;/i&gt; &gt;= 3.8&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Abrimos &lt;i&gt;Eclipse&lt;/i&gt; y vamos al menú: &lt;b&gt;&lt;i&gt;Help &gt; Install New Software...&lt;/i&gt;&lt;/b&gt;

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB_Xm8gMXfBXnvVvRj5npOnfRLmC4kfyoh_4mBrcsnO8Nb628q01clqhMJ0s1fNvg-6pfpTqtkYHloTr8OBE1V7PMH8NPAfkKBCn_FP5m8sAZHFylJyYoc1mt55uTgvPxfvA5_KpYneL0/s1600/EclipseInstallNewSoftware.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB_Xm8gMXfBXnvVvRj5npOnfRLmC4kfyoh_4mBrcsnO8Nb628q01clqhMJ0s1fNvg-6pfpTqtkYHloTr8OBE1V7PMH8NPAfkKBCn_FP5m8sAZHFylJyYoc1mt55uTgvPxfvA5_KpYneL0/s320/EclipseInstallNewSoftware.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
En la siguiente pantalla, pulsamos &lt;b&gt;&lt;i&gt;Add&lt;/i&gt;&lt;/b&gt; y añadimos la dirección de las actualizaciones de la rama &lt;i&gt;main&lt;/i&gt; de &lt;b&gt;&lt;i&gt;PyDev&lt;/i&gt;&lt;/b&gt;:  &lt;a href=&quot; http://pydev.org/updates&quot;&gt;http://pydev.org/updates&lt;/a&gt;. Como nombre le pondremos &quot;&lt;i&gt;PyDev&lt;/i&gt;&quot;.

&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj60D9wS8gHqsaxg9jIJdNIg67nH-zkF5byXA368K29FLDYAUgE-rFJm-PgOYEk2tKZmydwwW63RElsV61eKLQFZ5TgTGsfR5F790QIKEvHFvW5Z5Fjhs496vt1lHif24gbPIuPtLR8oFs/s1600/EclipseInstallingPyDev.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj60D9wS8gHqsaxg9jIJdNIg67nH-zkF5byXA368K29FLDYAUgE-rFJm-PgOYEk2tKZmydwwW63RElsV61eKLQFZ5TgTGsfR5F790QIKEvHFvW5Z5Fjhs496vt1lHif24gbPIuPtLR8oFs/s320/EclipseInstallingPyDev.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Marcamos &lt;b&gt;&lt;i&gt;PyDev&lt;/i&gt;&lt;/b&gt; y desmarcamos la opción &quot;&lt;b&gt;&lt;i&gt;Contact all update sites during install to find required software&lt;/i&gt;&lt;/b&gt;&quot;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjb3VNYPjUl3mHS1HctSTqzN_uECEHQybQXW_V6Sm2ABl8B099aU5qbDVX31p0vWhyphenhyphenSYaaHEXpWwdKpAlhTnrPxtR2eH8GNmbXfc3PCOOfrgkYmus2CgQLyfW0O3JvyN5eA45QTPi4FZI/s1600/EclipseInstallingPyDev2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjb3VNYPjUl3mHS1HctSTqzN_uECEHQybQXW_V6Sm2ABl8B099aU5qbDVX31p0vWhyphenhyphenSYaaHEXpWwdKpAlhTnrPxtR2eH8GNmbXfc3PCOOfrgkYmus2CgQLyfW0O3JvyN5eA45QTPi4FZI/s320/EclipseInstallingPyDev2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
Pulsamos &lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;. Leemos y aceptamos la licencia y pulsamos &lt;b&gt;&lt;i&gt;Finish&lt;/i&gt;&lt;/b&gt;.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h2&gt;Instalar &lt;i&gt;&lt;a href=&quot;http://www.eclipse.org/egit/&quot;&gt;EGit&lt;/a&gt;&lt;/i&gt; y &lt;i&gt;&lt;a href=&quot;https://github.com/blog/852-github-mylyn-connector-for-eclipse&quot;&gt;GitHub Mylyn Connector&lt;/a&gt;&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
Volvemos al menú &lt;b&gt;&lt;i&gt;Help &gt; Install New Software...&lt;/i&gt;&lt;/b&gt; de &lt;i&gt;Eclipse&lt;/i&gt;
&lt;/li&gt;
&lt;li&gt;
Introducimos la dirección de las actualizaciones de nuestra versión de &lt;i&gt;Eclipse&lt;/i&gt; (en mi caso &quot;&lt;i&gt;3.8 Juno&lt;/i&gt;&quot; -&gt; &lt;a href=&quot;http://download.eclipse.org/releases/juno/&quot;&gt;http://download.eclipse.org/releases/juno/&lt;/a&gt;).
&lt;/li&gt;
&lt;li&gt;
Filtramos los resultados por &quot;&lt;b&gt;&lt;i&gt;git&lt;/i&gt;&lt;/b&gt;&quot; y seleccionamos: &lt;b&gt;&lt;i&gt;EGit&lt;/i&gt;&lt;/b&gt;, &lt;b&gt;&lt;i&gt;JGit&lt;/i&gt;&lt;/b&gt; y &lt;b&gt;&lt;i&gt;Mylyn Github&lt;/i&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYgmw4KEozsHeqZN8EXiYIkopyZFE6u6MtHxNYiUEIo5gPgM-O390Uf-s_gyw2ysu4Hz9XT3Tyvp4QMDOgTrQkuPk1U_vKO9TtlkOMc9hPnGRrMSO380RN1KFVrUVHP3qIrSfb1D0lV0/s1600/EclipseInstallingEGit.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKYgmw4KEozsHeqZN8EXiYIkopyZFE6u6MtHxNYiUEIo5gPgM-O390Uf-s_gyw2ysu4Hz9XT3Tyvp4QMDOgTrQkuPk1U_vKO9TtlkOMc9hPnGRrMSO380RN1KFVrUVHP3qIrSfb1D0lV0/s320/EclipseInstallingEGit.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Pulsar &lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt; y finalizar la instalación.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt; 
&lt;li&gt;
&lt;h2&gt;Manejando los repositorios de &lt;i&gt;&lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;&lt;/i&gt;&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
Crear el repositorio en la &lt;i&gt;web&lt;/i&gt; de &lt;i&gt;&lt;a href=&quot;https://github.com/&quot;&gt;github&lt;/a&gt;&lt;/i&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwmAXHKteEmZVj4QUKe27rD8EJ-ZQ-wGwYiLERjTCusCU-lcdB39RM64mu0ypy9bZV_M9DDN7E9oCajZdyDVYwihnexrgeN40bCBZcoPehoXPFC4XgRnWCjKZObDnhjPNMH1A-q9mlfzI/s1600/GithubNewRepo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwmAXHKteEmZVj4QUKe27rD8EJ-ZQ-wGwYiLERjTCusCU-lcdB39RM64mu0ypy9bZV_M9DDN7E9oCajZdyDVYwihnexrgeN40bCBZcoPehoXPFC4XgRnWCjKZObDnhjPNMH1A-q9mlfzI/s320/GithubNewRepo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Importar el repositorio en &lt;i&gt;Eclipse&lt;/i&gt;
&lt;p&gt;
Aunque hay muchos tutoriales disponibles para hacer esto, en ellos recomiendan crear los archivos directamente en &lt;i&gt;Eclipse&lt;/i&gt;, hacer un &lt;i&gt;commit&lt;/i&gt; y un &lt;i&gt;push&lt;/i&gt; en el repostorio local de &lt;i&gt;Git&lt;/i&gt; y asociar el repositorio local de &lt;i&gt;Git&lt;/i&gt; con el repositorio remoto en &lt;i&gt;GitHub&lt;/i&gt;. Pero eso crea una carpeta con el nombre que tiene el proyecto en &lt;i&gt;Eclipse&lt;/i&gt; dentro del repositorio en &lt;i&gt;GitHub&lt;/i&gt;. Cosa que no me gusta nada. Por eso, esta parte la voy a hacer &quot;a mi manera&quot;, cambiando el modo, y evitando así tener esa carpeta en el repositorio de &lt;i&gt;GitHub&lt;/i&gt;.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
En el área de proyectos pulsar botón derecho, &quot;&lt;b&gt;&lt;i&gt;Import&lt;/i&gt;&lt;/b&gt;&quot;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAJTrq3W0QN8ABzC6WwP5nBDr5CfktPJtOOjxxw8zdskMdAjoTV2gR6SooU-5ZidxYnu_jedSDaYHIn_GBMS8ulQtK0VhelKFmESiice2QAJy8EV1x7gMuyLYikypnT1tEWbcwO67rmyY/s1600/EclipseImportRepo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAJTrq3W0QN8ABzC6WwP5nBDr5CfktPJtOOjxxw8zdskMdAjoTV2gR6SooU-5ZidxYnu_jedSDaYHIn_GBMS8ulQtK0VhelKFmESiice2QAJy8EV1x7gMuyLYikypnT1tEWbcwO67rmyY/s320/EclipseImportRepo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Seleccionar &lt;b&gt;&lt;i&gt;Git&lt;/i&gt;&lt;/b&gt;/&lt;b&gt;&lt;i&gt;Projects from Git&lt;/i&gt;&lt;/b&gt; y pulsar &lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRMc9kz0mLaJ9KcbSYTyFZfnlGVfCBHN7sLCsOMk2WefmkQvq3DHLBBiWltnmlRGboY0fmXdAVK24N9qAL2xwdq2qlGZAHUJRFXHJsISVDR97RS3MNvCx4XVL34HzkauJLIlV-iIYy70w/s1600/ImportGitRepo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjRMc9kz0mLaJ9KcbSYTyFZfnlGVfCBHN7sLCsOMk2WefmkQvq3DHLBBiWltnmlRGboY0fmXdAVK24N9qAL2xwdq2qlGZAHUJRFXHJsISVDR97RS3MNvCx4XVL34HzkauJLIlV-iIYy70w/s320/ImportGitRepo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Seleccionar &quot;&lt;b&gt;&lt;i&gt;URL&lt;/i&gt;&lt;/b&gt;&quot;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl7rm4_GBw6xv7f3xqsmcifZ6XAVtCtyn08lpZkOiUDJ385hFkKrnXMwwwEUYlT0kIyt2OplA600V7UhBvlrxUzePgtYSoF8yIoluFNXWjj5bO6xqQ5WdTBsnFKqBGqv4GbXB7EzBajzw/s1600/ImportGitRepo2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjl7rm4_GBw6xv7f3xqsmcifZ6XAVtCtyn08lpZkOiUDJ385hFkKrnXMwwwEUYlT0kIyt2OplA600V7UhBvlrxUzePgtYSoF8yIoluFNXWjj5bO6xqQ5WdTBsnFKqBGqv4GbXB7EzBajzw/s320/ImportGitRepo2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Introducir la &lt;i&gt;URL&lt;/i&gt; del repositorio en &lt;i&gt;GitHub&lt;/i&gt; (los campos &lt;i&gt;Host&lt;/i&gt; y &lt;i&gt;Repository path&lt;/i&gt; se autocompletan. Introducir el usuario y la contraseña y marcar la opción &quot;&lt;b&gt;&lt;i&gt;Store in Secure Store&lt;/i&gt;&lt;/b&gt;&quot;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQdanwsseh_5qsGa8_mHE65hDQ0rlRIFUHqh43PgnjPfbTZfvw7wqNw8iIFkNGGdH_5fPFim7rpflJPOHKLrqw5Eu1PkiT9TDjI9g8yraARLMk2lGCZuurWvAX6auGhnxFYb_YLIvhrrQ/s1600/ImportGitRepo3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQdanwsseh_5qsGa8_mHE65hDQ0rlRIFUHqh43PgnjPfbTZfvw7wqNw8iIFkNGGdH_5fPFim7rpflJPOHKLrqw5Eu1PkiT9TDjI9g8yraARLMk2lGCZuurWvAX6auGhnxFYb_YLIvhrrQ/s320/ImportGitRepo3.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Pulsar &quot;&lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;&quot;, &quot;&lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;&quot;, &quot;&lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;&quot; hasta llegar a la pantalla para seleccionar el asistente para importar proyectos.
&lt;/li&gt;
&lt;li&gt;
Importar el proyecto como proyecto general (&lt;i&gt;general project&lt;/i&gt;)
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhyaD3k9q_aRuUWB78SIYwCL9KUsI9yWwu25BSZbrylBzHiDxfc1EDucUVTLxcuTRPKmoGb2AkelJ7F8LEzoK4CjeEftMG9XqXD30CDvaENhJsk80ISg0ExTEiVnfh2ecPuK3gBTDOgOE/s1600/ImportGitRepo4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhyaD3k9q_aRuUWB78SIYwCL9KUsI9yWwu25BSZbrylBzHiDxfc1EDucUVTLxcuTRPKmoGb2AkelJ7F8LEzoK4CjeEftMG9XqXD30CDvaENhJsk80ISg0ExTEiVnfh2ecPuK3gBTDOgOE/s320/ImportGitRepo4.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Pulsar &quot;&lt;b&gt;&lt;i&gt;Next&lt;/i&gt;&lt;/b&gt;&quot; y &quot;&lt;b&gt;&lt;i&gt;Finish&lt;/i&gt;&lt;/b&gt;&quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Ahora ya tendremos nuestro proyecto de &lt;i&gt;GitHub&lt;/i&gt; importado en &lt;i&gt;Eclipse&lt;/i&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQV-Yx8Ib2basM4tuC3OowL4t2caDa0wdUYaFWNy7CE0cy55kkDfXdGa0l5VMaP0YmTv_mAK3Lg6nb33faMHZ_AEoSaC8gpPnobH__gFIw1t98m54fp9_VCwOxPR54cxEONN0BDoJ5AaQ/s1600/ImportGitRepo5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQV-Yx8Ib2basM4tuC3OowL4t2caDa0wdUYaFWNy7CE0cy55kkDfXdGa0l5VMaP0YmTv_mAK3Lg6nb33faMHZ_AEoSaC8gpPnobH__gFIw1t98m54fp9_VCwOxPR54cxEONN0BDoJ5AaQ/s320/ImportGitRepo5.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Añadir los archivos al proyecto
&lt;/li&gt;
&lt;li&gt;
Hacer el primer &lt;i&gt;commit&lt;/i&gt;
&lt;p&gt;
&lt;b&gt;Botón derecho sobre el proyecto &gt; &lt;i&gt;Team&lt;/i&gt; &gt; &lt;i&gt;Commit&lt;/i&gt;&lt;/b&gt;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmmNzchyphenhyphen1U6_DC5fNdiiRogRk0pVuhyphenhyphenBziNo1KQX0Jq0umMYjmC6voD4uTSUgp4xKkCx-qq2mR4awCCiUnMVuDklpyAbzkKkOvJZzC0TDQwPw6YzRJ9CKkWfYqKlS0cPeXSPYIpm33QdQ/s1600/EclipseGitCommit.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmmNzchyphenhyphen1U6_DC5fNdiiRogRk0pVuhyphenhyphenBziNo1KQX0Jq0umMYjmC6voD4uTSUgp4xKkCx-qq2mR4awCCiUnMVuDklpyAbzkKkOvJZzC0TDQwPw6YzRJ9CKkWfYqKlS0cPeXSPYIpm33QdQ/s320/EclipseGitCommit.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*Hasta que no hagamos un &lt;i&gt;commit&lt;/i&gt;, los archivos del proyecto mostrarán un pequeño interrogante.&lt;/i&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
Introducir el primer comentario. Seleccionar los archivos que queremos incluír en el &lt;i&gt;commit&lt;/i&gt;  y que queremos sincronizar con el repositorio en &lt;i&gt;GitHub&lt;/i&gt; y pulsar &quot;&lt;b&gt;&lt;i&gt;Commit&lt;/i&gt;&lt;/b&gt;&quot; o &quot;&lt;b&gt;&lt;i&gt;Commit and Push&lt;/i&gt;&lt;/b&gt;&quot; (si los queremos subir ya).
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiG-B54Cqr4EYlmjN4Z-yBsORk3kBzazkVtO-E0Hx48hsrYSkM_TbCAGwslA1jzNio62vQ4Xiud6qTZ3e2TH6hyphenhyphen6yBSwk6KkToHxJ68UvHk97sUCGGEmsKbdFU8chezAFs6H_HOJMJLo/s1600/EclipseGitCommit2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJiG-B54Cqr4EYlmjN4Z-yBsORk3kBzazkVtO-E0Hx48hsrYSkM_TbCAGwslA1jzNio62vQ4Xiud6qTZ3e2TH6hyphenhyphen6yBSwk6KkToHxJ68UvHk97sUCGGEmsKbdFU8chezAFs6H_HOJMJLo/s320/EclipseGitCommit2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;p&gt;
Si &lt;b&gt;no&lt;/b&gt; hemos hecho el &lt;i&gt;push&lt;/i&gt; (o para futuros &lt;i&gt;pushs&lt;/i&gt;)
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;
Seleccionamos el proyecto, &lt;b&gt;botón derecho &gt; &lt;i&gt;Team&lt;/i&gt; &gt; &lt;i&gt;Push to Upstream&lt;/i&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIsWvfWQgq7SRMrWvTXWpvQJOAhcGuLfcIYuEwa7YzNcbQ2CL280t-mZg5hFqyqwHk6qCU8Hht30t2pO99yWAZPmXHqz0ty_dM17CXWCAfMahRDCYTnSB51nCuEmmbxrHXNrKWU4LTDs8/s1600/EclipseGitPush1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgIsWvfWQgq7SRMrWvTXWpvQJOAhcGuLfcIYuEwa7YzNcbQ2CL280t-mZg5hFqyqwHk6qCU8Hht30t2pO99yWAZPmXHqz0ty_dM17CXWCAfMahRDCYTnSB51nCuEmmbxrHXNrKWU4LTDs8/s320/EclipseGitPush1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
Y ya tendremos los cambios locales sincronizados con nuestro repositorio en &lt;i&gt;GitHub&lt;/i&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUzKkME_CQSBeVcF0IIo4yF0lNcBwxZQcWdVdeogkQGxkPH45GVRJf6MISp4qWW-BP7AhlAHu59h9kqQSy-Uqxl7KQhYMIhMullmN3JTyWW4OvFF4b2fs5oksvhD_-wiO6zQXrGnJudrE/s1600/githubSynced.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjUzKkME_CQSBeVcF0IIo4yF0lNcBwxZQcWdVdeogkQGxkPH45GVRJf6MISp4qWW-BP7AhlAHu59h9kqQSy-Uqxl7KQhYMIhMullmN3JTyWW4OvFF4b2fs5oksvhD_-wiO6zQXrGnJudrE/s320/githubSynced.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h2&gt;Activando &lt;i&gt;PyDev&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;
En estos momentos, notaremos que no nos funcionan las comprobaciones de &lt;i&gt;PyDev&lt;/i&gt;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl6Kd4WpbmdPDiYg6vOmFudA-5z7QsiJ_PtabqFh1_Mi3vj-Gk6gDVp899WARrzyslhF9Yi2qOCirPHY2n_PwID9p-mMCOJy9fbe5edSdvs68ih1yjEbiGjpDtK32jt3qrqX7zynpma_0/s1600/pydevNotWorking.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhl6Kd4WpbmdPDiYg6vOmFudA-5z7QsiJ_PtabqFh1_Mi3vj-Gk6gDVp899WARrzyslhF9Yi2qOCirPHY2n_PwID9p-mMCOJy9fbe5edSdvs68ih1yjEbiGjpDtK32jt3qrqX7zynpma_0/s320/pydevNotWorking.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
Para solucionarlo:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Seleccionar el proyecto &gt; &lt;b&gt;botón derecho &gt; &lt;i&gt;PyDev&lt;/i&gt; &gt; &lt;i&gt;Set as Source Folder (add to PYTHONPATH)&lt;/i&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzJWtfJ9zo6TuXtPGk8GLc4ABsHX3aqGU6hUronXqDl3sUQ9CkutKDxlIHp4qUQvV-N8hU01gwjyzxnVyAMABWltHbxuOsq4vPmX6DrZrRkcxsFvEvzQI5oQAEkPPDEtp8EZXUMHf79c/s1600/PyDevChecking1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYzJWtfJ9zo6TuXtPGk8GLc4ABsHX3aqGU6hUronXqDl3sUQ9CkutKDxlIHp4qUQvV-N8hU01gwjyzxnVyAMABWltHbxuOsq4vPmX6DrZrRkcxsFvEvzQI5oQAEkPPDEtp8EZXUMHf79c/s320/PyDevChecking1.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
No os preocupéis, enseguida lo borramos de ahí ;)
&lt;/li&gt;
&lt;li&gt;
Seleccionar el proyecto &gt; &lt;b&gt;botón derecho &gt; &lt;i&gt;PyDev&lt;/i&gt; &gt; &lt;i&gt;Code analysis&lt;/i&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYL8q1R1J1yVARWrjwJ1xHaU2CcDE1pRXCiAssfX8NmXBFPXw-t1_LzXm4AkbJ6mpa8oYXkcryk8hDHYpEiSi746I3_kzXB33SiQ0A6aBHVyK5r2FWqSoQUP8zdU4_bKF066-4bG_Ntk/s1600/PyDevChecking2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnYL8q1R1J1yVARWrjwJ1xHaU2CcDE1pRXCiAssfX8NmXBFPXw-t1_LzXm4AkbJ6mpa8oYXkcryk8hDHYpEiSi746I3_kzXB33SiQ0A6aBHVyK5r2FWqSoQUP8zdU4_bKF066-4bG_Ntk/s320/PyDevChecking2.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
Quitar el proyecto de &lt;i&gt;PYTHONPATH&lt;/i&gt;
&lt;p&gt;
Como ya está funcionando &lt;i&gt;PyDev&lt;/i&gt;, si no lo necesitamos explícitamente, eliminamos el proyecto del &lt;i&gt;PYTHONPATH&lt;/i&gt;.
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhruoUR1HH4gzclaAOziT1F360tdjdtDLrgeYnGE8V5Bf_DmYrSxVqpISocYlylm6uZPncX_WFwa_vcsylkizOE4mgXo50Yn5DBLY7wd6_I_8uXbRqhZlF-vpGkaHyCdxKKAe2UyKIpO2A/s1600/PyDevChecking3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhruoUR1HH4gzclaAOziT1F360tdjdtDLrgeYnGE8V5Bf_DmYrSxVqpISocYlylm6uZPncX_WFwa_vcsylkizOE4mgXo50Yn5DBLY7wd6_I_8uXbRqhZlF-vpGkaHyCdxKKAe2UyKIpO2A/s320/PyDevChecking3.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Y ya está. Ya tendremos todo listo. La verdad es que parece un proceso tedioso, pero en cuanto se hace una o dos veces, uno se da cuenta de que no son más que un par de &lt;i&gt;clicks&lt;/i&gt; aquí y allí ;)
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
Fuentes:
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://pydev.org/manual_101_install.html&quot;&gt;PyDev/Manual/Install&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://eclipse.github.io/&quot;&gt;Eclipse/GitHubEclipse&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2014/09/integrar-pydev-y-github-en-eclipse.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGV-4BlT6Qg3j1NTc3CF1NsFke9xGigfjdezEDB9fym2Ty7C_h9-hQo-A0zrZj-5c3ErIWFcjnxf5XS1RGwdGLeeHTXPa8mSAh_vvUcWIb_9frTBgjkGvFd6CXmAWXVVRZGt0-YHv1N-g/s72-c/rheve-tux-ouvrier.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-8443792789616893977</guid><pubDate>Tue, 26 Aug 2014 18:55:00 +0000</pubDate><atom:updated>2014-08-26T20:58:54.873+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cifrado</category><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">dns</category><category domain="http://www.blogger.com/atom/ns#">dns_leaks</category><category domain="http://www.blogger.com/atom/ns#">iceweasel</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">red</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><category domain="http://www.blogger.com/atom/ns#">tor</category><category domain="http://www.blogger.com/atom/ns#">wireshark</category><title>iceweasel, tor y dns leaks</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU-0_jvwsu2jD_8Rm65vB7RX0YG7Ak1K_xUGthpEZQwdcnXag2uhybWRC0PlOXSFzuUqqGqhPu__VU8mSaZJvlGgqAMHbdZm-sZz-M1xn3RsGco5Z_61R9peuWgn6yVZqsVRTXHe0i4G0/s1600/doh.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU-0_jvwsu2jD_8Rm65vB7RX0YG7Ak1K_xUGthpEZQwdcnXag2uhybWRC0PlOXSFzuUqqGqhPu__VU8mSaZJvlGgqAMHbdZm-sZz-M1xn3RsGco5Z_61R9peuWgn6yVZqsVRTXHe0i4G0/s320/doh.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
Para los que no conozcáis &lt;a href=&quot;http://es.wikipedia.org/wiki/Iceweasel&quot;&gt;iceweasel&lt;/a&gt;, he de decir que es un &lt;i&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Fork_%28software_development%29&quot;&gt;fork&lt;/a&gt;&lt;/i&gt; totalmente libre de &lt;i&gt;&lt;a href=&quot;https://www.mozilla.org/es-ES/firefox/new/&quot;&gt;firefox&lt;/a&gt;&lt;/i&gt;, y el navegador predeterminado de &lt;a href=&quot;https://www.debian.org/index.es.html&quot;&gt;Debian&lt;/a&gt;. De cualquier forma, es mi navegador habitual. 
&lt;/p&gt;
&lt;p&gt;
Todo empezó el pasado domingo, cuando me decidía a bajarme el último capítulo de una de esas series extranjeras que sigo y que aquí ni se estrenaron, ni se estrenan, ni se las espera. La página no estaba disponible. Como no tenía la &lt;a href=&quot;http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP&quot;&gt;IP&lt;/a&gt; de la página, comprobé su estado a través del servicio: &lt;a href=&quot;http://www.downforeveryoneorjustme.com/&quot;&gt;downforeveryoneorjustme.com&lt;/a&gt;. 
&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgLmwrk7H2hMDN-AMuIjxjbUjdBwhyq4Id3wR2LhOxq3IicIKFV2lRnCo2loKBK-JmXkUddLvQ2w1QyPZ13grUo6bjufBJLm0mIwuy89tNRhpiKOrs_zNOm0PC1AhpR116eb7lnqVhH4o/s1600/itsjustyou.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgLmwrk7H2hMDN-AMuIjxjbUjdBwhyq4Id3wR2LhOxq3IicIKFV2lRnCo2loKBK-JmXkUddLvQ2w1QyPZ13grUo6bjufBJLm0mIwuy89tNRhpiKOrs_zNOm0PC1AhpR116eb7lnqVhH4o/s320/itsjustyou.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
Era solo yo. Entonces me di cuenta de que mi &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Proveedor_de_servicios_de_Internet&quot;&gt;ISP&lt;/a&gt;&lt;/i&gt; había decidido volver a bloquear ciertas páginas de descargas. Páginas de esas que tan poco les gusta a unos y que tan útiles nos resultan a otros.
&lt;/p&gt;
&lt;p&gt;
Esto me enfadó bastante. Por una parte, por qué están bloqueadas otra vez? &lt;a href=&quot;http://www.meneame.net/story/operadores-obligados-judicialmente-desbloquear-acceso-portal-p2p&quot;&gt;Hay una sentencia judicial reciente que les obliga a levantar el bloqueo&lt;/a&gt;. Por otra parte, qué anduve haciendo con mis &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt;&lt;/i&gt; y por qué me dejé puestas las que usa el &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Proveedor_de_servicios_de_Internet&quot;&gt;ISP&lt;/a&gt;&lt;/i&gt; y no las &lt;a href=&quot;http://www.opendns.com/&quot;&gt;OpenDNS&lt;/a&gt;? (Seguro que ya no eran horas...) En ese momento pensé que &lt;a href=&quot;http://www.meneame.net/search?q=propiedad+intelectual&quot;&gt;tal y como están las cosas (gracias a un buen puñado de ministros inútiles)&lt;/a&gt; sería mejor bajar el &lt;a href=&quot;http://es.wikipedia.org/wiki/Torrent&quot;&gt;torrent&lt;/a&gt; a través de &lt;a href=&quot;https://www.torproject.org/&quot;&gt;TOR&lt;/a&gt; (siempre cifrando el tráfico del cliente de descargas, claro). Pero... &lt;b&gt;Tampoco resolvía!&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;center&gt;&lt;h1&gt;WTF? AYFKM??? DNS LEAKS?!?!?!&lt;/h1&gt;&lt;/center&gt; 
&lt;/p&gt;
&lt;p&gt;
Cambio las &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt;&lt;/i&gt; y me dispongo a comprobar si hay fugas con &lt;a href=&quot;https://www.wireshark.org/&quot;&gt;wireshark&lt;/a&gt;. Efectivamente, unas fugas de &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt;&lt;/i&gt; tan grandes que no sabía si tendría que pagarles el &lt;a href=&quot;http://es.wikipedia.org/wiki/Impuesto_sobre_Bienes_Inmuebles&quot;&gt;IBI&lt;/a&gt;. &lt;b&gt;D&#39;OH!!!&lt;/b&gt;.
&lt;/p&gt;
&lt;p&gt;
Inmediatamente se me vino a la cabeza &lt;a href=&quot;https://blog.torproject.org/blog/firefox-security-bug-proxy-bypass-current-tbbs&quot;&gt;una mala configuración de firefox/&lt;i&gt;bug&lt;/i&gt; que provocaba estas fugas&lt;/a&gt; (allá por el 2012...), y fui directo al &lt;i&gt;&lt;b&gt;about:config&lt;/b&gt;&lt;/i&gt; a comprobarlo, por si era heredada. 
&lt;/p&gt;
&lt;p&gt;
Después de cambiar la variable &lt;i&gt;&lt;b&gt;network.websocket.enabled&lt;/b&gt;&lt;/i&gt; y ponerla a &lt;i&gt;&lt;b&gt;false&lt;/b&gt;&lt;/i&gt;, me vuelvo a &lt;a href=&quot;https://www.wireshark.org/&quot;&gt;wireshark&lt;/a&gt;, a ver que tal están las cosas ahora y... &lt;b&gt;Sigo con fugas! D&#39;OH!!! (2)&lt;/b&gt;.
&lt;/p&gt;
&lt;p&gt;
Pero ya que estamos aquí, y por aquello de no dar dos viajes, vamos a rebuscar un poco en las opciones relacionadas con las &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt;&lt;/i&gt;... 
&lt;/p&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivt2HObaeOLakZeoGTAdR_P79Gu2qLv7qU7BHXQxjogiJKQE5oYSCZvV0sPRgyiwO3wAfh31Y4VrtkBs_z45XbskP9Z9zv_rymeE3ydI6B2FFJ1xIljlIG8Ak228Y_lHxULkvS86osgZM/s1600/aboutconfignetworkproxysocks.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivt2HObaeOLakZeoGTAdR_P79Gu2qLv7qU7BHXQxjogiJKQE5oYSCZvV0sPRgyiwO3wAfh31Y4VrtkBs_z45XbskP9Z9zv_rymeE3ydI6B2FFJ1xIljlIG8Ak228Y_lHxULkvS86osgZM/s400/aboutconfignetworkproxysocks.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
&lt;i&gt;&lt;b&gt;network.proxy.socks_remote_dns = false&lt;/b&gt;&lt;/i&gt;? Vamos a ponerla a &lt;i&gt;&lt;b&gt;true&lt;/b&gt;&lt;/i&gt;... A ver qué dice ahora  &lt;a href=&quot;https://www.wireshark.org/&quot;&gt;wireshark&lt;/a&gt;...
&lt;/p&gt;
&lt;p&gt;
Efectivamente, era eso. Y yo dejando mi rastro de miguitas de &lt;i&gt;&lt;a href=&quot;http://es.wikipedia.org/wiki/Domain_Name_System&quot;&gt;DNS&lt;/a&gt;&lt;/i&gt;  por &lt;a href=&quot;https://www.torproject.org/&quot;&gt;TOR&lt;/a&gt; :&#39;(
&lt;/p&gt;
&lt;p&gt;
Gran lección aprendida: &lt;u&gt;&lt;b&gt;Antes de salir de casa hay que hacer siempre los deberes&lt;/b&gt;&lt;/u&gt;.
&lt;/p&gt;
&lt;p&gt;
Así que ya sabéis, cuidado con esas fugas!
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*Nota: Algunas extensiones pueden revelar nuestra &lt;a href=&quot;http://es.wikipedia.org/wiki/Direcci%C3%B3n_IP&quot;&gt;IP&lt;/a&gt; aún mientras estamos utilizando &lt;a href=&quot;https://www.torproject.org/&quot;&gt;TOR&lt;/a&gt; o &lt;a href=&quot;https://geti2p.net/en/&quot;&gt;i2p&lt;/a&gt;. Haced los deberes!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*Nota 2: Los enlaces están apuntando a &lt;a href=&quot;http://www.meneame.net&quot;&gt;meneame.net&lt;/a&gt; y &lt;a href=&quot;http://es.wikipedia.org/wiki/Wikipedia:Portada&quot;&gt;wikipedia&lt;/a&gt; intencionadamente. No pienso enlazar a ningún medio de AEDE.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy! ;)&lt;/i&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2014/08/iceweasel-tor-y-dns-leaks.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiU-0_jvwsu2jD_8Rm65vB7RX0YG7Ak1K_xUGthpEZQwdcnXag2uhybWRC0PlOXSFzuUqqGqhPu__VU8mSaZJvlGgqAMHbdZm-sZz-M1xn3RsGco5Z_61R9peuWgn6yVZqsVRTXHe0i4G0/s72-c/doh.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-7302280306921741582</guid><pubDate>Tue, 22 Jul 2014 19:19:00 +0000</pubDate><atom:updated>2014-07-22T21:19:12.663+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">raspberry</category><category domain="http://www.blogger.com/atom/ns#">red</category><category domain="http://www.blogger.com/atom/ns#">wifi</category><title>configurar tp-link TL-WN725N v2 con wpa2 y dhcp en una raspberry pi con raspbian</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpi8jfOUFTvhNxXyOtFs9rX5VzwNuNTBv204pv3PkMJ__c0BJOxF5jau1nZT2rFz-uWCysKAS2nsyKVcIHfDW7mnXLUS-JQ27UHzgki-d3OUc9STTuXFNsWOtiDBd52i_j7zmyHFJDCnU/s1600/raspberry_pi_logo.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpi8jfOUFTvhNxXyOtFs9rX5VzwNuNTBv204pv3PkMJ__c0BJOxF5jau1nZT2rFz-uWCysKAS2nsyKVcIHfDW7mnXLUS-JQ27UHzgki-d3OUc9STTuXFNsWOtiDBd52i_j7zmyHFJDCnU/s200/raspberry_pi_logo.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.raspberrypi.org/&quot;&gt;Raspberry Pi&lt;/a&gt; es un ordenador de tamaño reducido (aproximadamente del tamaño de una tarjeta de crédito). Su consumo de 2.5W (modelo A) o 3.5W (modelo B) y sus características hacen de él un aparato muy versátil.
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;Cuando compré la &lt;i&gt;raspberry&lt;/i&gt;, también compré el adaptador &lt;a href=&quot;http://www.tp-link.com/mx/products/details/?model=TL-WN725N&quot;&gt;nano &lt;i&gt;usb wifi TP-LINK TL-WN725N&lt;/i&gt;&lt;/a&gt;, con el objetivo de poder conectar la raspberry a una red inalámbrica cuando fuese necesario.
&lt;/p&gt;
&lt;p&gt;
Actualmente, hay dos versiones de este adaptador: La &lt;i&gt;v1&lt;/i&gt; y la &lt;i&gt;v2&lt;/i&gt;. Mientras que la &lt;i&gt;v1&lt;/i&gt; funciona directamente, para conseguir que funcione la &lt;i&gt;v2&lt;/i&gt; hay que instalar el driver. Para conectarnos con la &lt;i&gt;raspberry pi&lt;/i&gt; a una red con &lt;i&gt;DHCP&lt;/i&gt; protegida con &lt;i&gt;WPA2-PSK&lt;/i&gt; utizando el adaptador &lt;i&gt;nano usb wifi TP-LINK TL-WN725N&lt;/i&gt; bajo &lt;i&gt;raspbian&lt;/i&gt; hay que realizar los siguientes pasos:
&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Descargar e instalar el driver&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;
&lt;b&gt;Averiguar la versión del &lt;i&gt;kernel&lt;/i&gt; de &lt;i&gt;raspbian&lt;/i&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Para concer la versión del &lt;i&gt;kernel&lt;/i&gt; que está utilizando &lt;i&gt;raspbian&lt;/i&gt; ejecutamos el comando:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;$ uname -r&lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Descargar el &lt;i&gt;driver&lt;/i&gt;&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
La lista más completa de &lt;i&gt;drivers&lt;/i&gt; la he encontrado en &lt;a href=&quot;http://www.mendrugox.net&quot;&gt;el blog de mendrugox&lt;/a&gt;, en la entrada: &lt;a href=&quot;http://www.mendrugox.net/2013/08/tp-link-tl-wn725n-v2-working-on-raspberry-raspbian/&quot;&gt;TP-LINK TL-WN725N v2 working on Raspberry Pi (Raspbian)&lt;/a&gt;, donde se encuentran una lista con el &lt;i&gt;driver&lt;/i&gt; para cada &lt;i&gt;kernel&lt;/i&gt; y las instrucciones de instalación.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Descomprimir el archivo&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Las últimas versiones del &lt;i&gt;driver&lt;/i&gt; continen un fichero de módulo de &lt;i&gt;kernel linux&lt;/i&gt; (.ko) y un fichero de &lt;i&gt;firmware&lt;/i&gt; (.bin).
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Instalar el fichero de módulo de &lt;i&gt;kernel linux&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;# mv &lt;i&gt;fichero&lt;/i&gt;.ko /lib/modules/&lt;i&gt;version_del_kernel&lt;/i&gt;/kernel/drivers/net/wireless&lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Instalar el fichero de &lt;i&gt;firmware&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;# mv &lt;i&gt;fichero&lt;/i&gt;.bin /lib/firmware/rtlwifi/&lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Añadir el módulo al &lt;i&gt;kernel&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
# depmod -a
# modprobe 8188eu
&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*Si al instalar el driver aparece el mensaje &quot;&lt;b&gt;Exec format error&lt;/b&gt;&quot; es que la versión del driver no es la correcta para el kernel&lt;/i&gt;.
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Configurar la carga automática del módulo&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Editar el fichero &lt;b&gt;&lt;i&gt;/etc/modules&lt;/i&gt;&lt;/b&gt; (como &lt;i&gt;root&lt;/i&gt;) y añadir la línea:
&lt;codigo&gt;8188eu&lt;/codigo&gt;
&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Reiniciar la raspberry&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;# sudo reboot&lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;
&lt;strong&gt;Configurar la red wifi&lt;/strong&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Añadir la configuración al fichero &lt;b&gt;&lt;i&gt;/etc/network/interfaces&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Editar el fichero &lt;b&gt;&lt;i&gt;/etc/network/interfaces&lt;/i&gt;&lt;/b&gt; (como &lt;b&gt;&lt;i&gt;root&lt;/i&gt;&lt;/b&gt;) y añadir las siguientes líneas:
&lt;p&gt;&lt;codigo&gt;
allow-hotplug wlan0&lt;br&gt;
iface wlan0 inet manual&lt;br&gt;
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf&lt;br&gt;
iface default inet dhcp
&lt;/codigo&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Consultar la información sobre la red&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;# iwlist scan&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
Este punto es &lt;b&gt;&lt;u&gt;muy importante&lt;/u&gt;&lt;/b&gt;. Con este comando se podemos consultar toda la información sobre una red wifi al alcance, por si tenemos alguna duda. Los puntos más importantes son los que nos ofrecen información sobre el tipo de cifrado utilizado:
&lt;p&gt;&lt;codigo&gt;
Group Cipher&lt;br&gt;
Pairwise Ciphers&lt;br&gt;
Authentication Suites&lt;br&gt;
&lt;/codigo&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Generar la clave &lt;i&gt;WPA-PSK&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Vamos a generar una clave cifrada, para no dejar la clave de la red en plano en el fichero de configuración.
&lt;/p&gt;
&lt;p&gt;&lt;codigo&gt;# wpa_passphrase &lt;i&gt;essid&lt;/i&gt; &lt;i&gt;passphrase&lt;/i&gt;&lt;/codigo&gt;&lt;/p&gt;
&lt;p&gt;Anotamos la línea: &lt;i&gt;psk=...&lt;/i&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Configurar &lt;i&gt;wpa_supplicant&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;
Editar el fichero de configuración &lt;i&gt;/etc/wpa_supplicant/wpa_supplicant.conf&lt;/i&gt; (O el que hayamos indicado en &lt;i&gt;/etc/networking/interfaces&lt;/i&gt;) y añadir las siguientes líneas:
&lt;/p&gt;
&lt;p&gt;&lt;codigo&gt;
network={&lt;br&gt;
ssid= &lt;i&gt;nuestro_essid&lt;/i&gt;&lt;br&gt;
scan_ssid=1&lt;br&gt;
psk=&lt;i&gt;clave_wpa_psk_generada_antes&lt;/i&gt;&lt;br&gt;
proto=RSN&lt;br&gt;
key_mgmt=WPA-PSK&lt;br&gt;
pairwise=CCMP TKIP&lt;br&gt;
group=CCMP TKIP&lt;br&gt;
 }&lt;br&gt;
&lt;/codigo&gt;&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*En este apartado es dónde cobran importancia los datos sobre el cifrado de la red que hemos apuntado antes. Las configuraciones varían dependiendo del tipo de cifrado utilizado. Se puede encontrar más información en &lt;a href=&quot;http://linux.die.net/man/8/wpa_supplicant&quot;&gt;el man de wpa_supplicant&lt;/a&gt;&lt;/i&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;Levantar la interfaz de red&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;codigo&gt;# ifup interfaz_de_red&lt;/codigo&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Notas:&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
El driver USB utiliza memoria del &lt;i&gt;kernel&lt;/i&gt;, y cuando el tráfico es muy alto, esta memoria se agota y causa cuelgues. Para solucionarlo hay dos alternativas:
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Adelantar la solicitud de memoria de página&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
Para esto hay que editar el fichero &lt;i&gt;/etc/sysctl.conf&lt;/i&gt; y modificar el valor de la línea
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;vm.min_free_kbytes = 8192&lt;/codigo&gt;
&lt;p&gt;
para dejarla:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;vm.min_free_kbytes = 16384&lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Limitar el ancho de banda&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;
Esta opción es la menos apetecible. Pero cuando no hay otra alternativa... Podemos limitar cómodamente el ancho de banda de una tarjeta de red podemos utilizar &lt;i&gt;wondershaper&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;# wondershaper wlan0 &lt;i&gt;kbps_bajada&lt;/i&gt; &lt;i&gt;kbps_subida&lt;/i&gt; &lt;/codigo&gt;
&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Fuentes&lt;/i&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://www.mendrugox.net&quot;&gt;mendrugox.net&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&quot;http://elinux.org/R-Pi_Troubleshooting&quot;&gt;R-Pi Troubleshooting&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2014/07/configurar-tp-link-tl-wn725n-v2-con.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhpi8jfOUFTvhNxXyOtFs9rX5VzwNuNTBv204pv3PkMJ__c0BJOxF5jau1nZT2rFz-uWCysKAS2nsyKVcIHfDW7mnXLUS-JQ27UHzgki-d3OUc9STTuXFNsWOtiDBd52i_j7zmyHFJDCnU/s72-c/raspberry_pi_logo.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-6751953496124525364</guid><pubDate>Sat, 12 Jul 2014 10:17:00 +0000</pubDate><atom:updated>2014-07-12T12:21:21.842+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">xfce4</category><category domain="http://www.blogger.com/atom/ns#">xrandr</category><title>monitor dual en xfce4</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9pw88AJ2KKPh8mHIMZj5ynaIlHZUqkF1Mn5HLnw5LDAPiQDew2e1f48sJyfFhcrkghaoDN4OdBjpTyaK-FGuHIe3fQw73pMvW2XtfiU5F36gqnHwANqZK259KhY_HKQoNs1k1rJ4M6U/s1600/xfce.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9pw88AJ2KKPh8mHIMZj5ynaIlHZUqkF1Mn5HLnw5LDAPiQDew2e1f48sJyfFhcrkghaoDN4OdBjpTyaK-FGuHIe3fQw73pMvW2XtfiU5F36gqnHwANqZK259KhY_HKQoNs1k1rJ4M6U/s200/xfce.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
En ocasiones, a algunos nos resulta útil y cómodo conectar un monitor externo a nuestro portátil. Para otros es la configuración habitual.
&lt;/p&gt;
&lt;p&gt; 
Los que utilizamos &lt;a href=&quot;http://www.xfce.org/&quot;&gt;&lt;b&gt;XFCE4&lt;/b&gt;&lt;/a&gt; como entorno de escritorio, nos encontramos con un problema al conectar un monitor externo a nuestro portátil: Para &lt;b&gt;XFCE4&lt;/b&gt; el monitor principal &lt;b&gt;&lt;i&gt;siempre&lt;/i&gt;&lt;/b&gt; es el que se encuentra a la izquierda. Lo cual puede llegar a ser incómodo si queremos que nuestro monitor principal sea el de la derecha, como es mi caso.
&lt;/p&gt;
&lt;p&gt;
Cuando conecto un monitor externo al portátil, utilizo la pantalla del portátil como monitor principal y el externo como secundario, para lo que surja. Mi idea es: Poder trabajar cómodamente en mi portátil, y, aprovechando que el monitor externo es más grande, poder utilizarlo para colocar en él el navegador, pdfs, vídeos...
&lt;/p&gt;
&lt;p&gt;
Actualmente, mi monitor externo se encuentra situado a la izquierda de mi portátil. El problema es que, al tomar &lt;b&gt;XFCE4&lt;/b&gt; el monitor izquierdo como el principal, tenía que atravesar con el ratón los dos monitores para acceder a los paneles.
&lt;/p&gt;
&lt;p&gt;
Una solución sería configurar el monitor externo como si se encontrase situado a la derecha del portátil. Pero es antiintiutivo, y he de decir, que para mi, demasiado incómodo. La idea de mover las aplicaciones y el ratón hacia la derecha para que aparezcan en el monitor de la izquierda, es algo que no me gusta. Prefiero mover las cosas que quiero visualizar en el monitor de la izquierda hacia la izquierda. Lógico, no? Para conseguir esto, basta con configurar un par de cosas, &lt;strong&gt;xrandr&lt;/strong&gt; y los &lt;strong&gt;paneles de xfce&lt;/strong&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;xrandr&lt;/strong&gt;
&lt;br&gt;
&lt;codigo&gt;xrandr --output VGA1 --auto --left-of LVDS1&lt;/codigo&gt;
&lt;i&gt;*Siendo &lt;b&gt;LVDS1&lt;/b&gt; el monitor del portátil y &lt;b&gt;VGA1&lt;/b&gt; el monitor externo.&lt;/i&gt;
&lt;i&gt;*Este comando se pude guardar en un script para ejecutarlo cuando convenga o al inicio, si es la configuración habitual&lt;/i&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Los paneles de XFCE&lt;/strong&gt; y elegir la opción
&lt;br&gt;
Ir a &lt;i&gt;&lt;b&gt;Menú&gt;Configuración&gt;Panel&lt;/b&gt;&lt;/i&gt; y elegir la opción: &quot;&lt;i&gt;Salida: &lt;b&gt;LVDS1&lt;/b&gt;&lt;/i&gt;&quot;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2014/07/monitor-dual-en-xfce4.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9pw88AJ2KKPh8mHIMZj5ynaIlHZUqkF1Mn5HLnw5LDAPiQDew2e1f48sJyfFhcrkghaoDN4OdBjpTyaK-FGuHIe3fQw73pMvW2XtfiU5F36gqnHwANqZK259KhY_HKQoNs1k1rJ4M6U/s72-c/xfce.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5866687126796227493</guid><pubDate>Sat, 26 Apr 2014 12:07:00 +0000</pubDate><atom:updated>2014-04-26T14:08:53.772+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">git</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">programación</category><title>creando repositorios locales en git</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9oLXU6vXoiWfLpEMxxkBx-M6W_Qq_t9u1PeeHftL3RUVgQ03blfl3MQ4OoITvubTPhJ72i4IdONbrGq8Oc3Q8JNN2sVD4VdOBNwyMApFwYPpriVusrM3Sx-3j_jDb8F9faQ-mYE9efw/s1600/git-logo.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9oLXU6vXoiWfLpEMxxkBx-M6W_Qq_t9u1PeeHftL3RUVgQ03blfl3MQ4OoITvubTPhJ72i4IdONbrGq8Oc3Q8JNN2sVD4VdOBNwyMApFwYPpriVusrM3Sx-3j_jDb8F9faQ-mYE9efw/s200/git-logo.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
Cuando desarrollamos código habitualmente, aunque no sea en equipo, una de las herramientas más útiles de las que disponemos es un &lt;a href=&quot;http://es.wikipedia.org/wiki/Control_de_versiones&quot;&gt;sistema de control de versiones&lt;/a&gt;. Estas herramientas nos permiten controlar diferentes aspectos sobre nuestros proyectos: cambios, versiones, revisiones...
&lt;/p&gt;
&lt;p&gt;
Aunque existen gran cantidad de sistemas de control de versiones, hoy en día uno de los más populares es &lt;a href=&quot;http://es.wikipedia.org/wiki/Git&quot;&gt;git&lt;/a&gt;.
&lt;/p&gt; 
&lt;br&gt;
&lt;p&gt;
Cuando utlizamos una de estas herramientas, lo más habitual es subir y bajar el código del proyecto desde un servidor remoto, ya sea desde el espacio &quot;en la nube&quot; que nos ofrecen algunos servicios o desde otro equipo en el que se centralizan los desarrollos. Aunque el &lt;a href=&quot;http://es.wikipedia.org/wiki/Git&quot;&gt;modelo cliente-servidor&lt;/a&gt; es la idea principal en la que se basan estos sistemas, en muchas ocasiones tendremos proyectos que no queramos añadir al servidor, o no dispondremos de un servidor o de una conexion a internet. En estos casos, para no perder la versatilidad que nos ofrecen los sistemas de control de versiones sobre el desarrollo, es muy útil disponer de un repositorio en la máquina local con el que poder trabajar.
&lt;/p&gt;
&lt;p&gt;
Para crear un repositorio de &lt;i&gt;git&lt;/i&gt; remoto en nuestra máquina (&quot;en local&quot;), primero deberemos crear un directorio que albergará todos los proyectos que queramos controlar:
&lt;codigo&gt;$ mkdir /ruta/.gitLocal&lt;/codigo&gt;
&lt;i&gt;*Yo lo dejo oculto para no verlo cada vez que entro en mi directorio de desarrollo&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
Después deberemos crear un repositorio para cada proyecto e inicializarlo:
&lt;codigo&gt;$ mkdir /ruta/.gitLocal/nombre_proyecto.git
&lt;br&gt;$ cd /ruta/.gitLocal/nombre_proyecto.git
&lt;br&gt;$ git init --bare --shared&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
Una vez creado e inicializado el repositorio remoto del proyecto, debemos ir al repositorio de trabajo del proyecto (es el directorio donde está el código -si ya existe alguno- o donde iremos desarrollando el proyecto) e inicializarlo
&lt;codigo&gt;
$ cd /ruta_desarrollo/nombre_proyecto/
&lt;br&gt;$ git init&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
En el caso de que ya exista código, deberemos añadir los ficheros y su primer &lt;i&gt;commit&lt;/i&gt;:
&lt;codigo&gt;$ git add .&lt;/codigo&gt;
&lt;i&gt;*Con &quot;.&quot; añadiremos todos los ficheros en el directorio actual.&lt;/i&gt;
&lt;br&gt;&lt;i&gt;*Si queremos ignorar ciertos archivos (por ejemplo ficheros de salida), tendremos que crear el fichero .&lt;i&gt;gitignore&lt;/i&gt; y poner dentro que ficheros/directorios queremos ignorar.&lt;/i&gt;
&lt;codigo&gt;$ git commit -m &quot;primer commit ;)&quot;&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt; 
Por último, deberemos &quot;subir&quot; los archivos del proyecto a nuestro repositorio remoto (en local):
&lt;codigo&gt;$ git remote add origin /ruta/.gitLocal/nombre_proyecto.git
&lt;br&gt;$ git push origin master&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
Una vez que tenemos todo listo para empezar a trabajar con nuestro repositorio remoto en local, podemos comprobar que todo funciona correctamente yendo a un directorio cualquiera (por ejemplo &lt;i&gt;/tmp&lt;/i&gt;) y clonando uno de los repositorios de nuestros proyectos:
&lt;codigo&gt;$ git clone /ruta/.gitLocal/nombre_proyecto.git&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2014/04/creando-repositorios-locales-en-git.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQ9oLXU6vXoiWfLpEMxxkBx-M6W_Qq_t9u1PeeHftL3RUVgQ03blfl3MQ4OoITvubTPhJ72i4IdONbrGq8Oc3Q8JNN2sVD4VdOBNwyMApFwYPpriVusrM3Sx-3j_jDb8F9faQ-mYE9efw/s72-c/git-logo.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5706245375408708923</guid><pubDate>Sun, 16 Feb 2014 20:30:00 +0000</pubDate><atom:updated>2014-02-21T12:56:55.212+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">nfs</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>compartiendo archivos en red con NFSv4 en debian</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnUgMH4aSuTKpg_HbXKGR2FuQXAlxL8tjaltl5KbalUENTuJ8TCtn7t9m5WtVDXgpYJmpNClT4-n-sv5ZB62ic93Hxk5JPFkK9b5yQSejjOmkv5zGofkyenQ431n4-kejxaGc5EZmFWI/s1600/rheve-tux-ouvrier.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnUgMH4aSuTKpg_HbXKGR2FuQXAlxL8tjaltl5KbalUENTuJ8TCtn7t9m5WtVDXgpYJmpNClT4-n-sv5ZB62ic93Hxk5JPFkK9b5yQSejjOmkv5zGofkyenQ431n4-kejxaGc5EZmFWI/s200/rheve-tux-ouvrier.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
&lt;a href=&quot;http://es.wikipedia.org/wiki/Network_File_System&quot;&gt;NFS (Network File System)&lt;/a&gt; es un protocolo utilizado para compartir archivos en red. Posibilita que sistemas distintos, conectados a la misma red, puedan acceder a ficheros remotos como si fuesen locales. Este protocolo está incluido por defecto en los sistemas operativos &lt;i&gt;UNIX&lt;/i&gt; y en la mayoría de distribuciones &lt;i&gt;GNU/Linux&lt;/i&gt;. 
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;NFS&lt;/i&gt; es un protocolo cliente-servidor. El servidor comparte los recursos y el cliente (o clientes) puede acceder a los recursos. El acceso a los recursos es totalmente transparente para el cliente y todas las operaciones son síncronas. Es decir, una operación sólo retorna cuando el servidor ha completado todo el trabajo asociado.
&lt;/p&gt;
&lt;p&gt;
La versión 4 de &lt;i&gt;NFS&lt;/i&gt; (&lt;i&gt;NFSv4&lt;/i&gt;) fue publicada en abril de 2003 y &lt;b&gt;*&lt;i&gt;no&lt;/i&gt;*&lt;/b&gt; es compatible con las versiones anteriores.
&lt;/p&gt;
&lt;p&gt;
El uso de &lt;i&gt;NFS&lt;/i&gt;, presenta una serie de ventajas e inconvenientes que tendremos que tener presentes antes de decidirnos a implementar esta tecnología:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Ventajas&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Fácil de instalar y configurar&lt;/b&gt;
&lt;br&gt;Respecto a la &lt;b&gt;instalación&lt;/b&gt;: Todos los archivos necesarios deberían estar disponibles en los repositorios de la distribución, llegando a estar instalado por defecto en muchas de ellas.
&lt;br&gt;Respecto a la &lt;b&gt;configuración&lt;/b&gt;: En el lado del servidor, editando un único fichero se definen los recursos a compartir, las direcciones &lt;i&gt;IP&lt;/i&gt; que pueden acceder a dicho recurso y los permisos que los clientes tendrán sobre éste. En la parte del cliente (si queremos que los recursos remotos se monten automáticamente, por ejemplo durante el arranque) sólo tendremos que editar el fichero &lt;i&gt;/etc/fstab&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Más rápido que &lt;i&gt;SSH&lt;/i&gt;&lt;/b&gt;
&lt;br&gt;&lt;a href=&quot;http://wdtvforum.com/main/index.php?topic=5393.0&quot;&gt;&lt;i&gt;NFS&lt;/i&gt; llega a ser un &lt;b&gt;30% más rápido que SSH&lt;/b&gt;&lt;/a&gt;
&lt;br&gt;&lt;i&gt;&lt;strike&gt;*Aunque en las pruebas que yo he realizado se aproximaba más al 25% (sin optimizaciones).&lt;/strike&gt;&lt;/i&gt;
&lt;br&gt;&lt;i&gt;*Después de configurar correctamente los usuarios, en mis pruebas, sí que resulta un 30% más rápido. Además consume la mitad de CPU que SSH.&lt;/i&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fácil de utlizar&lt;/b&gt;
&lt;br&gt;Si nos encontramos en un escenario donde la persona que utiliza la máquina cliente es un usuario normal, al poder montar el recurso compartido como si fuese un recurso local más, su acceso será trivial y el usuario no tendrá la necesidad de complicarse aprendiendo a utilizar tecnologías como &lt;i&gt;SSH&lt;/i&gt;, &lt;i&gt;FTP&lt;/i&gt;, &lt;i&gt;rsync&lt;/i&gt; o similares.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Desventajas&lt;/strong&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;&lt;i&gt;NFSv4&lt;/i&gt; no es compatible con las versiones anteriores&lt;/b&gt;
&lt;br&gt;En la realidad nos encontramos con que, en algunos casos, se siguen utilizando &lt;i&gt;NFSv2&lt;/i&gt; y &lt;i&gt;NFSv3&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Transmisión en plano&lt;/b&gt;
&lt;br&gt;&lt;i&gt;NFS&lt;/i&gt; no va cifrado. En caso de encontrarnos en una red no fiable, o sobre la que pueda llegar a ser objetivo de ataques, sería más conveniente utilizar &lt;i&gt;SSH&lt;/i&gt;, que al ir cifrado añade una capa de seguridad a las transmisiones.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Restricciones de acceso en base a la &lt;i&gt;IP&lt;/i&gt;&lt;/b&gt;
El servidor restringe el acceso a los recursos en base a la dirección &lt;i&gt;IP&lt;/i&gt; de los clientes, pero estas direcciones pueden ser falsificadas con relativa facilidad. Una buena alternativa a esto sería utilizar &lt;a href=&quot;http://rubenhortas.blogspot.com.es/2013/09/ssh-sin-contrasena-utilizando-claves-rsa.html&quot;&gt;&lt;i&gt;SSH&lt;/i&gt; con claves &lt;i&gt;RSA&lt;/i&gt;&lt;/a&gt; y/o un &lt;i&gt;firewall&lt;/i&gt; bloqueando las falsificaciones de &lt;i&gt;IP&lt;/i&gt; (&lt;i&gt;ip spoofing&lt;/i&gt;).
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;El acceso de &lt;i&gt;root&lt;/i&gt;&lt;/b&gt;
&lt;br&gt;Si el servidor &lt;i&gt;NFS&lt;/i&gt; está mal configurado, un cliente que utilice el usuario &lt;i&gt;root&lt;/i&gt; para acceder al recurso podrá acceder a todos los archivos, ya que el servidor confía en el nombre de usuario que le da el cliente.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;h2&gt;&lt;strong&gt;Configurando NFSv4&lt;/strong&gt;&lt;/h2&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;El servidor&lt;/strong&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;b&gt;Instalar nfs-kernel-server&lt;/b&gt;
&lt;br&gt;&lt;codigo&gt;$ sudo aptitude install nfs-kernel-server&lt;/codigo&gt;
&lt;i&gt;*&lt;i&gt;NFS&lt;/i&gt; se basa en &lt;i&gt;RPC&lt;/i&gt;. Si no disponemos de un gestor de paquetes o éste no instala &lt;i&gt;RPC&lt;/i&gt;, deberemos instalarlo manualmente.&lt;/i&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Editar los ficheros &lt;strong&gt;&lt;i&gt;/etc/default/nfs-kernel-server&lt;/i&gt;&lt;/strong&gt; y &lt;strong&gt;&lt;i&gt;/etc/default/nfs-common&lt;/strong&gt;&lt;/i&gt;&lt;/b&gt;
&lt;br&gt;Editar estos ficheros sólo debería ser necesario en caso de disponer (en el servidor) de un &lt;i&gt;firewall&lt;/i&gt; basado en puertos (&lt;i&gt;port-based firewall&lt;/i&gt;), del protocolo de autenticación &lt;i&gt;Kerberos&lt;/i&gt; o de querer securizar &lt;i&gt;NFS&lt;/i&gt;. Estos ficheros son auto explicativos, por lo que no voy a detallar su configuración. En &lt;a href=&quot;https://wiki.debian.org/SecuringNFS&quot;&gt;https://wiki.debian.org/SecuringNFS&lt;/a&gt; podremos consultar más información sobre cómo securizar el servidor &lt;i&gt;NFS&lt;/i&gt;.
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Configurar el fichero /etc/exports&lt;/b&gt;
&lt;br&gt;En este fichero se configurarán los directorios compartidos (exportados). La sintaxis es simple:
&lt;br&gt;&lt;codigo&gt;/foo/bar maquina1(opcion1,opcion2,...) maquina2(...) ...&lt;/codigo&gt;
Como podermos ver en los ejemplos de &lt;i&gt;/etc/exports&lt;/i&gt;:
&lt;codigo&gt;/srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)&lt;/codigo&gt;
Para conocer en detalle las opciones disponibles, y su funcionamiento, podemos consultar el &lt;i&gt;man&lt;/i&gt;, donde también podremos encontrar opciones para mejorar el rendimiento.
&lt;codigo&gt;$ man exports&lt;/codigo&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Reiniciar el servidor&lt;/b&gt;
&lt;br&gt;Una vez que los cambios están hehos, deberemos aplicarlos, bien reiniciando el servidor:
&lt;br&gt;&lt;codigo&gt;$ sudo /etc/init.d/nfs-kernel-server start&lt;/codigo&gt;
O bien, mefiante el comando &lt;i&gt;exportfs&lt;/i&gt;:
&lt;br&gt;&lt;codigo&gt;$ sudo exportfs -r&lt;/codigo&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;El cliente&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;b&gt;Instalar el paquete nfs-common&lt;/b&gt;
&lt;codigo&gt;$ sudo aptitude install nfs-common&lt;/codigo&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Montar el recurso remoto&lt;/b&gt;
&lt;br&gt;Podemos montar el recurso remoto manualmente, mediante el comando &lt;i&gt;mount&lt;/i&gt;:
&lt;codigo&gt;$ sudo mount -t nfs &lt;i&gt;servidor&lt;/i&gt;:/ &lt;i&gt;/foo/bar&lt;/i&gt;&lt;/codigo&gt;
&lt;i&gt;
* A &lt;b&gt;mount&lt;/b&gt; le podremos pasar todas las opciones que consideremos oportunas.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;O, también, podremos añadir el recurso remoto en el fichero &lt;i&gt;/etc/fstab&lt;/i&gt; para montarlo más cómodamente o durante el arranque:
&lt;codigo&gt;&lt;i&gt;servidor&lt;/i&gt;:/ &lt;i&gt;/foo/bar/&lt;/i&gt; nfs &lt;i&gt;opciones&lt;/i&gt; 0 0&lt;/codigo&gt;
&lt;i&gt;
* &lt;b&gt;servidor&lt;/b&gt;: El nombre del servidor (si lo tenemos añadido en hosts), la URI o la dirección IP del servidor. 
&lt;br&gt;* &lt;b&gt;/foo/bar&lt;/b&gt;: El punto de montaje local.
&lt;br&gt;* &lt;b&gt;opciones&lt;/b&gt;: Opciones de montaje.&lt;/i&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2014/02/compartiendo-archivos-en-red-con-nfsv4.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEnUgMH4aSuTKpg_HbXKGR2FuQXAlxL8tjaltl5KbalUENTuJ8TCtn7t9m5WtVDXgpYJmpNClT4-n-sv5ZB62ic93Hxk5JPFkK9b5yQSejjOmkv5zGofkyenQ431n4-kejxaGc5EZmFWI/s72-c/rheve-tux-ouvrier.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-8246502136023538216</guid><pubDate>Mon, 10 Feb 2014 13:07:00 +0000</pubDate><atom:updated>2014-02-10T14:07:31.528+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">backups</category><category domain="http://www.blogger.com/atom/ns#">badblocks</category><category domain="http://www.blogger.com/atom/ns#">discos_duros</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">monitorizacion</category><category domain="http://www.blogger.com/atom/ns#">recovering</category><category domain="http://www.blogger.com/atom/ns#">smart</category><category domain="http://www.blogger.com/atom/ns#">smartctl</category><category domain="http://www.blogger.com/atom/ns#">testdisk</category><title>reparando errores del disco duro (gnu/linux)</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s1600/doctor-tux.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s200/doctor-tux.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;
¿Quién no ha sufrido algún error de disco duro alguna vez? Muchos optan por rendirse ante esta situación, aunque, en realidad, en muchos casos la información puede llegar a recuperarse totalmente, o podemos llegar a ganar algo de tiempo extra de utilización para ese disco. ¿Y quien no quiso en esa situación más tiempo para poder realizar una copia de seguridad o para poder seguir utilizando el equipo mientras no tiene otro disco?
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
Cuando hablamos de erroes en discos duros, lo primero que tenemos que hacer es distinguir entre &lt;b&gt;errores lógicos y físicos&lt;/b&gt;. Los errores lógicos son los producidos a nivel de &lt;i&gt;software&lt;/i&gt; (un superbloque corrupto, una partición eliminada, etc), mientras que los errores físicos son aquellos que se producen a nivel de &lt;i&gt;hardware&lt;/i&gt;, daños directos en el disco (sectores, platos o mecanismos dañados).
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Errores lógicos&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Los errores lógicos suelen ser los más fácilmente recuperables, mientras no se haya formateado la partición. En este último caso ya tendríamos que utilizar herramientas específicas de recuperación de datos y ver qué información se puede salvar.
&lt;br&gt;Dentro de los errores más comunes que nos encontramos en este apartado se encuentran tablas FAT o superbloques corruptos, particiones eliminadas, o sectores de arranque dañados o eliminados. Para reparar este tipo de errores mi herramienta preferida es &lt;a href=&quot;http://www.cgsecurity.org/wiki/TestDisk&quot;&gt;testdisk&lt;/a&gt;. &lt;a href=&quot;http://www.cgsecurity.org/wiki/TestDisk&quot;&gt;Testdisk&lt;/a&gt; es capaz de solucionar todos estos problemas (y algunos más) en un tiempo espectacularmente breve y, todo ello, siendo multiplataforma. Incluso dando soporte a sistemas RAID. En alguna ocasión, para estas tareas, también he utilizado &lt;a href=&quot;http://gparted.org/&quot;&gt;gparted&lt;/a&gt; (que además dispone de &lt;a href=&quot;http://gparted.org/livecd.php&quot;&gt;una distribución en modo &lt;i&gt;live&lt;/i&gt;&lt;/a&gt;). Y, aunque ha funcionado correctamente, he de confesar que me sentí un poco como Indiana Jones cuando cambiaba la estatuilla de oro por un saco de arena ;)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Errores físicos&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Dentro de los errores físicos, principalmente nos podemos encontrar dos escenarios: Un disco duro con errores graves o un disco duro con algunos sectores dañados.
&lt;p&gt;
Si nos encontramos en el primer caso (un disco duro con el motor quemado o con platos rallados), lo único que podríamos hacer es sustituir estas piezas. Para ello habría que recurrir a empresas especializadas y sería sustancialmente caro. Por lo que deberíamos evaluar si el coste compensa la recuperación de la información perdida. &lt;/p&gt;
&lt;p&gt;Cuando nos encontramos en el segundo caso (un disco con sectores dañados), es obvio que el disco empieza a fallar, lo más probable es que el fallo total sea sólo cuestión de tiempo. Lo primero que deberemos hacer es una copia de seguridad (o &lt;i&gt;backup&lt;/i&gt;). Lo segundo, intentar reparar los errores. 
&lt;/p&gt;
&lt;p&gt;
Para reparar este tipo de errores yo utilizo  &lt;a href=&quot;http://francisconi.org/linux/comandos/e2fsck&quot;&gt;e2fsck&lt;/a&gt; en combinación con &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt;. &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;Badblocks&lt;/a&gt; (incluido en el proyecto &lt;a href=&quot;http://e2fsprogs.sourceforge.net/&quot;&gt;e2fsprogs&lt;/a&gt;) genera una lista de los sectores dañados de un disco. Su principal ventaja es que esta lista puede ser leída por otras herramientas y que puede trabajar conjuntamente con &lt;a href=&quot;http://francisconi.org/linux/comandos/e2fsck&quot;&gt;e2fsck&lt;/a&gt;. Utilizando &lt;a href=&quot;http://francisconi.org/linux/comandos/e2fsck&quot;&gt;e2fsck&lt;/a&gt; conjuntamente con &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt; mediante el comando: &lt;codigo&gt;# e2fsck -c /foo/bar/&lt;/codigo&gt; podremos localizar y aislar los sectores defectuosos del disco, añadiéndolos automáticamente al inodo &lt;i&gt;bad block&lt;/i&gt; para que no puedan ser utilizados por ningún fichero. Con esto habremos ganado algo de tiempo y podremos seguir utilizando el disco, sin preocuparnos por la corrupción de datos hasta su próximo fallo o su fallo total.
&lt;/p&gt;
&lt;p&gt;
Lo ideal es prevenir este tipo de fallos, y para ello es recomendable realizar tests periódicamente con &lt;a href=&quot;http://smartmontools.sourceforge.net/man/smartctl.8.html&quot;&gt;smartctl&lt;/a&gt; y/o &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt;.
&lt;br&gt;&lt;a href=&quot;http://smartmontools.sourceforge.net/man/smartctl.8.html&quot;&gt;Smartctl&lt;/a&gt; (incluído en el paquete &lt;a href=&quot;http://sourceforge.net/apps/trac/smartmontools/wiki&quot;&gt;smartmontools&lt;/a&gt;) controla y monitoriza la información &lt;a href=&quot;http://en.wikipedia.org/wiki/S.M.A.R.T.&quot;&gt;S.M.A.R.T.&lt;/a&gt; (&lt;b&gt;S&lt;/b&gt;elf-&lt;b&gt;M&lt;/b&gt;onitoring &lt;b&gt;A&lt;/b&gt;nalysis  and &lt;b&gt;R&lt;/b&gt;eporting &lt;b&gt;T&lt;/b&gt;echnology), una tecnología incluida en la mayoría de los discos duros. En mi opinión, es recomendable complementar estos test con &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt;, ya que más de una vez &lt;a href=&quot;http://en.wikipedia.org/wiki/S.M.A.R.T.&quot;&gt;S.M.A.R.T.&lt;/a&gt; me ha devuleto un estado correcto para un disco duro dañado.
&lt;/p&gt;
&lt;p&gt;
Aunque los test realizados por &lt;a href=&quot;http://smartmontools.sourceforge.net/man/smartctl.8.html&quot;&gt;smartctl&lt;/a&gt;, se pueden realizar &quot;en caliente&quot; y sobre particiones montadas, los tests basados en &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt; es recomendable realizarlos sobre particiones desmontadas. Aunque dependiendo del test y del caso en particular se podrían realizar sobre particiones montadas en modo sólo lectura (&lt;i&gt;&quot;read only&quot;&lt;/i&gt; o &lt;i&gt;&quot;ro&quot;&lt;/i&gt;).
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*La duración de estos test va a depender de diversos factores. &lt;a href=&quot;http://smartmontools.sourceforge.net/man/smartctl.8.html&quot;&gt;Smartctl&lt;/a&gt; dispone de test rápidos y tests largos, mientras que la duración de los test realizados por &lt;a href=&quot;http://es.wikipedia.org/wiki/Badblocks#Opci.C3.B3n_.22-c.22&quot;&gt;badblocks&lt;/a&gt; va a depender de la cantidad de datos almaceados en el disco.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;
Happy recovering! ;)
&lt;/i&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2014/02/reparando-errores-del-disco-duro.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s72-c/doctor-tux.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5117737604077431188</guid><pubDate>Sun, 15 Dec 2013 20:35:00 +0000</pubDate><atom:updated>2013-12-15T21:35:00.544+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cine/tv</category><category domain="http://www.blogger.com/atom/ns#">github</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">mplayer</category><category domain="http://www.blogger.com/atom/ns#">performance</category><category domain="http://www.blogger.com/atom/ns#">python</category><category domain="http://www.blogger.com/atom/ns#">rtmp</category><title>ver la televisión en ordenadores viejos con gnu/linux (SIN FLASH)</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHmeuhBWpjDVM7vxoQshBc2_Kg6i_xFrTgU5TIt_DvqV1aYA2tn00Jekh0dxQz3DGe6ipdoDANw5byhLjWdzMbA4hkvzGPA8kk5NUp7du8qgj1HbvII66cUxJZUdJpxcRrU1gEHd_00GA/s1600/1909004786_1181e9b1e2.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHmeuhBWpjDVM7vxoQshBc2_Kg6i_xFrTgU5TIt_DvqV1aYA2tn00Jekh0dxQz3DGe6ipdoDANw5byhLjWdzMbA4hkvzGPA8kk5NUp7du8qgj1HbvII66cUxJZUdJpxcRrU1gEHd_00GA/s200/1909004786_1181e9b1e2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
A día de hoy, es normal que las televisiones emitan su programación &lt;i&gt;online&lt;/i&gt;. El problema viene cuando nuestro ordenador es viejo y/o utilizamos como sistema operativo &lt;i&gt;GNU/Linux&lt;/i&gt;. Por una parte, si el ordenador es viejo, es poco potente y &lt;a href=&quot;http://www.adobe.com/products/flashplayer/tech-specs.html&quot;&gt;los requisitos que impone &lt;i&gt;Adobe&lt;/i&gt;&lt;/a&gt; no permiten instalar &lt;i&gt;Flash Player&lt;/i&gt; en el equipo*. Por otra parte, están &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdNGbXHx779DYO6Kwz-Qj-Btyt9v3h1oGn2EsALryAiSZwogfAFSO-9dkYKbCd2z1h7EcnqUYA3dNwN9xWNZbo0KdT61hHj4xzWepaOS7zsNSu5NJU-EpbNfWtqn_IhV5IZyJhAFBUQOE/s200/flash.png&quot;&gt;las trabas que &lt;i&gt;Adobe&lt;/i&gt; nos pone a los usuarios de GNU/Linux&lt;/a&gt;. 
&lt;br&gt;
&lt;br&gt;
&lt;i&gt;* Hay algunos usuarios que optan por instalar versiones antiguas de &lt;i&gt;Flash Player&lt;/i&gt;. Esto supone un &lt;strong&gt;gran fallo de seguridad&lt;/strong&gt;. Puesto que son versiones obsoletas, con numerosas vulnerabilides reportadas y, en muchos casos, explotadas con éxito.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
En mi caso, el equipo que utilizo como sobremesa, es muy viejo. Se trata de un &lt;i&gt;Duron&lt;/i&gt; a 1.3Ghz con &lt;i&gt;Debian GNU/Linux&lt;/i&gt; como sistema operativo, por lo que ya no podría instalar &lt;i&gt;Flash Player&lt;/i&gt;. Aunque tengo el sistema operativo [&lt;i&gt;muy&lt;/i&gt;] optimizado, probé algunas alternativas (&lt;a href=&quot;http://www.gnu.org/software/gnash/&quot;&gt;&lt;i&gt;gnash&lt;/i&gt;&lt;/a&gt;, &lt;a href=&quot;http://www.tvenlinux.com/&quot;&gt;&lt;i&gt;TVenLinux&lt;/i&gt;&lt;/a&gt;...) y no conseguí, con ninguna, unos resultados satisfactorios. 
&lt;/p&gt;
&lt;p&gt;
Después de analizar el problema, he probado a saltarme los &quot;intermediarios&quot; y he conseguido el resultado esperado, poder ver la televisión &lt;i&gt;online&lt;/i&gt; desde mi viejo equipo.
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;El problema&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
El problema es el siguiente: Para ver una televisión &lt;i&gt;online&lt;/i&gt; se necesitan bastantes &quot;intermediarios&quot;, un &lt;i&gt;plugin&lt;/i&gt; de &lt;i&gt;flash&lt;/i&gt; que estará dentro de un &lt;i&gt;javascript&lt;/i&gt;, que estará dentro de una página &lt;i&gt;web&lt;/i&gt;, que estará dentro de un navegador... Demasiada &lt;i&gt;CPU&lt;/i&gt; requerida. Un equipo con una potencia limitada es, simplemente, incapaz.
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;La solución&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.mplayerhq.hu/design7/info.html&quot;&gt;&lt;i&gt;mplayer&lt;/i&gt;&lt;/a&gt; (en mi caso sin interfaz) reproduciendo el &lt;i&gt;streaming&lt;/i&gt; de vídeo directamente.&lt;br&gt;
&lt;i&gt;mplayer&lt;/i&gt; es muy ligero, y es capaz de reproducir emisiones realizadas a través del &lt;a href=&quot;http://en.wikipedia.org/wiki/Real_Time_Messaging_Protocol&quot;&gt;protocolo RTMP&lt;/a&gt;. &lt;i&gt;RTMP&lt;/i&gt; es un protocolo diseñado por &lt;i&gt;Macromedia&lt;/i&gt; (que ahora pertenece a &lt;i&gt;Adobe&lt;/i&gt;) para transmitir vídeo, audio y datos a través de internet. Así que, básicamente, con &lt;i&gt;mplayer&lt;/i&gt; podremos reproducir cualquier contenido que se pueda visualizar con &lt;i&gt;Flash Player&lt;/i&gt; (sí, incluso vídeos de youtube). 
&lt;/p&gt;
&lt;p&gt;
Conseguir la dirección del &lt;i&gt;streaming&lt;/i&gt; mediante &lt;i&gt;RTMP&lt;/i&gt; es un proceso trivial utilizando algún &lt;i&gt;sniffer&lt;/i&gt; como &lt;a href=&quot;http://www.wireshark.org/&quot;&gt;&lt;i&gt;Wireshark&lt;/i&gt;&lt;/a&gt; o &lt;a href=&quot;http://www.tcpdump.org/&quot;&gt;&lt;i&gt;tcpdump&lt;/i&gt;&lt;/a&gt;. Las complicaciones pueden aparecer después, según el tipo de seguridad que implemente la web (&lt;i&gt;ID&lt;/i&gt;, &lt;i&gt;tokens&lt;/i&gt;...). En este último caso, se podría utilizar &lt;i&gt;rtmpdump&lt;/i&gt; para capturar el &lt;i&gt;streaming&lt;/i&gt; a un fichero, y, luego, reproducir éste con &lt;i&gt;mplayer&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Una vez obtenida la dirección, sólo tendremos que pasársela a &lt;i&gt;mplayer&lt;/i&gt; como argumento.&lt;br&gt;
&lt;br&gt;
Para agilizar el proceso he creado un pequeño &lt;i&gt;script&lt;/i&gt; en &lt;i&gt;python&lt;/i&gt;. Como esto es simplemente una prueba, sólo he añadido algunos de los principales canales de televisión &lt;i&gt;online&lt;/i&gt;, que no presentaban mayor complicación en lo referente a la obtención de la &lt;i&gt;URL&lt;/i&gt; del &lt;i&gt;RTMP&lt;/i&gt;. He subido el &lt;i&gt;script&lt;/i&gt; a &lt;a href=&quot;https://github.com/rubenhortas&quot;&gt;mi cuenta en &lt;i&gt;github&lt;/i&gt;&lt;/a&gt;, por si queréis probarlo, modificarlo, y/o añadirle algo: &lt;a href=&quot;https://github.com/rubenhortas/pytv&quot;&gt;https://github.com/rubenhortas/pytv&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;Ventajas&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Ver de esta forma la televisión &lt;i&gt;online&lt;/i&gt;, presenta varias ventajas, entre ellas:
&lt;ul&gt;
&lt;li&gt;Tendremos televisión en nuestro viejo equipo &gt;;)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;No hay que utilizar &lt;i&gt;Flash Player&lt;/i&gt;&lt;/b&gt; (gracias por &lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdNGbXHx779DYO6Kwz-Qj-Btyt9v3h1oGn2EsALryAiSZwogfAFSO-9dkYKbCd2z1h7EcnqUYA3dNwN9xWNZbo0KdT61hHj4xzWepaOS7zsNSu5NJU-EpbNfWtqn_IhV5IZyJhAFBUQOE/s200/flash.png&quot;&gt;tu soporte para gnu/linux, Adobe&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Menor consumo de CPU. 
&lt;br&gt;Aún en equipos que dispongan de la suficiente potencia, la reducción de uso de CPU es considerablemente notable.&lt;/li&gt;
&lt;li&gt;Emisión ininterrumpida (sin cortes).
&lt;br&gt;Es decir, que aunque no haya emisiones disponibles vía &lt;i&gt;web&lt;/i&gt;, por lo que he podido comprobar, para nosotros sí estará disponible.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Así que, si eres de los que, como a mi, nos gusta tener ruido de fondo mientras realizamos alguna tarea que no requiera mayor anteción, o simplemente te gustaría ver alguno de tus programas favoritos en tu viejo equipo...
&lt;br&gt;
&lt;br&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;

 </description><link>http://rubenhortas.blogspot.com/2013/12/ver-la-television-en-ordenadores-viejos.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHmeuhBWpjDVM7vxoQshBc2_Kg6i_xFrTgU5TIt_DvqV1aYA2tn00Jekh0dxQz3DGe6ipdoDANw5byhLjWdzMbA4hkvzGPA8kk5NUp7du8qgj1HbvII66cUxJZUdJpxcRrU1gEHd_00GA/s72-c/1909004786_1181e9b1e2.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-1101859675809615320</guid><pubDate>Sun, 01 Dec 2013 20:30:00 +0000</pubDate><atom:updated>2013-12-02T23:25:09.984+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">alsa</category><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">isight</category><category domain="http://www.blogger.com/atom/ns#">macbook</category><category domain="http://www.blogger.com/atom/ns#">microfono</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><title>configurar la isight y el micrófono de un macbook en debian</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9i8R6fNdM1TwNoIK3aKTDkNSiVmUFRvalzlM5Dk34eEDiln_OvilFlwXs7V8UviiWr64U0TXtDC1RL-TxoiIQwmJd9PVQiO24WBqU3JuD7zhd07g8D76uk2mapif4NnbYr9WKt0YZvkc/s1600/210px-Openlogo-debianV2.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9i8R6fNdM1TwNoIK3aKTDkNSiVmUFRvalzlM5Dk34eEDiln_OvilFlwXs7V8UviiWr64U0TXtDC1RL-TxoiIQwmJd9PVQiO24WBqU3JuD7zhd07g8D76uk2mapif4NnbYr9WKt0YZvkc/s200/210px-Openlogo-debianV2.svg.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
&lt;br&gt;
&lt;br&gt;
La verdad es que yo no era de los que ponían el trozo de cinta tapando la cámara. Como no la necesitaba, directamente no le instalaba el driver. Y el micrófono, siempre en mute. Pero por &lt;i&gt;causalidades&lt;/i&gt; de la vida, he tenido que configurar las dos cosas. Así que, aquí dejo un &lt;i&gt;howto&lt;/i&gt; rapidito ;)
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;iSight&lt;/strong&gt;&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Para configurar la &lt;i&gt;iSight&lt;/i&gt;, después de leerme unos cuantos post, he llegado a este: &lt;a href=&quot;http://askubuntu.com/questions/100527/how-to-fix-webcam-on-macbook-pro-5-5&quot;&gt;http://askubuntu.com/questions/100527/how-to-fix-webcam-on-macbook-pro-5-5&lt;/a&gt;, que funciona perfectamente. Y por eso he decidido copiarlo, reproducirlo, ampliarlo, traducirlo, adaptarlo y referenciarlo aquí ;)
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;1) Encontrar el driver para &lt;i&gt;iSight&lt;/i&gt; de &lt;i&gt;Mac OS X&lt;/i&gt;&lt;/b&gt;
&lt;ul&gt;
&lt;li&gt;
Si tenemos &lt;i&gt;OS X&lt;/i&gt; instalado
&lt;br&gt;
Con la partición de &lt;i&gt;OS X&lt;/i&gt; montada (en este ejemplo en &lt;i&gt;/mnt/osx&lt;/i&gt;), copiarlo a algún directorio del &lt;i&gt;/home&lt;/i&gt; (por ejemplo) donde queramos trabajar
&lt;br&gt;
&lt;codigo&gt;$ sudo /mnt/macosx/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport /home/rubenhortas/descargas/isight&lt;/codigo&gt;
&lt;/li&gt;
&lt;li&gt;
Si &lt;b&gt;no&lt;/b&gt; tenemos &lt;i&gt;OS X&lt;/i&gt; instalado
&lt;br&gt;
Averiguar de qué modelo de &lt;i&gt;macbook&lt;/i&gt; se trata:
&lt;br&gt;
&lt;codigo&gt;$ sudo dmidecode | grep -i &quot;product name&quot;&lt;/codigo&gt;
&lt;br&gt;
Una búsqueda rápida en google del tipo &quot;&lt;i&gt;isight driver macbook &lt;modelo&gt;&lt;/i&gt;&quot; nos devolverá unos cuantos resultados. Yo he usado este driver en un macbook 4,1: &lt;a href=&quot;dl.getdropbox.com/u/332246/AppleUSBVideoSupport&quot;&gt;dl.getdropbox.com/u/332246/AppleUSBVideoSupport&lt;/a&gt; . Aunque en principio es para un macbook 5,5, en el 4,1 funciona perfectamente.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt; 
&lt;b&gt;2) Instalar isight-firmware-tools&lt;/b&gt;
&lt;br&gt;Este paquete contiene herramientas para extraer el &lt;i&gt;firmware&lt;/i&gt; del &lt;i&gt;driver&lt;/i&gt; de la &lt;i&gt;iSight&lt;/i&gt;, instalar y configurar todo lo necesario para configurar el &lt;i&gt;firmware&lt;/i&gt; cuando sea necesario.
&lt;br&gt;
&lt;codigo&gt;$ sudo aptitude install isight-firmware-tools&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;2) Copiar el driver a /lib/firmware&lt;/b&gt;
&lt;br&gt;&lt;codigo&gt;$ sudo cp /home/rubenhortas/descargas/isight/AppleUSBVideoSupport /lib/firmware/&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;3) Instalar el firmware:&lt;/b&gt;
&lt;br&gt;&lt;codigo&gt;$ sudo ift-extract -a /lib/firmware/AppleUSBVideoSupport&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;4) Añadir el módulo a acpi-support&lt;/b&gt;
&lt;br&gt;
&lt;codigo&gt;$ sudo vim /etc/default/acpi-support&lt;/codigo&gt;
&lt;br&gt;Buscar &quot;&lt;i&gt;MODULES&lt;/i&gt;&quot; y transforarlo en: &lt;codigo&gt;MODULES=&quot;isight_usb&quot;&lt;/codigo&gt;
&lt;br&gt;&lt;i&gt;*En mi caso no estaba esa sección, así que la añadí al final.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;5) Averiguar el modelo de la &lt;i&gt;iSight&lt;/i&gt;&lt;/b&gt;
&lt;br&gt;&lt;codigo&gt;$ lsusb | grep -Po &#39;(?&lt;=:)(\d+)(?=.*iSight)&#39;&lt;/codigo&gt;
&lt;br&gt;Esto nos devolverá el &lt;i&gt;ID&lt;/i&gt; de la &lt;i&gt;iSight&lt;/i&gt;. Hay que recordar/apuntar el número. En mi caso es la &lt;i&gt;8300&lt;/i&gt;.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;6) Añadir las reglas udev&lt;/b&gt;
&lt;br&gt;
&lt;codigo&gt;$ sudo vim /etc/udev/rules.d/isight.rules&lt;/codigo&gt;
&lt;br&gt;
Añadir:
&lt;br&gt;
&lt;codigo&gt;ACTION==&quot;add&quot;, SYSFS{idVendor}==&quot;05ac&quot;, SYSFS{idProduct}==&quot;8300&quot;, RUN+=&quot;/usr/lib/udev/ift-load --firmware /lib/firmware/isight.fw&quot;&lt;/codigo&gt;
&lt;br&gt;&lt;i&gt;*Reemplazar &quot;8300&quot; por el ID de la iSight que corresponda.&lt;/i&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;7) Apagar&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;8) Encender y reiniciar&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;9) Probar&lt;/b&gt;
&lt;br&gt;Ya se puede probar la cámara con &lt;i&gt;skype&lt;/i&gt;, &lt;i&gt;cheese&lt;/i&gt;, ...
&lt;p&gt;
&lt;h3&gt;&lt;strong&gt;Micrófono&lt;/strong&gt; (con alsa)&lt;/h3&gt;
&lt;/p&gt;
&lt;p&gt;
Recuerdo que hace años, cuando instalé &lt;i&gt;debian gnu/linux&lt;/i&gt; en esta máquina, los canales estaban desactivados (&quot;&lt;i&gt;muted&lt;/i&gt;&quot;), por defecto. La verdad es que no sé si a día de hoy sigue siendo el caso. Pero, por si caso, explico los canales que hay que activar para tener el micrófono funcionando.
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;1) Ejecutar &lt;i&gt;alsamixer&lt;/i&gt;&lt;/b&gt;
&lt;br&gt;
&lt;codigo&gt;$ alsamixer&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;2) Activar el sonido de &quot;Mic&quot;&lt;/b&gt;
&lt;br&gt;Seleccionar &quot;&lt;i&gt;Mic&lt;/i&gt;&quot; y activar el sonido (si es necesario) pulsando la tecla &#39;&lt;i&gt;m&lt;/i&gt;&#39;:
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiscH-kzgOy7_cC41RNeLJFq7YGh9VUjCFvaMNlgjjK5KR_SKuOfzu_MpkLXn0e_1L_mxCzVIe7jtaU4O7pkbSGH5Izf3kgs8huYiFVQNMCBwiLMFkmk_NeSVx_z9X2QypHY1-mCJSPHSo/s1600/alsa01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiscH-kzgOy7_cC41RNeLJFq7YGh9VUjCFvaMNlgjjK5KR_SKuOfzu_MpkLXn0e_1L_mxCzVIe7jtaU4O7pkbSGH5Izf3kgs8huYiFVQNMCBwiLMFkmk_NeSVx_z9X2QypHY1-mCJSPHSo/s320/alsa01.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;3) Activar el sonido de los dispositvos de captura&lt;/b&gt;
&lt;br&gt;Pulsar &lt;i&gt;F4&lt;/i&gt; para ver los dispositivos de captura &quot;&lt;i&gt;Capture&lt;/i&gt;&quot;, y activarles el sonido (tecla &#39;&lt;i&gt;m&lt;/i&gt;&#39;):
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh19D_ZOkfBwi4Jy8wkJtteVi-1EROE13GhcSTZiW1syfVEYWEIUUldDRYRcIUrq6LRRlTfJUmNtiQv24UuNkVYkGzNayRIIjC1sBNgjIhBJyeOCgoqPyBRDQzd1gjYRmXOqncYB9K3gi0/s1600/alsamixer02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh19D_ZOkfBwi4Jy8wkJtteVi-1EROE13GhcSTZiW1syfVEYWEIUUldDRYRcIUrq6LRRlTfJUmNtiQv24UuNkVYkGzNayRIIjC1sBNgjIhBJyeOCgoqPyBRDQzd1gjYRmXOqncYB9K3gi0/s320/alsamixer02.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;&lt;i&gt;*&quot;Mic Boost&quot; amplía el nivel de captura del micrófono. Si está activado y muy alto, producirá ruídos molestos para la persona que nos escuche.&lt;/i&gt;
&lt;br&gt;
&lt;br&gt;&lt;i&gt;*Sin tener activado el canal &quot;Digital&quot; no se escuchará el micrófono. Tenerlo muy alto pruducirá ruídos molestos para la persona que nos escuche.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;b&gt;4) Pruebas&lt;/b&gt;
&lt;br&gt;Para probar el micrófono podemos recurrir a cualquier programa, por ejemplo &lt;i&gt;skype&lt;/i&gt; o &lt;i&gt;hangouts&lt;/i&gt;, o utilizar las herramientas de &lt;i&gt;alsa&lt;/i&gt;. 
&lt;br&gt;
&lt;br&gt;&lt;b&gt;Utilizando las herramientas de &lt;i&gt;alsa&lt;/i&gt;:&lt;/b&gt;
&lt;br&gt;
&lt;ul&gt;
&lt;li&gt;
Gabar el sonido a un fichero &lt;i&gt;wav&lt;/i&gt;:
&lt;br&gt;
&lt;codigo&gt;$ arecord -f cd -D hw:0 -d 10 test.wav&lt;/codigo&gt;
&lt;br&gt;
&lt;br&gt;&lt;i&gt;*Si esto no funciona, hay que probar con la interfaz de PCM &quot;plughw&quot;&lt;/i&gt;
&lt;br&gt;
&lt;codigo&gt;$ arecord -f cd -D plughw:0 -d 10 test.wav&lt;/codigo&gt;
&lt;/li&gt;
&lt;li&gt;Reproducir la grabación:
&lt;br&gt;
&lt;codigo&gt;$ aplay test.wav&lt;/codigo&gt;
&lt;br&gt;
&lt;i&gt;*Borrar el fichero al finalizar&lt;/i&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
Ahora que están la &lt;i&gt;iSight&lt;/i&gt; y el micrófono funcionando, por seguridad, es recomendable tapar la cámara con un trozo de cinta adhesiva y desactivar el sonido del micrófono. Nunca se sabe qué puede pasar &gt;;).
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Fuentes&lt;/i&gt;:
&lt;br&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://askubuntu.com/questions/100527/how-to-fix-webcam-on-macbook-pro-5-5&quot;&gt;askubuntu.com/How to fix webcam on Macbook Pro 5,5&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2013/12/configurar-la-isight-y-el-microfono-de.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh9i8R6fNdM1TwNoIK3aKTDkNSiVmUFRvalzlM5Dk34eEDiln_OvilFlwXs7V8UviiWr64U0TXtDC1RL-TxoiIQwmJd9PVQiO24WBqU3JuD7zhd07g8D76uk2mapif4NnbYr9WKt0YZvkc/s72-c/210px-Openlogo-debianV2.svg.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-3882381575327312762</guid><pubDate>Tue, 29 Oct 2013 13:00:00 +0000</pubDate><atom:updated>2013-11-30T19:16:46.587+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">bruteforce</category><category domain="http://www.blogger.com/atom/ns#">cifrado</category><category domain="http://www.blogger.com/atom/ns#">ctf</category><category domain="http://www.blogger.com/atom/ns#">github</category><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>algunos códigos python útiles para CTFs</title><description>&lt;b&gt;Cifrados por sustitución simple monoalfabético&lt;/b&gt;
&lt;br&gt;
&lt;p&gt;
El cifrado por sustitución es un método en el que unidades de texto plano son sustituidas con texto cifrado siguiendo un sistema regular. En el caso del sistema cifrado de sustitución simple, la unidad de texto plano es una letra. Es decir, un caracter del texto original es sustituido por otro del alfabeto de texto cifrado. Los ejemplos más caracteristicos de este sistema de cifrado son los cifrados &lt;a href=&quot;http://es.wikipedia.org/wiki/Cifrado_C%C3%A9sar&quot;&gt;César&lt;/a&gt;, &lt;a href=&quot;http://es.wikipedia.org/wiki/ROT13&quot;&gt;ROT13&lt;/a&gt; o &lt;a href=&quot;http://en.wikipedia.org/wiki/Dvorak_encoding&quot;&gt;Dvorak&lt;/a&gt;.
El objetivo aquí es deducir de qué sistema se trata y la transposición de caráctes, es decir, qué caracteres se corresponden entre el texto plano y el alfabeto de cifrado. Una vez averiguado, podemos automatizar la traducción con la función &lt;a href=&quot;http://www.tutorialspoint.com/python/string_maketrans.htm&quot;&gt;maketrans&lt;/a&gt; del módulo &lt;a href=&quot;http://docs.python.org/2/library/string.html&quot;&gt;string&lt;/a&gt;:
&lt;/p&gt;
&lt;br&gt;
&lt;code&gt;
text = &#39;bpql bp rk bgbjmil ab zfcoxal zbpxo, rkl ab ilp jbqlalp jxp zlklzfalp ab zfcoxal mlo prpqfqrzflk pfjmib jlklxicxybqfzl&#39;&lt;br&gt;
trans = string.maketrans(&#39;xyzabcdefghijklmnopqrstuvw&#39;, &#39;abcdefghijklmnopqrstuvwxyz&#39;)&lt;br&gt;
print text.translate(trans)
&lt;/code&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;b&gt;Cadenas escritas al revés&lt;/b&gt;
&lt;br&gt;
&lt;p&gt;
Si estamos vagos, o no queremos leer hacia el sentido contrario al habitual, podemos obtener el resultado utilizando el tercer argumento de las &lt;a href=&quot;http://docs.python.org/2/whatsnew/2.3.html#extended-slices&quot;&gt;extended slices de python&lt;/a&gt;: 
&lt;/p&gt;
&lt;p&gt;
&lt;code&gt;
&gt;&gt;&gt; &#39;sever la atircse anedac&#39;[::-1]&lt;br&gt;
&#39;cadena escrita al reves&#39;
&lt;/code&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;b&gt;Fuerza bruta&lt;/b&gt;
&lt;p&gt;
A veces nos es últil tener un array que se autorellene con combinaciones para solucionar alguna prueba que requiera de fuerza bruta (&lt;i&gt;bruteforce&lt;/i&gt; o &lt;i&gt;bruteforcing&lt;/i&gt;). Para ello dejo en &lt;a href=&quot;https://github.com/rubenhortas&quot;&gt;mi github&lt;/a&gt; un código de demostración de cómo programar esto en python: &lt;a href=&quot;https://github.com/rubenhortas/bruteforceBytearray&quot;&gt;bruteforceBytearray&lt;/a&gt;. Yo he programado un ejemplo con un &lt;a href=&quot;http://docs.python.org/3.1/library/functions.html#bytearray&quot;&gt;bytearray&lt;/a&gt;, y he dejado una función para imprimir por pantalla cómo se va rellenando el array. Es un ejemplo y siempre se puede adaptar a las necesidades personales ;)
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Fuentes&lt;/i&gt;:
&lt;br&gt; 
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&quot;http://es.wikipedia.org/wiki/Cifrado_por_sustituci%C3%B3n#Tipos&quot;&gt;&lt;i&gt;Wikipedia/Cifrado por sustitución&lt;/i&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2013/10/algunos-codigos-python-utiles-para-ctfs.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-4682010078290828919</guid><pubDate>Sun, 15 Sep 2013 12:30:00 +0000</pubDate><atom:updated>2013-09-15T15:13:19.748+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">cifrado</category><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">hardening</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">post-it</category><category domain="http://www.blogger.com/atom/ns#">red</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><category domain="http://www.blogger.com/atom/ns#">ssh</category><title>ssh sin contraseña, utilizando claves rsa</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFxXvQhFKkm_zGpL8DtL5i0TuQONDMCsx_RBS5a6eEF2hh6ZuFGgKsAip4B9_Iqe_sWq-nvyrEq2rG0r2XHX2xPX6yWr04TUAWa8NCSVcZ0uWiqCjv1hR5LkqTut4kMImbaeAmAYFUl_o/s1600/openssh.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFxXvQhFKkm_zGpL8DtL5i0TuQONDMCsx_RBS5a6eEF2hh6ZuFGgKsAip4B9_Iqe_sWq-nvyrEq2rG0r2XHX2xPX6yWr04TUAWa8NCSVcZ0uWiqCjv1hR5LkqTut4kMImbaeAmAYFUl_o/s200/openssh.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;
Supongamos que tenemos dos equipos entre los que nos conectamos habitualmente utilizando ssh.El &lt;i&gt;equipo1&lt;/i&gt; (10.0.0.1) y el &lt;i&gt;equipo2&lt;/i&gt; (10.0.0.2).
&lt;/p&gt;
&lt;p&gt;
Al conectarnos con mucha frecuencia, introducir la contraseña cada vez que nos conectamos se convierte en una labor repetitiva, cansina y en una pérdida de tiempo. Para poder conectarnos entre ellos de forma cómoda y segura, podemos hacerlo utilizando claves rsa, en vez de contraseña.
&lt;/p&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2masbUwswR3LtzKzbyykq1FvpB7YrycwEoSvi-6BW8Ki_a-iFDJTnYNqhhBVjvjcyLh4jVCRwa3NQ31thDJqCfyynIudnELKcPLhKxUexIFkuFrSexqlB6DBAlYPAyOlQjnNH4FOL2BI/s1600/conexi%25C3%25B3n_ssh.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Esquema de los equipos y sentido de la conexión ssh&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2masbUwswR3LtzKzbyykq1FvpB7YrycwEoSvi-6BW8Ki_a-iFDJTnYNqhhBVjvjcyLh4jVCRwa3NQ31thDJqCfyynIudnELKcPLhKxUexIFkuFrSexqlB6DBAlYPAyOlQjnNH4FOL2BI/s320/conexi%25C3%25B3n_ssh.png&quot; title=&quot;Esquema de los equipos y sentido de la conexión ssh&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Esquema de los equipos y sentido de la conexión ssh&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;
Para poder conectarnos mediante ssh utilizando las claves rsa, en lugar de tener que introducir la contraseña:
&lt;/p&gt;
&lt;p&gt;
En el &lt;i&gt;equipo1&lt;/i&gt; creamos las claves rsa pública y privada:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
rubenhortas@equipo1:~/.ssh$ ssh-keygen -t rsa&lt;br /&gt;
Generating public/private rsa key pair.&lt;br /&gt;
Enter file in which to save the key (/home/rubenhortas/.ssh/id_rsa): &lt;span style=&quot;color: red;&quot;&gt;[ENTER]&lt;/span&gt;&lt;br /&gt;
Enter passphrase (empty for no passphrase): &lt;span style=&quot;color: red;&quot;&gt;[ENTER*]&lt;/span&gt;&lt;br /&gt;
Enter same passphrase again: &lt;span style=&quot;color: red;&quot;&gt;[ENTER*]&lt;/span&gt;&lt;br /&gt;
Your identification has been saved in /home/rubenhortas/.ssh/id_rsa.&lt;br /&gt;
Your public key has been saved in /home/rubenhortas/.ssh/id_rsa.pub.&lt;br /&gt;
The key fingerprint is:&lt;br /&gt;
**:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**&lt;br /&gt;
The key&#39;s randomart image is:
&lt;/codigo&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;codigo&gt;&amp;lt; Que te lo voy a decir ;)&amp;gt;
 ------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||
&lt;/codigo&gt;&lt;/pre&gt;
&lt;i&gt;*Dejad la passphrase en blanco, porque si no la va a pedir cada vez que nos conectemos al equipo2 por ssh&lt;/i&gt;&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
Copiamos la clave pública al &lt;i&gt;equipo2&lt;/i&gt;:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
rubenhortas@equipo1$ ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.2&lt;br /&gt;
The authenticity of host &#39;10.0.0.2 (10.0.0.2)&#39; can&#39;t be established.&lt;br /&gt;
RSA key fingerprint is **:**:**:**:**:**:**:**:**:**:**:**:**:**:**:**.&lt;br /&gt;
Are you sure you want to continue connecting (yes/no)? &lt;span style=&quot;color: red;&quot;&gt;yes&lt;/span&gt;&lt;br /&gt;
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed&lt;br /&gt;
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys&lt;br /&gt;
rubenhortas@10.0.0.2&#39;s password: &lt;span style=&quot;color: red;&quot;&gt;[CONTRASEÑA EQUIPO2]&lt;/span&gt;&lt;br /&gt;
&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
Por último nos conectamos al &lt;i&gt;equipo2&lt;/i&gt; por ssh, y comprobamos que no nos pide la contraseña.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;Enjoy!&lt;/i&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2013/09/ssh-sin-contrasena-utilizando-claves-rsa.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFxXvQhFKkm_zGpL8DtL5i0TuQONDMCsx_RBS5a6eEF2hh6ZuFGgKsAip4B9_Iqe_sWq-nvyrEq2rG0r2XHX2xPX6yWr04TUAWa8NCSVcZ0uWiqCjv1hR5LkqTut4kMImbaeAmAYFUl_o/s72-c/openssh.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-2238330123355656730</guid><pubDate>Sun, 08 Sep 2013 10:50:00 +0000</pubDate><atom:updated>2013-10-29T14:01:50.295+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">forense</category><category domain="http://www.blogger.com/atom/ns#">metadatos</category><category domain="http://www.blogger.com/atom/ns#">mis_codigos</category><category domain="http://www.blogger.com/atom/ns#">pdf</category><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>obteniendo los metadatos de ficheros pdf en python</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s1600/doctor-tux.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s200/doctor-tux.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;En vista a todas las fugas de información que se están dando últimamente (y a que he tenido un poco de tiempo libre), me he decidido a programar un script en python para poder obtener de forma rápida y cómoda, en primera instancia, los metadatos de ficheros pdf.
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
Aunque algunas personas son capaces de analizar el contenido del fichero en sí, esto puede convertirse en árdua y tediosa tarea si el contenido pertenece a un ámbito fuera de nuestro alcance, o si se trata de una cantidad ingente de información. Sin embargo, los metadatos son datos relativos al archivo. Aunque los metadatos no se encuentran necesariamente presentes en todos los ficheros, de encontrase podríamos averiguar información interesante desde el punto de vista forense, por ejemplo el autor del archivo, las fechas de creación y/o modificación, el programa con el que se ha creado, la correlación entre el nombre y el título, etc. 
&lt;/p&gt;
&lt;p&gt;
El uso del script es sencillo:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
$ python pdfMetadata.py -h
&lt;/codigo&gt;
&lt;br&gt;
Muestra la ayuda
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
$ python pdfMetadata foo.pdf /foo/bar bar.pdf
&lt;/codigo&gt;
&lt;br&gt;
Analiza los metadatos de los argumentos introducidos a través de la línea de comandos. Los argumentos pueden ser archivos pdf o directorios, y se pueden mezclar. Si el argumento es un directorio, lo escanea recursivamente analizando los pdfs contenidos en él.
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
$ python pdfMetadata foo.pdf /foo/bar bar.pdf --log foo.txt
&lt;/codigo&gt;
&lt;br&gt;
Registra la salida a un fichero en texto plano.
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
$ python pdfMetadata foo.pdf /foo/bar bar.pdf --log bar.csv
&lt;/codigo&gt;
&lt;br&gt;
Registra la salida a un fichero en formato CSV.
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*Las opciones --log y --csv se pueden combinar&lt;/i&gt; 
&lt;/p&gt;
&lt;p&gt;
El script lo he subido a &lt;a href=&quot;https://github.com/rubenhortas&quot;&gt;mi [recién estrenado] github&lt;/a&gt;: &lt;a href=&quot;https://github.com/rubenhortas/pdfMetadata&quot;&gt;https://github.com/rubenhortas/pdfMetadata&lt;/a&gt;, por si queréis probarlo, ver el código fuente, contribuir o crear vuestro propio fork.
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2013/09/obteniendo-los-metadatos-de-ficheros.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEios-n1jU4yICJoeU6SazYQYUSzRqHuS8uPeFVhlzLaAiksEQQjbonMWXoohBKb1GcOoaaNChGSSPOAj7J6hE_s1UiyFIf9_QyVjBq1ARXfUWeVeDomNgYfBVMCqa8Uls8QaMKHhwun30w/s72-c/doctor-tux.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5211888109617906361</guid><pubDate>Sun, 17 Mar 2013 20:00:00 +0000</pubDate><atom:updated>2013-03-17T21:00:01.404+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">personal</category><category domain="http://www.blogger.com/atom/ns#">programación</category><category domain="http://www.blogger.com/atom/ns#">python</category><title>aprender python</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekz3bY4pNmA5UUxSjTFeuLTfqcZLa_660f6kTWw4YT77rjIV66nueoaiFLf7TZEZpCGNONKrpnINZcegDllx_Si3dt0nLToeB8nZ45w9ETyFShmhKajRxv67tjb50HSjdfJhOZyrNHdM/s1600/python.png&quot; imageanchor=&quot;1&quot;style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot; &gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekz3bY4pNmA5UUxSjTFeuLTfqcZLa_660f6kTWw4YT77rjIV66nueoaiFLf7TZEZpCGNONKrpnINZcegDllx_Si3dt0nLToeB8nZ45w9ETyFShmhKajRxv67tjb50HSjdfJhOZyrNHdM/s320/python.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;
Por si el título deja lugar a dudas, estoy aprendiendo python.
&lt;br&gt;Cuando nos toca aprender un lenguaje nuevo, siempre buscamos información que nos oriente y nos facilite el proceso, desde google hasta preguntar a nuestros amigos/conocidos que sepan un poco del tema. Así que, aquí voy a dejar algo de material disponible sobre las opciones por las que me he decantado, por si quieres aprender python:
&lt;br&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;strong&gt;IDE&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://www.eclipse.org/&quot;&gt;Eclipse&lt;/a&gt; + &lt;a href=&quot;http://pydev.org/&quot;&gt;PyDev&lt;/a&gt;:
Cómo instalar PyDev: &lt;a href=&quot;http://pydev.org/manual_101_install.html&quot;&gt;http://pydev.org/manual_101_install.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Documentación&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Documentación oficial de Python&lt;/strong&gt;: [ HTML / PDF / TXT ] Un indispensable en los marcadores. Es la gran fuente de refencia para conocer librerias, clases y métodos oficiales. Desde lo nuevo que se va añadiendo a python hasta saber qué está obsoleto y cual es su reemplazo.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://docs.python.org&quot;&gt;http://docs.python.org&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;De 0 a python&lt;/strong&gt; (&lt;a href=&quot;http://www.hackxcrack.es/&quot;&gt;hackXcrack&lt;/a&gt;): [ PDF 18 páginas ] Si ya sabes programar en algún lenguaje, deberías empezar por aquí. Un gran resumen de los conceptos básicos de python.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://www.hackxcrack.es/cuadernos/python/Hack_x_Crack_de0aPython.pdf&quot;&gt;http://www.hackxcrack.es/cuadernos/python/Hack_x_Crack_de0aPython.pdf&lt;/a&gt; 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Guía de aprendizaje de Python&lt;/strong&gt; (Guido van Rossum): [ HTML / PDF 77 páginas ] Introducción a lo que será programar en ptyhon. Trata conceptos desde manejar el intérprete hasta las clases, pasando por el control de excepciones. 
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://pyspanishdoc.sourceforge.net/tut/tut.html&quot;&gt;http://pyspanishdoc.sourceforge.net/tut/tut.html&lt;/a&gt;
&lt;a href=&quot;http://sourceforge.net/projects/pyspanishdoc/&quot;&gt;http://sourceforge.net/projects/pyspanishdoc&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learn Python The Hard Way&lt;/strong&gt;: [ HTML / PDF + VIDEO (29$) ] Una manera interactiva de aprender python. Aunque describe de forma teórica conceptos fundamentales, el método que se sigue es, básicamente, un método de aprendizaje basado en la pŕactica.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://learnpythonthehardway.org/&quot;&gt;http://learnpythonthehardway.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python para todos&lt;/strong&gt; (Raúl González Duque - &lt;a href=&quot;http://mundogeek.net&quot;&gt;MundoGeek&lt;/a&gt;): [ PDF 160 páginas ] Bastante teórico, pero con ejemplos que amenizan el aprendizaje. Este libro abarca todas las fases del desarrollo de un programa, desde &quot;¿Qué es python?&quot; hasta el empaquetado para su distribución.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://mundogeek.net/tutorial-python/&quot;&gt;http://mundogeek.net/tutorial-python/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt; wxPython + wxGlade&lt;/strong&gt;:  [HTML] Para diseñar y programar GUIs (interfaces gráficas). Me he decantado por wxPython, porque da un look nativo a las aplicaciones en todas las plataformas, y por wxGlade porque es muy sencillo de utilizar.
&lt;br&gt;&lt;br&gt;
&lt;a href=&quot;http://www.wxpython.org/&quot;&gt;http://www.wxpython.org/&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;http://wiki.wxpython.org/WxGladeTutorial&quot;&gt;http://wiki.wxpython.org/WxGladeTutorial&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Juegos&lt;/strong&gt; (vía &lt;a href=&quot;https://www.twitter.com/ivmora&quot;&gt;@ivmora&lt;/a&gt;)
&lt;/p&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Euler&lt;/strong&gt; - &lt;a href=&quot;http://projecteuler.net/&quot;&gt;http://projecteuler.net&lt;/a&gt;
&lt;br&gt;Resolver una serie de desafíos matemáticos mediante programación. No es exclusivo para python, pero es una buena forma de aprender nuevos conceptos.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python Challenge&lt;/strong&gt; - &lt;a href=&quot;http://www.pythonchallenge.com/&quot;&gt;http://www.pythonchallenge.com&lt;/a&gt;
&lt;br&gt;Un &quot;wargame&quot; de programación. Hay que ir resolver un nivel para acceder al superior. Es muy entretenido.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2013/03/aprender-python.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhekz3bY4pNmA5UUxSjTFeuLTfqcZLa_660f6kTWw4YT77rjIV66nueoaiFLf7TZEZpCGNONKrpnINZcegDllx_Si3dt0nLToeB8nZ45w9ETyFShmhKajRxv67tjb50HSjdfJhOZyrNHdM/s72-c/python.png" height="72" width="72"/><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5156049963866019288</guid><pubDate>Sun, 10 Mar 2013 20:00:00 +0000</pubDate><atom:updated>2013-03-10T21:00:00.218+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">firestarter</category><category domain="http://www.blogger.com/atom/ns#">firewall</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">monitorizacion</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>manejar varias interfaces de red con firestarter e iptables</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjIcs0KIt83-30V21l9C1XK9wRzj8Kg3GwRY5TnAHggo59WeT0o0y6nAdFayhRneCEzEyO64ElO06WUNZ0FHFGgb6EzR20Gv8CCly_1HfWbrYUKMbomD0mGKJy4MXRwXrez9YKBq0cXgA/s1600/firestarterPeng.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot; &gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot;src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjIcs0KIt83-30V21l9C1XK9wRzj8Kg3GwRY5TnAHggo59WeT0o0y6nAdFayhRneCEzEyO64ElO06WUNZ0FHFGgb6EzR20Gv8CCly_1HfWbrYUKMbomD0mGKJy4MXRwXrez9YKBq0cXgA/s320/firestarterPeng.png&quot; /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;p&gt;
Por casualidades (o causalidades) de la vida, llevo una temporada usando &lt;a href=&quot;http://www.fs-security.com/&quot;&gt;firestarter&lt;/a&gt; como firewall. Firestarter es una GUI para configurar de forma sencilla iptables. Como con todo, después de usarlo un tiempo, surge una lista de pros y contras, en la que yo destacaría:
&lt;/p&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;strong&gt;Pros:&lt;/strong&gt;
&lt;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Sencillez&lt;/b&gt;: Se configura a través de un asistente y diálogos de prefrencias. Definir reglas y políticas se convirte en algo trivial.
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Buenos defaults&lt;/b&gt;: Creo que tiene una buena configuración por defecto, y suficiente para la mayoría de equipos de escritorio. Aunque siempre se pueden añadir y modificar reglas y políticas.
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Daemon&lt;/b&gt;: Se ejecuta como daemon, y se puede configurar para que se inicie/pare al conectarse a internet o al renovar la sesión DHCP. 
&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;Icono&lt;/b&gt;: El icono (opcional) en el área de notificación. Es imposible pasar algún evento por alto (aunque puede llegar a distraer).
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;strong&gt;Contras&lt;/strong&gt;:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;b&gt;Interfaces&lt;/b&gt;: Firestarter permite configurar un dispositivo de red conectado a internet y un dispositivo de red conectado al área local. El problema está en que, dependiendo de la configuración de la red, la interfaz puede ser la misma, o puede no ser suficiente.
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Para configurar otra interfaz hay que añadir manualmente las reglas mediante iptables. Pero, después de añadir las reglas, todo lo que pase por esa interfaz se guardará en los logs&lt;strong&gt;*&lt;/strong&gt;.
&lt;br&gt;El peligro está en que si esta nueva interfaz tiene mucho tráfico, los logs pueden crecer GBs, llegando a saturar la partición donde se almacenan.
&lt;/p&gt;
&lt;p&gt;
Hay una forma de solucionar esto, añadiendo las reglas necesarias en &lt;b&gt;/etc/firestarter/user-pre&lt;/b&gt;.
&lt;br&gt;Por ejemplo, si firestarter está controlando una interfaz de red inalámbrica (wlan0), para permitir todo el tráfico a través de una interfaz de red cableada (eth0), hay que añadir:
&lt;/p&gt;
&lt;p&gt;
&lt;codigo&gt;
iptables -A INPUT -i eth0 -j ACCEPT
&lt;br&gt;iptables -A OUTPUT -o eth0 -j ACCEPT
&lt;/codigo&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;&lt;strong&gt;*&lt;/strong&gt;Llegados a este punto, he de decir que para evitar saturar los logs lo he intentado todo, o, por lo menos, todo lo que se me ocurrió. He intentado añadir reglas con -m limit, --limit, --limit-burst, LOG, añadir las reglas a las creadas por firestarter... Pero todo se seguía guardando en los logs. 
&lt;br&gt;Si conoces otra forma de evitarlo, agradecería un comentario ;)
&lt;/i&gt;
&lt;/p&gt;
</description><link>http://rubenhortas.blogspot.com/2013/03/manejar-varias-interfaces-de-red-con.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>7</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-5668489465942556951</guid><pubDate>Sun, 23 Sep 2012 19:30:00 +0000</pubDate><atom:updated>2013-03-07T16:38:55.021+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">grub2</category><category domain="http://www.blogger.com/atom/ns#">howto</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>protege tu grub</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh16FtWa00kOy2ZhsNhVmhiaIkBVIIQ0AzuyfkLnLAOObR2zd47W83pFtDAlrDFfPo44-PyyWlP3aFQkHdW8NNh4E6bH-1v5rcJs5NyjWk4RXqa_KFMYECw1K6XFh3MaYUVzJ1GNKgoAUc/s1600/rambo-tux.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh16FtWa00kOy2ZhsNhVmhiaIkBVIIQ0AzuyfkLnLAOObR2zd47W83pFtDAlrDFfPo44-PyyWlP3aFQkHdW8NNh4E6bH-1v5rcJs5NyjWk4RXqa_KFMYECw1K6XFh3MaYUVzJ1GNKgoAUc/s200/rambo-tux.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

&lt;p&gt;La configuración por defecto de &lt;b&gt;GRUB&lt;/b&gt; permite que cualquier persona con acceso físico a la máquina, pueda acceder a él y editarlo, pudiendo así obtener una &lt;i&gt;&lt;b&gt;GRUB shell&lt;/i&gt;&lt;/b&gt;. El problema aparece cuando esa persona tiene ciertos conocimientos y se hace con una &lt;b&gt;&lt;i&gt;root shell&lt;/i&gt;&lt;/b&gt;, como explican en &lt;a href=&quot;http://www.flu-project.com&quot;&gt;flu-project&lt;/a&gt; en el artículo &quot;&lt;a href=&quot;http://www.flu-project.com/el-sticky-keys-sethc-exe-de-gnulinux.html&quot;&gt;El Sticky Keys (sethc.exe) de GNU/Linux&lt;/a&gt;&quot;.  
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;u&gt;No es un fallo de seguridad&lt;/u&gt;&lt;/b&gt;, como bien aclaran en &lt;a href=&quot;http://www.flu-project.com&quot;&gt;flu-project&lt;/a&gt; y el proyecto &lt;a href=&quot;http://www.gnu.org/&quot;&gt;GNU&lt;/a&gt;. Se deja así para facilitar la recuperación de sistemas estropeados, lo cual se consiera la opción más razonable para la mayoría de sistemas. Ya que una persona con acceso físico a la máquina podría utilizar distintas técnicas para comprometerla. De todas formas, en &lt;a href=&quot;http://www.gnu.org/&quot;&gt;GNU&lt;/a&gt;, reconocen y advierten de que en ciertos entornos es conveniente bloquear el cargador de arranque. Así que, si no os fiais del entorno en el que puede acabar vuestro ordenador, bloqueadlo ;)

&lt;p&gt;&lt;strong&gt;Cómo podemos bloquear el GRUB?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;En dos sencillos pasos:&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;1. Generar una contraseña de forma segura:
&lt;br&gt;
&lt;br&gt;
&lt;codigo&gt;$ grub-mkpasswd-pbkdf2&lt;/codigo&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;2. Editar el fichero &lt;strong&gt;/etc/grub.d/40_custom&lt;/strong&gt; y añadir dos líneas:
&lt;br&gt;
&lt;br&gt;
&lt;codigo&gt;set superusers=&quot;&lt;i&gt;nombreUsuario&lt;/i&gt;&quot;
&lt;br&gt;
password_pbkdf2 &lt;i&gt;nombreUsuario grub.pbkdf2.sha512.password.increiblmente.larga.que.generamos.antes&lt;/i&gt;&lt;/codigo&gt;
&lt;/p&gt;

&lt;p&gt;Si la opción &lt;b&gt;--unrestricted&lt;/b&gt; no es usada en las entradas de grub (y no es añadida por defecto), sólo los usuarios especificados en la lista de &lt;i&gt;superusers&lt;/i&gt; podrán editarlo.&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Fuentes:&lt;/i&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;http://www.flu-project.com&quot;&gt;Flu-project&lt;/a&gt; -&lt;a href=&quot;http://www.flu-project.com/el-sticky-keys-sethc-exe-de-gnulinux.html&quot;&gt; El Sticky Keys (sethc.exe) de GNU/Linux&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;&lt;a href=&quot;http://www.gnu.org&quot;&gt;GNU&lt;/a&gt; - &lt;a href=&quot;http://www.gnu.org/software/grub/manual/grub.html&quot;&gt;GRUB  manual&lt;/a&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><link>http://rubenhortas.blogspot.com/2012/09/protege-tu-grub.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh16FtWa00kOy2ZhsNhVmhiaIkBVIIQ0AzuyfkLnLAOObR2zd47W83pFtDAlrDFfPo44-PyyWlP3aFQkHdW8NNh4E6bH-1v5rcJs5NyjWk4RXqa_KFMYECw1K6XFh3MaYUVzJ1GNKgoAUc/s72-c/rambo-tux.png" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-3865246660424465594</guid><pubDate>Sat, 21 Jul 2012 22:08:00 +0000</pubDate><atom:updated>2012-12-30T22:54:07.342+01:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">inhibidores</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>evitar los inhibidores de señal</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG3RKB7JtmFR0CCrVpugnO9YuJNQfGhYQ_7PERjPu_c09W9P7HMwGNstwBrceExjB_cKvURfqAPtKH1o9hgPXrIFjMyvcKdGBuWDkZdCba6l9xNg0AJ9Iv_nXVcXa_BCB8xlF0nDmww_M/s1600/jammer.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;200&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG3RKB7JtmFR0CCrVpugnO9YuJNQfGhYQ_7PERjPu_c09W9P7HMwGNstwBrceExjB_cKvURfqAPtKH1o9hgPXrIFjMyvcKdGBuWDkZdCba6l9xNg0AJ9Iv_nXVcXa_BCB8xlF0nDmww_M/s200/jammer.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;




&lt;p&gt;Imagina que una noche cualquiera estás en tu casa, durmiendo o viendo la televisión, tranquilamente. Cuando, de repente, un grupo de individuos armados decide asaltar tu pueblo con nocturnidad y alevosía. Usando para ello inhibidores de señal (GSM,CDMA,3G,Wifi), prentendiendo así evitar que se conozca y se difunda semejante atrocidad de espectáculo. 
&lt;/p&gt;
&lt;p&gt;
Imaginemos, también, que los &lt;i&gt;mass media&lt;/i&gt; están durmiendo sus 24h diarias, o demasiado ocupados estudiando ese gran capítulo del periodismo &quot;&lt;b&gt;en verano se habla del calor, en invierno del frío&lt;/b&gt;&quot;. Pero tú quieres ejercer &lt;b&gt;tus derechos constitucionales&lt;/b&gt;, libertad de expresión e información, y hacer saber al mundo lo que está pasando. Cómo puedes evitar sus inhibidores de señal?

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cualquier bloqueo&lt;/strong&gt;: Los inhibidores de señal tienen un alcance limitado. Camina en sentido opuesto a dónde creas que está situado el inhibidor. Una vez salgas de su radio de acción podrás comunicarte con normalidad.
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Bloqueo de la señal de internet móvil&lt;/strong&gt;:
Usa redes sociales que permitan envíos por sms, como &lt;a href=&quot;https://twitter.com/&quot;&gt;twitter&lt;/a&gt; o &lt;a href=&quot;https://www.facebook.com&quot;&gt;facebook&lt;/a&gt;.

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://support.twitter.com/groups/34-apps-sms-and-mobile#topic_153&quot;&gt;Twitter via SMS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.facebook.com/help/mobiletexts&quot;&gt;Facebook mobile text&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Bloqueo de toda señal móvil&lt;/strong&gt;:
Si toda señal móvil se encuentra bloqueada, pero no la señal wifi, se pueden abrir todas las wifis, creando así puntos de acceso distribuidos y accesibles por todo el mundo en toda la zona afectada.
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Bloqueo de toda señal móvil y wifi&lt;/strong&gt;:
&lt;b&gt;Organización&lt;/b&gt;. &lt;i&gt;Creo&lt;/i&gt; que llegados a este punto es la mejor alternativa. Por ejemplo, una persona que viva cerca de la primera línea se queda conectada en casa, esperando a que los que retratan el conflicto agoten sus memorias y se las lleven. Esa persona será la encargada de vaciar las memorias y publicar todo el material recogido. Que esa persona esté lo más cerca posible de la primera línea evitará carreras a los intrépidos reporteros y permitirá una retransmisión lo más inmediata posible.
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Bloqueo de señales móviles, wifi e internet&lt;/strong&gt;:
Aquí se empieza a poner peliaguda la cosa, pero hay alternativas:

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Módems&lt;/strong&gt;: En las revueltas de Egipto, varios colectivos de diversos países habilitaron números de teléfono para conectarse mediante módem. Las desventajas son evidentes, hay que tener un módem, un PC en dónde todavía se pueda montar, un número al que conectarse... Pero llegado el caso, tenerlo a mano, o incluso montado y listo para funcionar, puede que no esté de más.
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Internet por satélite&lt;/strong&gt;: Si el escenario se localiza en una zona rural, no es raro que algún vecino o edificio público posea una de estas comunicaciones.
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Radio&lt;/strong&gt;:
Dos alternativas
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Red de &lt;a href=&quot;http://en.wikipedia.org/wiki/Packet_radio&quot;&gt;packet radio&lt;/a&gt;&lt;/b&gt;: Aunque bastante improbable, es una alernativa. Es muy difícil encontrarse a alguien que posea el hardware necesario para montar una emisión de este tipo.
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Emisoras y teléfonos fijos&lt;/b&gt;: Usar las emisoras de radio y los teléfonos fijos para contar a gente cercana lo que está pasando y que ellos lo puedan publicar en todos los medios posibles.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;

&lt;li&gt;&lt;strong&gt;Fax&lt;/strong&gt;: Un gran olvidado, pero empresas, locutorios e incluso alǵun particular, los conservan y les dan uso. Muy útil para poder enviar la información fuera de la zona del conflicto, a tanta distancia como se quiera. Amigos, familiares, algún medio de comunicación (incluso extranjeros), seguro que están encantados de recibirla.
&lt;/li&gt;
&lt;/ul&gt;

&lt;/ul&gt;
&lt;p&gt;
Son sólo unas ideas y técnicas recogidas de diversas revoluciones en todo el mundo. Si quieres aportar alguna más siéntete libre de usar los comentarios -;)
&lt;/p&gt;
&lt;p&gt;
Si has llegado hasta aquí, quizás también te interesen:
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://howto.wired.com/wiki/Communicate_if_Your_Government_Shuts_Off_Your_Internet&quot;&gt;Wired - Communicate if Your Government Shuts Off Your Internet&lt;/a&gt; Un wiki que cualquiera puede leer y editar.
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.rubenhortas.blogspot.com.es/2011/02/saltarse-el-bloqueo-internet.html&quot;&gt;rubenhortas@blog:~$ - saltarse el bloqueo a internet &lt;/a&gt; Un post publicado hace tiempo con más información al respecto.
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2012/07/evitar-los-inhibidores-de-senal.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhG3RKB7JtmFR0CCrVpugnO9YuJNQfGhYQ_7PERjPu_c09W9P7HMwGNstwBrceExjB_cKvURfqAPtKH1o9hgPXrIFjMyvcKdGBuWDkZdCba6l9xNg0AJ9Iv_nXVcXa_BCB8xlF0nDmww_M/s72-c/jammer.jpg" height="72" width="72"/><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-3489283892755184680</guid><pubDate>Sun, 20 May 2012 19:30:00 +0000</pubDate><atom:updated>2012-05-20T21:30:00.829+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">7z</category><category domain="http://www.blogger.com/atom/ns#">aespipe</category><category domain="http://www.blogger.com/atom/ns#">cifrado</category><category domain="http://www.blogger.com/atom/ns#">open_source</category><category domain="http://www.blogger.com/atom/ns#">p7zip</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>usando la nube con sentido común y p7zip</title><description>&lt;p&gt;
Al hilo del anterior post ( &lt;a href=&quot;http://www.rubenhortas.blogspot.com.es/2012/05/usando-la-nube-con-sentido-comun-y.html&quot;&gt;usando la nube con sentido común y aespipe&lt;/a&gt; ), y después de investigar un poco, voy a explicar algo más la última nota del artículo, porque creo que quedó bastante escueta y aislada, y merece profundizar un poco más ;)&lt;/p&gt;

&lt;a href=&quot;http://p7zip.sourceforge.net/&quot;&gt;&lt;strong&gt;p7zip&lt;/strong&gt;&lt;/a&gt; Es, hoy por hoy, mi utilidad favorita para comprimir. Es la versión, en línea de comandos, de &lt;a href=&quot;http://www.7-zip.org/&quot;&gt;7zip&lt;/a&gt; para sistemas POSIX. Es open source, consigue muy buenos ratios de compresión, usa varios núcleos, soporta un montón de formatos y &lt;strong&gt;puede cifrar usando AES-256&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;blockquote&gt;&lt;i&gt;*Si lo que queremos es comprimir con contraseña, el script se puede adaptar cambiando la línea de aespipe por el comando que queramos ejecutar. Por ejemplo, para comprimir con contraseña usando &lt;b&gt;p7zip&lt;/b&gt; y header encryption (&lt;b&gt;mhe=on&lt;/b&gt;):
&lt;br&gt;&lt;strong&gt;7z a -r -mhe=on -pCONTRASEÑA $i.7z $i &lt;/strong&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;/p&gt;

&lt;p&gt;Esta nota, hace referencia a compimir con contraseña usando &lt;b&gt;p7zip&lt;/b&gt;, lo que yo no sabía cuando lo escribí es que, de forma resumida, viene siendo un &quot;&lt;b&gt;comprimir y cifrar para vagos&lt;/b&gt;&quot;.&lt;/p&gt;

&lt;p&gt;Cuando comprimimos con &lt;b&gt;p7zip&lt;/b&gt; y usamos contraseña, &lt;b&gt;p7zip&lt;/b&gt; aplica una función de derivación basada en &lt;b&gt;SHA-256&lt;/b&gt; a la contraseña, y usa el resultado como clave para cifrar con el algoritmo &lt;b&gt;AES-256&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Resumiendo, sería parecido al método explicado usando &lt;b&gt;aespipe&lt;/b&gt;, pero todo en uno ;)&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2012/05/usando-la-nube-con-sentido-comun-y_20.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>2</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-7317468515251864753</guid><pubDate>Sun, 13 May 2012 19:30:00 +0000</pubDate><atom:updated>2012-05-20T21:44:08.756+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">7z</category><category domain="http://www.blogger.com/atom/ns#">aespipe</category><category domain="http://www.blogger.com/atom/ns#">cifrado</category><category domain="http://www.blogger.com/atom/ns#">cloud</category><category domain="http://www.blogger.com/atom/ns#">drive</category><category domain="http://www.blogger.com/atom/ns#">google</category><category domain="http://www.blogger.com/atom/ns#">nube</category><category domain="http://www.blogger.com/atom/ns#">p7zip</category><category domain="http://www.blogger.com/atom/ns#">seguridad</category><title>usando la nube con sentido común y aespipe</title><description>&lt;p&gt;Con el reciente auge de los servicios de almacenamiento &quot;gratuítos&quot; en la nube, &lt;strong&gt;dropbox&lt;/strong&gt;, &lt;strong&gt;skydrive&lt;/strong&gt;, &lt;strong&gt;google drive&lt;/strong&gt;... Aparecen unas posibilidades de uso interesantes. Una de ellas es la de usarlos para guardar pequeños backups o utilidades a las que poder acceder desde cualquier sitio con conexión a internet.
&lt;/p&gt;
&lt;p&gt;
Llegados a este punto, deberíamos reflexionar sobre qué información almacenar en este tipo de servicios. Si la información es de carácter crítico, almacenarla en un servicio de este tipo, &lt;b&gt;&lt;u&gt;no es buena idea&lt;/u&gt;&lt;/b&gt;. En este caso sería más conveniente utilizar un servicio de almacenamiento de pago, o contratar los servicios de una empresa de backuping, con unos términos de uso claros y definidos que garanticen que nuestra información no será accedida por ninguna persona, OCR, bot...
&lt;/p&gt;
&lt;p&gt;
Una vez decidida la información que queremos almacenar en la nube, no todo lo que subamos va a tener el mismo nivel de relevancia o privacidad. Deberíamos clasificar la información, y definir unas políticas de seguridad claras en base a cada tipo. Es decir, no es lo mismo subir unos ebooks, subir unos ficheros de configuración, subir algún proyecto personal o subir una lista de passwords. Por eso habrá que &lt;strong&gt;separar la información&lt;/strong&gt;, básicamente en dos grupos, la que nos da igual que se vea o sea indexada, y la que queremos que permanezca totalmente privada.
&lt;/p&gt;
&lt;p&gt;Para evitar miradas ajenas sobre la información que queremos que se mantenga privada, tenemos varias alternativas. Entre ellas:
&lt;ul&gt;
&lt;li&gt;Subir el contenido comprimido &lt;b&gt;con contraseña&lt;/b&gt; (y confiar en que no se van a realizar ataques de fuerza bruta).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cifrar, cifrar y cifrar&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
Como la segunda es más segura que la primera, para este punto, tendremos varias posibilidades:
&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;p&gt;
&lt;li&gt;&lt;strong&gt;Truecrypt&lt;/strong&gt;: Todo un clásico y un indispensable en nuestros ordenadores, está claro. La parte mala de usar truecrypt es que requiere crear volúmenes/contenedores de datos, y por pequeños que sean, suponen una gran descarga de datos adicional. Es decir, si el fichero que nos queremos bajar es de 500Kb, por pequeño que sea el contenedor de truecrypt (50Mb, 10Mb?),descargarse el contenedor entero, supone una descarga de datos inmensa en relación con el tamaño del fichero.
&lt;/li&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;li&gt;
&lt;strong&gt;GPG&lt;/strong&gt;: Otro clásico. Una buena elección para cifrar fichero por fichero, siempre que seas ordenado, y guardes y exportes correctamente tus claves gpg. (No es mi caso ;))
&lt;/li&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;li&gt;
&lt;strong&gt;Aespipe&lt;/strong&gt;: Aespipe es una utilidad para cifrar fichero a fichero. Crea ficheros .tar o .cpio cifrados. Lo mejor de usarlo, es que los ficheros mantienen su tamaño original. Aespipe puede trabajar usando claves gpg, aunque no voy a centrarme en este caso, por lo comentado en el punto anterior.
&lt;/li&gt;
&lt;/p&gt;
&lt;/ol&gt;
&lt;p&gt;
Si escogemos &lt;strong&gt;aespipe&lt;/strong&gt;, éste trabaja, por defecto, en su modo recomendado multi-key-v3, que requiere una clave con una longitud mínima de 20 caractereres. Llegados a este punto, podemos optar por usar una clave del tipo &quot;&lt;i&gt;googlemecagontostusmuertosnomiresloqueguardo&lt;/i&gt;&quot;, o escoger una clave (&lt;b&gt;segura&lt;/b&gt;) que usemos habitualmente, que no llegue a los 20 caracteres y cifrarla, por ejemplo con un SHA.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;$ echo -n nuestrapass | sha512sum&lt;/strong&gt;
&lt;br&gt;
&lt;b&gt;c9087d475d0307f2e4130f0d919084366c4572eb2ef88df62d560ba01d40a3d8ddf1c9186662903d3d27e164b6cf4acf5e1400095d3814716ac5176a756f84fe  -&lt;/b&gt;
&lt;/p&gt;
&lt;p&gt;
Con esto conseguimos una clave que supera ampliamente los 20 caracteres, y que podremos generar en cualquier equipo que utilicemos, recordando, simplemente, nuestra clave y el algoritmo de cifrado.
&lt;/p&gt;
&lt;p&gt;
Si vamos a cifrar un solo fichero, copiar y pegar la pass es suficiente. Pero si vamos a cifrar varios ficheros, podemos guardar la contraseña en un fichero que almacenaremos de forma temporal y que le pasárselo a &lt;b&gt;aespipe&lt;/b&gt; como parámetro:
&lt;/p&gt;
&lt;p&gt;
&lt;ol&gt;
&lt;p&gt;
&lt;li&gt;
Exportar la clave al fichero:
&lt;br&gt;
&lt;strong&gt;$ echo -n nuestrapass | sha512sum | cut -d &quot; &quot; -f1 &gt;&gt; passParaLaNube.txt&lt;/strong&gt;
&lt;/li&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;li&gt;
Pasarle el fichero con la clave a &lt;b&gt;aespipe&lt;/b&gt; como parámetro:
&lt;br&gt;
&lt;strong&gt;$ aespipe -e aes256 -P passParaLaNube.txt &lt;fichero &gt;ficheroCifrado.tgz&lt;/strong&gt;
&lt;/li&gt;
&lt;/p&gt;
&lt;li&gt;
Descifrar el fichero:
&lt;br&gt;
&lt;strong&gt;$ aespipe -e aes256 -d -P passParaLaNube.txt &lt;ficheroCifrado.tgz &gt;fichero&lt;/strong&gt;
&lt;/li&gt;
&lt;/p&gt;
&lt;/ol&gt;
&lt;/p&gt;
&lt;p&gt;
Si vamos a cifrar una cantidad considerable de ficheros, podemos automatizar la tarea con un pequeño script en bash:
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;
&lt;pre&gt;
#!/bin/bash
for i in *;
do 
   if [ $i != script -a $i != passParaLaNube.txt ];
   then
      aespipe -e aes256 -P passParaLaNube.txt &lt;$i &gt;$i.tgz
   fi;
done;
&lt;/pre&gt;
&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*&lt;b&gt;script&lt;/b&gt; es el nombre del script&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*&lt;b&gt;passParaLaNube.txt&lt;/b&gt; es el nombre del fichero con la contraseña para aespipe&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;i&gt;*&lt;/i&gt;Si lo que queremos es comprimir con contraseña, el script se puede adaptar cambiando la línea de aespipe por el comando que queramos ejecutar. Por ejemplo, para comprimir con contraseña usando &lt;b&gt;p7zip&lt;/b&gt; y header encryption (&lt;b&gt;mhe=on&lt;/b&gt;):
&lt;br&gt;&lt;strong&gt;7z a -r -mhe=on -p&lt;b&gt;CONTRASEÑA&lt;/b&gt; $i.7z $i&lt;/strong&gt;
&lt;br&gt;(También habría que quitar &lt;b&gt;-a $i != passParaLaNube.txt&lt;/b&gt; de la condición de evaluación del if ;) )
&lt;/p&gt;
&lt;p&gt;
(Segunda parte) &lt;a href=&quot;http://www.rubenhortas.blogspot.com.es/2012/05/usando-la-nube-con-sentido-comun-y_20.html&quot;&gt;usando la nube con sentido común y p7zip&lt;/a&gt;
&lt;/p&gt;</description><link>http://rubenhortas.blogspot.com/2012/05/usando-la-nube-con-sentido-comun-y.html</link><author>noreply@blogger.com (Rubén Hortas)</author><thr:total>0</thr:total></item><item><guid isPermaLink="false">tag:blogger.com,1999:blog-3568264525762188479.post-3227969678398251685</guid><pubDate>Sun, 08 Apr 2012 20:00:00 +0000</pubDate><atom:updated>2012-04-08T22:00:02.280+02:00</atom:updated><category domain="http://www.blogger.com/atom/ns#">debian</category><category domain="http://www.blogger.com/atom/ns#">gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">howtos_gnu/linux</category><category domain="http://www.blogger.com/atom/ns#">xfce4</category><title>activar los botones apagar, reiniciar, suspender e hibernar en debian xfce4 + xdm, editando un par de líneas</title><description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztf7XVGz3thwVvNL3edu02X6yMJbwK515aJbR1gNYu61Q5H3SjLcH_f7kE8vqyKJiy5EZZ1l2Fj8aUvMdnXrjOPEPG0bnhPdI1kYyykNPAjl6BY8sDfdxpuGUwvVtTaHd-0KNfB7q6NE/s1600/210px-Openlogo-debianV2.svg.png&quot; imageanchor=&quot;1&quot; style=&quot;clear:left; float:left;margin-right:1em; margin-bottom:1em&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;200&quot; width=&quot;162&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztf7XVGz3thwVvNL3edu02X6yMJbwK515aJbR1gNYu61Q5H3SjLcH_f7kE8vqyKJiy5EZZ1l2Fj8aUvMdnXrjOPEPG0bnhPdI1kYyykNPAjl6BY8sDfdxpuGUwvVtTaHd-0KNfB7q6NE/s200/210px-Openlogo-debianV2.svg.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Si tienes &lt;strong&gt;xfce4&lt;/strong&gt; con &lt;strong&gt;xdm&lt;/strong&gt; como display manager, te habrás encontrado con que los botones apagar y reniciar están sombreados ( &quot;greyed out&quot; / &quot;greyed&quot; ) o deshabilitados.&lt;br /&gt;
&lt;br /&gt;
En mi caso la documentación de &lt;strong&gt;xfce4&lt;/strong&gt; no funcionó, ni las soluciones alternativas propuestas en los wikis de &lt;strong&gt;xfce4&lt;/strong&gt;, qué decir de soluciones (a veces un tanto esotéricas) vistas a lo largo de una interminable lista de foros... Al final, después de mucho insistir y probar, encontré la solución.&lt;br /&gt;
&lt;br /&gt;
Los botones apagar, reiniciar, suspender e hibernar, se pueden activar sólamente editando un par de ficheros relativos a policykit.&lt;br /&gt;
&lt;br /&gt;
(Sí, es cierto, hay que tener instalado &lt;strong&gt;policykit&lt;/strong&gt;, &lt;strong&gt;consolekit&lt;/strong&gt; y &lt;strong&gt;upower&lt;/strong&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;Botones apagar y reiniciar&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;
Tenemos que editar el fichero &lt;strong&gt;org.freedesktop.consolekit.policy&lt;/strong&gt; en &lt;strong&gt;/usr/share/polkit-1/actions/&lt;/strong&gt; (como root)&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;rubenhortas@blog:~$ sudo vim /usr/share/polkit-1/actions/org.freedesktop.consolekit.policy&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Y añadir:&lt;strong&gt;&amp;lt;allow_any&amp;gt;yes&amp;lt;/allow_any&amp;gt;&lt;/strong&gt; al final de la sección &lt;strong&gt;&amp;lt;default&amp;gt;&lt;/strong&gt; en las secciones &quot;&lt;strong&gt;Stop the system&lt;/strong&gt;&quot; y &quot;&lt;strong&gt;Restart the system&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;vt-p&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_grRUl9i5472qIO8lTLN4DsMjP3SCh0LioWJ-08pv2avbGIXiuuu6knicyL9C08HdD9hc9AH_meMfH_7QauIERDq2YsWwcDbuGfrBOPQdNdU1KKfEvkIBr9Od7Z2w1Mo5t4nK3J_XQPY/s1600/policies00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;283&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_grRUl9i5472qIO8lTLN4DsMjP3SCh0LioWJ-08pv2avbGIXiuuu6knicyL9C08HdD9hc9AH_meMfH_7QauIERDq2YsWwcDbuGfrBOPQdNdU1KKfEvkIBr9Od7Z2w1Mo5t4nK3J_XQPY/s320/policies00.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
No lo he añadido en las secciones para cuando hay múltiples usuarios en el sistema, por razones obvias ;)&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;&lt;strong&gt;Suspender e Hibernar&lt;/strong&gt;&lt;/h3&gt;&lt;br /&gt;
Tenemos que editar el fichero &lt;strong&gt;org.freedesktop.upower.policy&lt;/strong&gt; en &lt;strong&gt;/usr/share/polkit-1/actions&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;rubenhortas@blog:~$ sudo vim /usr/share/polkit-1/actions/org.freedesktop.upower.policy&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
Añadir &lt;strong&gt;&amp;lt;allow_any&amp;gt;yes&amp;lt;/allow_any&amp;gt;&lt;/strong&gt;&amp;nbsp;al final de la sección &lt;strong&gt;&amp;lt;default&amp;gt;&lt;/strong&gt; en las secciones &quot;&lt;strong&gt;Suspend the system&lt;/strong&gt;&quot; e &quot;&lt;strong&gt;Hibernate the system&lt;/strong&gt;&quot;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;vt-p&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7SUxOCwJ4uoctxEsXNtqsyNoMjmnDUZHpnzVaVHCw-4KEXAjrwoBAjDX140-LCcfobUP1y-o4_IIktsWK9nUQJavMuR_K0T69p4QnzFu1ehT0DCPpf-Yt7HWGMK83Mt1aGeAxAOSTBo/s1600/policies01.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;273&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhB7SUxOCwJ4uoctxEsXNtqsyNoMjmnDUZHpnzVaVHCw-4KEXAjrwoBAjDX140-LCcfobUP1y-o4_IIktsWK9nUQJavMuR_K0T69p4QnzFu1ehT0DCPpf-Yt7HWGMK83Mt1aGeAxAOSTBo/s320/policies01.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Inmediatamente después de guardar los cambios estarán activos&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a class=&quot;vt-p&quot; href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5JYCskvOGW94ns4q1a0zQQWIj8wf_iWdY_EyAg56y04NPPoWuTX4Ph7nf4y01kxrlg30Pvyk0kcUrcCGdYi1SWgQJmPHU55RE0jICQn1OGVfnzoc8afeOZz5-wOtAHfFjRY-w5IQT5k/s1600/policies03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjy5JYCskvOGW94ns4q1a0zQQWIj8wf_iWdY_EyAg56y04NPPoWuTX4Ph7nf4y01kxrlg30Pvyk0kcUrcCGdYi1SWgQJmPHU55RE0jICQn1OGVfnzoc8afeOZz5-wOtAHfFjRY-w5IQT5k/s1600/policies03.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description><link>http://rubenhortas.blogspot.com/2012/04/activar-los-botones-apagar-reiniciar.html</link><author>noreply@blogger.com (Rubén Hortas)</author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhztf7XVGz3thwVvNL3edu02X6yMJbwK515aJbR1gNYu61Q5H3SjLcH_f7kE8vqyKJiy5EZZ1l2Fj8aUvMdnXrjOPEPG0bnhPdI1kYyykNPAjl6BY8sDfdxpuGUwvVtTaHd-0KNfB7q6NE/s72-c/210px-Openlogo-debianV2.svg.png" height="72" width="72"/><thr:total>0</thr:total></item></channel></rss>