Todas las entradas de: pruebas

Crear maquinas virtuales con VirtualBox

Virtualbox_logoLos equipos actuales se suelen desaprovechar en un alto porcentaje, más de la mitad del tiempo, los equipos están sin hacer nada o en un porcentaje muy bajo de ocupación.

Para aprovechar estos tiempos se crearon unos programas que permiten poder instalar otro sistema operativo como si se estuviera ejecutando en la propia maquina, pero en realidad lo hace sobre una maquina virtual.

El funcionamiento de estos sistemas de es fácil, lo primero que hace falta es tener un sistemas anfitrión donde poder correr el programa de virtualización, estas maquinas no tiene por que tener un sistema operativo con los que normalmente conocemos (windows, linux, OSx, etc), puede ser unas pequeñas instrucciones en una memoria de la maquina que arranque las dispositivos y después llame al programa de virtualización. Luego están los sistemas invitados en los que podemos instalar desde la ultima versión de Windows 8.1, hasta MS-Dos con windows 3.1, cualquier versión de Linux o Unix, o OSx, IBM OS/2, etc.

En el mercado hay varias sistemas de virtualización, los más populares son VMWare, que copa casi todo el mercado, sobre todo para grandes sistemas, también tiene una versión para uso personal la VMWare Player. Luego esta VirtualBox, en la actualidad de Oracle y con una versión de software libre, esta es la versión que a mi personalmente más me gusta para pequeños sistemas. Microsoft también tiene su sistema de virtualización, pero este daba problemas cuando intentabas instalar alguna versión de Linux, eso si con los Windows no daba ningún problema, en la actualidad no se como trabaja.

VirtualBox lo podemos encontrar para cualquier sistema operativo, desde Linux, Windows o OSx. Solo tenemos en la pagina de VirtualBox y podemos descargar la versión para muestro sistemas.

Download VirtualBox

Una vez instalado ya podemos crear nuestro primer sistema virtual.

Para crear nuestro sistema virtual tenemos que asegurarnos de tener espacio suficiente en el disco duro para crear el fichero que contendrá el disco virtual, una copia del sistema operativo que queramos crear, puede ser en CD, DVD o una imagen ISO.

Arrancamos el programa de VirtualBox,

Ubuntu de pruebas - VirtualBox -1

Para crear nuestra maquina pulsamos en el botón de «Nueva», donde nos aparecerá esta venta. En la casilla de «Nombre» insertamos el nombre con con el que identificaremos nuestra maquina. Si el nombre hace referencia algún sistema operativo que reconozca el VirtualBox, este no cambiara automáticamente las casillas de «Tipo» y «Versión». Teniendo solo que verificar que la versión es la correcta. En el caso de que no la reconozca lo tendremos que hacer manualmente. En el caso de las distribuciones linux, posiblemente no se encuentre en las opciones disponibles, a no ser que sean una de las habituales, Ubuntu, Suse, OpenSuse, Debian, RedHat, etc. Si no aparece podemos  seleccionar la opción de » Other Linux (32 bit)» si es una versión de 32 bit, «Other Linux 64 bit» para una de 64 bit, o seleccionar la versión de la que se base esa distribución.

Captura de pantalla de 2015-01-29 13:38:47Lo siguiente sera indicar cuanta memoria va ha utilizar la maquina virtual, ha que tener en cuenta que esta se le quitara al la maquina anfitrión, por lo que hay que elegirla con cuidado. El VirtualBox indica una cantidad por defecto dependiendo del sistema elegido. Aunque nosotros podremos cambiarla a la cantidad que queramos. El VirtualBox también nos marca unas zona, de color verde y rojo, para estar tranquilos de no  perjudicar al sistema anfitrión.

Captura de pantalla de 2015-01-29 13:40:28En la siguiente venta seleccionaremos si nuestro sistema va ha tener o no disco duro, y si de tenerlo le asignaremos uno nuevo, o si por lo contrario este ya existe. Por internet hay muchos sistemas ya virtualizados, que lo único que tenemos que hacer es descargarlo, indicarle al VirtualBox que ese es el que queremos utilizar y listo. En este caso seleccionaremos la opción de «Usar un archivo de disco duro virtual existente«, seleccionamos el fichero descargado y ya lo tendríamos funcionando.

Captura de pantalla de 2015-01-29 13:41:15Si hemos elegido la opción de crear uno nuevo, la siguiente ventana nos pedirá que elijamos el tipo. Para empezar los mejor es dejar la opción por defecto, tipo de disco «VDI (VirtualBox Disk Image)«.

Captura de pantalla de 2015-01-29 13:42:13Los disco virtuales pueden ser de dos tipos, de «Tamaño fijo«, se creara un fichero con el mismo tamaño que tamaño tendrá nuestro disco virtual. O «Reservado dinámicamente«, en este caso el fichero que almacena el disco se ira ajusta a las necesidades de uso del disco virtual de la maquina creada. Esta opción no quiere decir que podremos usar todo el tamaño del disco real, el tamaño del disco virtual se ira ajusta hasta llegar al tamaño que fijaremos en la siguiente ventana.

Captura de pantalla de 2015-01-29 13:42:39En esta ventana estableceremos el tamaño que el disco duro va ha tener de nuestra maquina virtual. En esta ventana también configuraremos donde queremos que se graben los ficheros que van ha contener nuestra maquina virtual.

Captura de pantalla de 2015-01-29 13:43:13Y con esto solo nos queda pulsar el botón de «Crear«, y el VirtualBox creara los ficheros de configuración, de disco virtual, etc. de nuestra maquina.

Captura de pantalla de 2015-01-29 18:05:11Una vez que ya tengamos creada nuestra maquina solo nos queda configurar la maquina, para una configuración básica, solo tendremos que indicarle donde esta el sistema desde donde vamos hacer la instalación. Para ello pulsaremos sobre el botón de «Configuración«. Dentro de esta ventana iremos a la opción de «Almacenamiento«, seleccionaremos la unidad de «CD», que nos indicara que esta «Vacía«. Luego en la parte derecha de la ventana , en la parte de «Atributos«, marcaremos la opción de «CD/DVD vivo» si la copia de nuestro sistema la tenemos en CD/DVD, o si por el contrario, nuestro sistema esta en un fichero ISO, pulsaremos el icono del cd para cargar la imagen.

Captura de pantalla de 2015-01-29 18:05:11La otra configuración básica que nos queda por hacer sera  elegir que tipo de red queremos para nuestra maquina virtual. Si solo queremos es tener un acceso básica a la red, usar internet, sin querer acceder a otras maquinas de la red, podemos dejar la opción por defecto «NAT«.

Captura de pantalla de 2015-01-29 18:24:02Pulsamos el botón de «Aceptar» para guardar la configuración y ya podemos pulsar el botón de «Iniciar». Esto encenderá nuestra maquina como si pulsaremos el  botón de encendido de nuestra maquina física. Lo único que nos queda es instalar el sistema de la misma manera que lo haríamos en una maquina normal.

Windows 7 - 1

Esto es la creación de una maquina virtual básica. También se le puede configurar para que una de las carpetas del sistema anfitrión funcione como una unidad de red compartida, que cuando insertemos cualquier dispositivo USB automáticamente  se active en la maquina invitada, También podemos indicarle cuantos procesadores va ha tener, cuantas pantallas, etc. También, y esto es una posibilidad que más provecho le encuentro, cuantas tarjetas de red va ha tener, esto no quiere decir que las tengamos que tener físicamente, podemos tener una física y hasta cuatro virtuales, y además,  como queremos que funcionen, si puede incluirse como un equipo normal a la red, si por el contrario solo puede ser accesible desde otras maquinas virtuales de su propio grupo, etc.

Pero eso creo que sera para otro post. Si tienes alguna pregunta, no dudes en dejar un comentario.

Crear gráficos de datos en c#

graph_fixed_x_rangeLa mejor formar de ver y entender los datos que capturamos desde nuestros sensores, es mediante la utilización de gráficos.

Si trabajamos con C# esta tarea es relativamente sencilla, gracias al controlador que por defecto trae el Visual C#. Este controlador nos permite crear gráficos de diferentes formas, de lineas, tarta, columnas,  puntos, etc.

Los datos se los podemos facilitar tanto en tiempo real añadiéndolos directamente los valores al gráfico, o mediante una base de datos.

Para añadir el gráfico a nuestro formulario solo tendremos que añadir el controlador «Chart» que se encuentra dentro de la sección «Datos».

Con esto, ya podríamos empezar a mostrar nuestros datos, el tipo de gráfico por defecto es un gráfico de columnas. para añadir los datos solo tendríamos que utilizar el siguiente comando.

chart1.Series[0].Points.addXY(ValorX, ValorY);

Pero el sistema de gráficos de columnas no es que sea el más idóneo para mostrar la información de sensores, lo normal sera utilizar un gráfico de lineas, para cambiar el tipo de gráficos tendremos que ir  a:

  1. Propiedades del gráfico
  2. Series, Seleccionar la serie que queremos modificar (por defecto «Series1».
  3.   En la sección «Gráfico», en «ChartType», seleccionar el tipo de gráfico.
  4.  Pulsar en «Aceptar», y listo ya tenemos cambiado nuestro tipo de gráfico.

Si lo queremos hacer mediante código, tendremos que introducir la siguiente instrucción:

chart1.Series["Series1"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;

En la parte de «Series[«Series1″]», en este caso hacemos la llamada utilizando el nombre de la serie, en este caso es el de por defecto «Series1», también podemos hacer la llamada utilizando su posición en la lista de las series, acordándose que toda lista empiezan en el «0» (cero). Esto «Series[«Series1″]», y esto «Series[0]», seria lo mismo.

Y con esto ya tendríamos creado nuestro gráfico y seleccionado el tipo de gráfico para la muestra de datos básica, pero funcional.

Ejemplo simple de lo descrito en el artículo, ejemplo creado con Visual Studio Express 2012:

Problema con Aircrack-ng y el fixed channel mon0: -1

Wifi-logoHaciendo pruebas con una nueva tarjeta wifi (TP-LINK TL-WN722N – Adaptador de red USB (3 años de garantía, WPS, alta sensibilidad)), estuve probando si valía para auditorías de redes wifi. Para hacer esto lo habitual es usar el software de Aircrack-ng. Hace mucho que no hacia algo de esto pero con el nuevo chisme me entro el gusanillo.

Problema con Aircrack-ng y el fixed channel mon0: -1

Pero al final del proceso me encontré con una problema con Aircrack-ng, cuando se tiene que enlazar el adaptador al AP para inyectar trafico, me da un error diciendo que el adaptador esta escuchado en el canal -1 y no puede enlazar con el AP (fixed channel mon0: -1).

Pero lo primero voy ha explicar como lo hago, ya que el problema con Aircrack-ng es un problema heredado de todos los pasos, por lo menos en mi caso.

Lo primero que se tiene que hacer es poner el adaptador en modo monitor, esto se puede hacer con el siguiente comando de la suite.

sudo airmon-ng start wlanx

Donde wlanx es el nombre de nuestro dispositivo. Esto nos crea un nuevo interfaces que suele ser mon0 (el 0 puede cambiar si este estuviera ocupado, pasado a 1, 2 3, etc. según el que este libre). Si no sabemos como se llama el adaptador, podemos obtener una lista de todos nuestros adaptadores de red con el siguiente comando.

ifconfig

Este nos devolverá una lista parecida a esta.

lo        Link encap:Bucle local  
          Direc. inet:127.0.0.1  Másc:255.0.0.0
          Dirección inet6: ::1/128 Alcance:Anfitrión
          ACTIVO BUCLE FUNCIONANDO  MTU:65536  Métrica:1
          Paquetes RX:46159 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:46159 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:0 
          Bytes RX:3906175 (3.9 MB)  TX bytes:3906175 (3.9 MB)

wlan2     Link encap:Ethernet  direcciónHW XX:XX:XX:XX:XX:XX  
          Dirección inet6: xxxx::xxxx:xxxx:xxxx:xxxx/64 Alcance:Enlace
          ACTIVO DIFUSIÓN MULTICAST  MTU:1500  Métrica:1
          Paquetes RX:5 errores:0 perdidos:0 overruns:0 frame:0
          Paquetes TX:42 errores:0 perdidos:0 overruns:0 carrier:0
          colisiones:0 long.colaTX:1000 
          Bytes RX:1048 (1.0 KB)  TX bytes:10774 (10.7 KB)

En mi caso el dispositivo es el WLan2.

El siguiente paso seria ver que redes tenemos a nuestro alcance, comando airodump-ng.

sudo airodump-ng mon0

Nos mostrara la lista de redes que tenemos a nuestro alcance.

Una vez que sabemos que red vamos a testear, ejecutamos el comando airodump-ng para que empiece a capturar el trafico de esa red y guardar el trafico en un fichero.

sudo airodump-ng -w fichero_donde_guardamos_el_trafico --bssid (MAC del AP a probrar) -c (Canal del AP) mon0

Y nos mostrara una cabecera parecida a esto.

CH  9 ][ Elapsed: 4 s ][ 2014-12-06 23:04 ][ fixed channel mon0: -1

Y aquí se muestra si vamos ha tener el problema o no. Ya que airodump-ng esta fijando el canal de escucha al -1.

Después de esto solo tendríamos que utilizar aireplay para inyectar trafico para acelerar la recogida de datos (hay varios métodos, dependiendo de la protección de la wifi), la mas básica seria de la siguiente manera.

sudo aireplay-ng -1 10 -e Nombre_del_AP -a (MAC del AP) -h (MAC de nuestro adaptador) mon0

Y hay dependiendo el tipo de adaptador nos puede devolver el siguiente problema.

Waiting for beacon frame (BSSID: XX:XX:XX:XX:XX:XX) on channel -1

En el propio mensaje también nos dice como podemos ignorar este problema.

Couldn't determine current channel for mon0, you should either force the operation with --ignore-negative-one or apply a kernel patch

Quedando el comando de la siguiente forma.

sudo aireplay-ng -1 10 -e Nombre_del_AP -a (MAC del AP) -h (MAC de nuestro adaptador) mon0 --ignore-negative-one

Pero esto a veces no funciona, (como me a pasado) no nos deja enlazarnos al AP. En alguno sitios, explican que hay que instalar unos parches para el núcleo, otros que parchear el driver del adaptador, y no se que mas historias complicadas.

Para mi adaptador TL-WN722N (se junta podo en este adaptador, bueno, bonito y barato). La solución fue mucho más fácil que todo eso.

En vez de poner en modo monitor nuestro adaptador utilizando el comando de aircrack-ng (airmon-ng), solo es necesario ponerlo con los siguientes comandos.

sudo ifconfig wlanx down
sudo iwconfig wlanx mode monitor
sudo ifconfig wlanx up

Lo que hacemos con estos es lo siguiente:

ifconfig wlanx down: Desactivamos nuestro adaptador.

iwconfig wlanx mode monitor: activamos el modo monitor en nuestro adaptador (no me he equivocado es con «W» IWCONFIG)

ifconfig wlanx up: volvemos a activar nuestro adaptador, pero esta vez en modo monitor.

Ahora solo tenemos que poner los siguientes comandos para evitar problema con Aircrack-ng, pero en vez de poner mon0, tendremos que poner el nombre de nuestro adaptador (wlanx).

Y con esto ya tenemos resuelto el problema de «fixed channel mon0: -1».

No se si esto solo soluciona el problema con mi adaptador en concreto, si tu tienes otro y te ha funciona, o por el contrario no te funciona, puedes dejar un comentario con tu experiencia.

Error – 413 Request Entity Too Large en LIghttpd

Servidor web Lighttpd
Servidor web Lighttpd

Estando montando un servidor ownCloud, bajo un servidor Debian y un servidor web Lighttpd, al empezar a subir los  ficheros, me daba este error, «413 Request Entity Too Large«, , este error ocurre cuando el tamaño del fichero que queremos subir es mas grande del limite establecido para ello, y no me dejaba subir ningún fichero que fuese mayor de 70kb.

En un principio pense que la configuración del php estaba limitando el tamaño del los ficheros que se podían subir, edite el fichero de configuración php.ini y comprobé los parámetros que limitan la subida de los archivos.

post_max_size   256M
upload_max_filesize 256M

Los limite a 256 megas, pero aun así, el problema seguía.

Buscando por internet, vi que también el servidor Lighhtpd tiene unos parámetros que podían estar provocando la limitación de subida de los ficheros.

server.upload-dirs = ("/var/www/tmp")
server.max-request-size = 2097152
server.network-backend = "writev"

Estos son los parámetros que normalmente hacen referencia para poder establecer la limitación de la subida de los ficheros.

El parámetro «server.max-request-size» es el que establece el tamaño máximo de subida. El valor introducido esta  en Kb. Pero da igual el valor que se le ponga, esto no provoca el error en este momento.

El parámetro «server-network-backend» establece el permiso de escritura en la carpeta temporal.

y luego esta «server.upload-dirs» donde indicamos la carpeta temporal donde se va ha realizar la descarga. Este parámetro también viene por defecto en el fichero de configuración.

Y este es el parámetro que provoca este error. Da igual los permisos que se le den a esa carpeta, o quien sea el propietario de la carpeta. Mientras ese parámetro este en el fichero de configuración nos saltara ese error.

 

 

Como cambiar la mac de nuestras tarjestas de red en Linux

Cambiar mac en Linux
Cambiar la mac de nuestra tarjeta en Linux

En algunas ocasiones se necesita cambiar la mac de nuestras tarjetas para poder conectarnos a una determinada red, en muchos administradores bloquean el acceso a la red por mac, pero cuando tienes que cambiar un equipo que ha fallado o tienes que conectar tui equipo para hacer algún trabajo de mantenimiento, esta medida te bloquea el acceso.

Para solucionar este problema tienes varias opciones, o llamas al administrador para que te active la nueva mac, o cambias la mac por una que este validada en el sistema.

El llamar a los administradores suele ser un coñazo, no todos saben como activarla y te toca esperar hasta que aparezca uno que te lo pueda hacer, perdiendo tiempo innecesariamente.

La otra opción es cambiar la mac. Para hacer esto en linux solo tenemos que ejecutar los siguientes comandos para hacer este cambio.

Lo primero desactivamos la tarjeta a la que vamos hacer el cambio

sudo ifconfig eth0 down

Procedemos al cambio de la mac

sudo ifconfig eth0 hw ether 01:02:03:04:05:06

Y levantamos el adaptador

sudo ifconfig eth0 up

Con esto habremos cambiado nuestra mac, por lo menos hasta que volvamos a reiniciar nuestro equipo.

Si esto lo necesitamos que sea permanente, tendremos que hacer un script y ponerlo en el arranque de nuestro sistema.

Script para hacer permanente el cambio.

#!/bin/bash
ifconfig eth0 down
ifconfig eth0 hw ether 02:01:02:03:04:08
ifconfig eth0 up
/etc/init.d/networking restart

La ultima linea no es indispensable. Guardamos nuestro script en «/etc/init.d/» y le damos permisos de ejecución.

sudo chmod +x cambiarmac

Y creamos un enlace simbólico a «/etc/rc2.d»

sudo ln -s /etc/init.d/cambiarmac  /etc/rc2.d

Y cambiamos el nombre.

 sudo mv /etc/rc2.d/cambiarmac cambiomacinicio

Y listo, solo tenemos que reiniciar nuestro equipo para asegurarnos que el cambio de la mac se realiza.

Otra forma de realizarlo es utilizando el comando «ip», hace lo mismo que el anterior.

sudo ip link set dev eth0 down
sudo ip link set dev eth0 address 01:02:03:04:05:06
sudo ip link set dev eth0 up

La manera de funcionar es la misma que con el comando «ifconfig». Desactivamos la tarjeta que vamos ha cambiarle la mac, le indicamos la nueva mac y volvemos ha activar la tarjeta.

Hay otras formas de hacerlo, pero estas no suele hacer falta instalar nada, todos suelen venir por defecto instalados.

Si quieres puedes dejar un comentario …

Activar la radio frecuencia de las tarjetas wifi en Linux

Activar la radio frecuencia
Peligro WiFi publicas

Para activar la radio frecuencia de nuestras tarjetas wifi (TP-LINK TL-WN722N – Adaptador de red USB (3 años de garantía, WPS, alta sensibilidad)) solo tenemos que saber:

  1.  como se llama nuestro dispositivo. Para  obtener esta información solo tenemos que escribir en un terminal
    iwconfig

    Este comando nos mostrara todo las tarjetas de red wireless, mostrando algo como esto.

    usuario@equipo:~$ iwconfig 
    eth0      no wireless extensions.
    
    wlan2     IEEE 802.11bg  ESSID:off/any  
              Mode:Managed  Access Point: Not-Associated   Tx-Power=off   
              Retry short limit:7   RTS thr:off   Fragment thr:off
              Power Management:on
              
    lo        no wireless extensions.
  2.  Con la información que nos ofrece en comando sabremos si la radio frecuencia de nuestra tarjeta esta o activada. Para saber el estado de la tarjeta nos tenemos que fijar el la opción «Tx-Power», si esta indica que es igual a «off», nuestra tarjeta tiene la radio frecuencia desactivada, de lo contrario nos indicara la potencia de la señal en «dBm».
  3. Para activar la señal de una determinada tarjeta ejecutaremos el comando anterior con los siguientes parámetros y con privilegio de «root».
    sudo iwconfig <tarjeta> txpower on

    Donde «tarjeta» escribiremos el nombre que nos ha dado el comando anteriormente, en mi caso quedaría así

    sudo iwconfig wlan2 txpower on
  4.  Si volvemos a ejecutar de nuevo el comando, sin ningún parámetro, nos tendría que devolver algo como esto.
    usuario@equipo:~$ iwconfig 
    eth0      no wireless extensions.
    
    wlan2     IEEE 802.11bg  ESSID:off/any  
              Mode:Managed  Access Point: Not-Associated   Tx-Power=27 dBm   
              Retry short limit:7   RTS thr:off   Fragment thr:off
              Power Management:on
              
    lo        no wireless extensions.
  5.  Para desactivarlo solo tendremos que volver a repetir el mismo comando con los parámetros, pero esta vez, en vez de poner «txpower on» tendríamos que escribir «txpower off».
    sudo iwconfig wlan2 txpower off

Si lo que queremos es poner nuestro equipo en modo «avión», es decir, desactivar todos los componentes que tengamos que emitan radio frecuencias (bluetooth, wifi, gprs, etc). Podemos ejecutar el siguiente comando.

rfkill block all

Este, desactivara todos los dispositivos que tengamos funcionando en nuestro ordenador que emitan una radio frecuencia.

Si solo queremos bloquear, por ejemplo, son los dispositivos wifi, los tendremos que  ejecutar el siguiente comando.

rfkill block wifi

Para desbloquear, cambiaremos el parámetro «block» por «unblock»

rfkill unblock wifi

Y esto son una de las opciones que tenemos para activar la radio frecuencia de nuestros dispositivos.

Si este comando no estuviera instalado en nuestro equipo lo podemos instalar de la siguiente forma.

sudo apt-get install rfkill

Si sabes de algún otro método no dudes en compartirlo y deja un comentario.

 

Como mandar un correo mediante Python

Enviar correo con Python y Gmail
Enviar correos mediante smtplib de python y una cuenta de gmail

En algunas ocasiones necesito enviar los resultados que me devuelve el arduino a mi teléfono para avisarme de alguna anomalía. Lo primero que se le viene a la cabeza a uno es hacer un programa para el móvil para recibir los datos, ahora que se ha puesto de moda hacer «app’s» para todo ( ya no son programas o aplicaciones ahora son «app’s»).

Pero yo no necesito un programa que me este ocupando espacio y memoria en el teléfono para recibir una alerta una vez al mes a lo sumo. Aprovechando que el «android» te pide una dirección de correo para poder acceder a «Google Play» y que además, esta en todo momento mirando el contenido de esa cuenta, lo mas fácil es que el arduino mande un correo a esa cuenta.  Por ello le he implementado una opción al programa que gestiona el arduino para que me mande el correo.

Para poder enviar un correo a través de Python, lenguaje con el que gestiono el arduino,  solo tenemos que hacer uso de la librería «smtplib», esta librería nos proporciona todas la funciones necesarias para poder enviar el correo.

Lo primero que haremos el importar la función desde la librería.

from smtplib import SMTP

Una vez que ya podemos utilizar la librería, creamos la variable que gestionara el envío.

EnviarCorreo = SMTP()

Nos conectamos al servidor de correo saliente de gmail, smtp.gmail.com que esta a la escucha en el puerto 587, para utilizar cualquier otro servidor tendremos que cambiar el servidor y el puerto por el que este escuchando.

EnviarCorreo.connect("smtp.gmail.com", 587)

El servidor de gmail necesita que habilitemos el modo TTL, esto es uno de los métodos de enviar el correo de forma segura, el otro modo seria utilizar SSL.

EnviarCorreo.starttls()

Esto me ha dado problemas algunas veces, buscando por internet he visto que varia gente utiliza esta forma para activar el TTL.

EnviarCorreo.ehlo()
EnviarCorreo.starttls()
EnviarCorreo.ehlo()

Lo que hace la función «.ehlo()» es decirle a «EnviarCorreo» que se ponga en modo de enviar un correo. Es decir, ponemos la función en modo de enviar correo, le decimos que vamos ha enviar el correo utilizando TTL, y volvemos a indicarle que se vuelva poner modo de enviar un correo, esta vez, si para enviar el correo.

Antes de enviar el correo, nos identificamos en el servidor de la siguiente forma.

EnviarCorreo.login(usuario@gmail.com, contraseña_de_la_cuenta)

Ahora solo nos queda montar el correo que queremos enviar. Para ello tenemos que crear tanto la cabecera del mensaje, donde ira la dirección de quien lo envía, la dirección de quien lo recibe, el asunto del mensaje, y demás información que podemos incluir en la cabecera, y por ultimo crear el cuerpo del mensaje.

Cabecera = 'To:' + Direccion_Desti + '\n'      
Cabecera += 'From: ' + Direccion_Remi + '\n'
Cabecera += 'Subject: ' + Asunto_Mensaje + '\n'+'\n'

Esta seria una cabecera básica, al final del cuerpo incluimos dos saltos de linea, porque? no lo se aun.

Para crear el cuerpo solo tenemos que pasar el contenido del mensaje a una variable del tipo string.

CuerpoMensaje = "Esto es el cuerpo del mensaje" + '\n' + '\n'

Como en la cabecera, terminamos el cuerpo del mensaje con dos salto de linea, la explicación no la se todavía.

Y ya tenemos todo listo para enviar el correo.

EnviarCorreo.sendmail(Direccion_Remi, Direccion_Desti, Cabecera + CuerpoMensaje)

Y con esto, y si todo esta bien, ya hemos enviado el correo. Ahora solo nos queda cerrar la comunicación con el servidor SMTP.

smtpserver.close()

Y listo, ya hemos mando la alerta a nuestro teléfono móvil, y sin tener que instalar ninguna aplicación nueva y sin tener que hacer nada en el teléfono.

Que te ha parecido?

 

Crear usuario en Linux y asignarle un directorio

Crear usuario en Linux mediante consola
Como añadir usuarios a nuestro linux mediante la terminal.

Para crear usuarios en Linux se puede hacer de varios formas, con algún entrono gráfico, o a través de la linea de comandos. Con Ubuntu trae por defecto uno. Pero cuando se esta administrando un servidor lo normal es no tener la ayuda de ninguna de estos programas, para ello tendremos que tirar de comandos en la terminal.

Para añadir un usuario podemos utilizar el comando «useradd», donde podemos indicar, si creamos automáticamente la carpeta personal del usuario, que grupo se le añadiría como principal y a que otros sera  agregado o que shell utilizara .

sudo useradd -m -g Usuarios -G gestion - s /bin/bash usuario

Explicación:

  • -m: Crear automáticamente la carpeta del usuario el la carpeta /Home/<NombreUsuario>
  • -g: grupo principal al que sera agregado
  • -G: Grupos secundarios al que pertenecerá.
  • -s: Shell que utilizara por defecto el usuario.
  • usuario: Nombre del usuario.

Despues de este comando queda asignar la contraseña, para ello utilizamos el comando «passwd».

sudo passwd usuario

Luego nos pide que tecleemos la contraseña y que la repetimos para confirmar.

Con esto ya tendríamos creado nuestro usuario y asignada su contraseña.

Esta seria la opción estándar, pero ha mi me gusta hacerlo de la siguiente forma.

Creo el usuario

sudo useradd usuario

Le creamos la contraseña.

sudo passwd usuario

De momento nada especial, salvo que el usuario lo creo sin ningún parámetro.

Ahora creamos la carpeta del usuario donde a mi me da la gana. Por ejemplo.

sudo mkdir /Usuarios/Clase1/usuario

Ponemos como propietario de esa carpeta al usuario que hemos creado.

sudo chown usuario:usuario -R /Usuarios/Clase1/usuario

Con el parámetro «-R» indicamos que le vamos asignar el propietario de esa carpeta al usuario indicado, y además a todos los subdirectorios y ficheros que contenga.

Le asignamos los atributos de «755».

sudo chmod 755 -R /Usuarios/Clase1/usuario

El parámetro «-R» hace lo mismo que en el comando anterior.

Y asignamos la carpeta al usuario como su carpeta personal

sudo usermod -d /Usuarios/Clase1/usuario usuario

Con el parámetro «-d» indicamos que le vamos asignar su carpeta personal.

Ahora solo queda asignar a que grupos va ha pertenecer. Esto lo podemos hacer de dos maneras, mediante el comando «adduser», o editando el fichero «/etc/group/».

Si utilizamos el comando «adduser» lo podemos hacer de la siguiente manera:

sudo adduser usuario grupo

Yo, si tengo que añadirle a varios grupos, prefiero editar el fichero «/etc/group», y añadir al usuario a cada grupo. Para ello editamos el fichero.

sudo nano /etc/group/

No desplazamos hasta la linea del grupo que deseamos, y añadimos al usuario al final de la linea, si ya hay otro usuario, lo separamos por una coma sin espacios.

dialout:x:20:usuario1,usuario2,usuario3

Para finalizar me aseguro que el shell sea el que quiero, en mi caso me gusta bash. Para ello lo hago o con el comando «usermod -s» o editando el fichero «/etc/passwd».

Usando el comando «usermod -s».

sudo usermod -s /bin/bash

El parámetro «-s» le indicamos al comando que vamos a asignarle un nuevo shell.

Si nos decantamos por editar el fichero, lo abrimos, y nos desplazamos hasta el usuario deseado, al final aparecerá el shell que va a usar, si no es el que queremos lo cambiamos por el deseado.

usuario1i:x:1000:1000:Usuario1,,,:/Usuarios/Clase1/usuario1:/bin/bash

Si no queremos que tenga ningún shell asignado podemos asignarle «/bin/false».

Y con esto tendríamos  nuestro usuario creado y configurado. Si tenemos que gestionar muchos usuarios, y  a menudo se puede crear un script con todos los pasos.

Espero que sirva de ayuda, puedes dejar un comentario con tu opinión.

Almacenar el contenido de una pagina html en una variable en Python

wpid-python-thread-exitEn alguna ocasión no interesa guardar el contenido de una pagina en una variable para luego poder procesarla, ya sea para obtener datos relevantes de ella, para indexar su contenido, etc.

Para hacer esto en python solo tenemos que importar la librería «urllib»

import urllib

Dentro de esta librería podemos encontrar el comando «urlopen», al que tenemos que pasar como parámetro la url de la pagina que queremos abrir, el comando nos devolverá  una cadena con el contenido de la pagina.

sContenidoPagina = urllib.urlopen("http://www.todavinose.com")

Una vez almacenada la pagina en la variable, ya podemos procesarla como deseemos, utilizando alguna tecnica de «parse» para localizar las etiquetas, buscar la información deseada, etc.

Código completo, y muestra del código fuente de la pagina leída.

import urllib

sContenidoPagina = urllib.urlopen("http://www.todavianose.com")

print sContenidoPagina.read()

Fácil y sencillo como siempre con Python

 

 

Confirmado: La red TOR ya ha sido comprometida

f6c1c1324eroject.jpgDesde hace tiempo se viene hablando de la posible rotura de la protección del anonimato dentro  de la red TOR. Y como suelen decir «Cuando el río suena agua lleva».

En el blog de la red TOR han publicado que durante los últimos 6 meses, se viene detectando multitud de paquetes modificados para poder recabar información que puede llevar a la localización de los nodos, y por con ello localizar el origen de las comunicaciones que por ellos pasan.

Estas modificaciones en los paquetes pueden devolver información muy relevante, como puede ser la distancia a la que se encuentra el nodo, simplemente calculando el tiempo que ha tardado en llegar a el, router por donde a pasado, etc.

La red TOR se a colocado en el punto de mira de todas las agencias de información de todo el mundo. Hace pocos días se publicaba, que el gobierno ruso ofrecía 110.000$ por cualquier fallo en la red TOR. La NSA lleva ya mucho tiempo almacenando información que circula por la red, para una vez que se rompa el algoritmo de encriptación poder analizar esos datos. También la NSA ya ha utilizado varios fallos que se encontraban en al navegados de TOR, el TOR Browers, llegando a localizar ha varias personas con ello. También se ha odio, pero esta sin darle demasiada credibilidad, que la agencia de Israel también a podido utilizar varios fallos en la red para localizar a terroristas.

La red TOR da cobertura a grupos de delincuencia que las agencias de inteligencia de todos los países quieren localizar, por ello, no escatimaran en recursos para romper la seguridad de TOR.