domingo, 29 de julio de 2012

Virus en Linux y confusiones varias...

Hola a todos,

Existe mucha palabrería en internet en la que dicen como hacer virus para Linux, o dicen que hacen falta antivirus para Linux....

Hay blogs en la que incluso ponen como crear "Virus" para Linux.

Hoy quiero dejar muy claro como funciona el sistema para que comprendamos y podamos rebatir algunas idioteces de lamers.

Linux, está formado por una estructura de ficheros todos ellos controlados y marcados con permisos para el dueño, para grupos de usuarios y para el resto de usuarios.

Esto es, que un archivo del sistema, no tiene los mismos permisos ni el mismo dueño que uno de un usuario cualquiera.

Para comprender un poco más, sobre permisos y datos básicos de los sistemas Linux, deberían visitar este enlace:

Conocer lo mínimo sobre Ubuntu

Hay gente que está empeñada en decir que hacer virus para Linux es muy sencillo.
Para empezar, no es tan sencillo, y además, eso que ellos llaman virus no son más que "feutures" (configuración o característica que agregamos a algo.)

Es que hay gente que dice que hacer un virus es tan fácil como eliminar o modificar un lanzador para que haga algo malicioso.
Para que haga algo malicioso primero tienes que llegar a modificar ese archivo, y segundo te pedirá credenciales para poder hacer daño y no podrá hacer nada más si no le das esas credenciales.... (Le darías credenciales si te pide la pass y se la das como si nada)

Este es el gran problema de los nuevos usuarios de Linux, que están acostumbrados a siguiente, siguiente, siguiente.... y eso es peligroso.

Por regla general, ningún programa de uso cotidiano de vuestro sistema os pedirá la clave de usuario para hacer su cometido, si lo hiciese es porque dicho programa quiere acceder al sistema para hacer modificaciones o comprobaciones.

Vamos! que no sería lógico que al abrir la calculadora os pidiese pass...

El fallo aquí sería poner la pass, puesto que lo más normal en este caso sería que el código de el programa de la calculadora esté alterado mal intencionadamente por terceros para acceder al sistema.

En realidad aquí el problema lo genera el usuario, por dar la clave sin estar seguros de por qué un programa la pide.



Para prevenir estos problemas hay una series de reglas básicas que tenemos que tener en cuenta a la hora de usar un sistema Linux.

  • Usar siempre los repositorios oficiales para descargar programas.
  • Evitar descargar, compilar, e instalar programas de dudosa procedencia.
  • Usar la lógia, no es normal que un programa pida clave, a no ser que estés haciendo algo administrativo.
  • Nunca, jamás, permanecer en modo root durante la sesión con la excusa de no tener que meter la clave o modificar el archivo sudoers para evadirla.
  • Nada de siguiente, siguiente, siguiente.....
  • No modificar la estructura de ficheros del sistema o sus permisos si no sabes lo que haces.
  • Nada de copy-paste sin conocer que es lo estás haciendo, a veces alguien te da un código de buena fe o lo copias de un blog como este, pero si hay error en un comando te puedes quedar con un sistema inestable o sin él, perder datos valiosos y comprometer tu privacidad.

Esto son cosas que si o sí tenemos que contemplar.
Para cualquier duda siempre está la comunidad de usuarios, donde todos compartimos nuestras experiencias y soluciones a problemas con nuestros sistemas.

Con todo esto, no quiero decir que no haya mecanismos para comprometer la seguridad del sistema, seguramente se podrá, pero no llamemos virus a tonterías como cambiar un enlace a un programa y añadir: sudo rm -R /

Un saludo y ser cautelosos.

domingo, 8 de julio de 2012

Cambiar la salida de audio a HDMI en LMDE

En LMDE mucha gente se encuentra con la dificultad de cambiar la salida de audio de los altavoces hacia la salida HDMI.

Una solución chapucera es arrancar el gnome-sound-applet y cambiarlo desde ahí, y luego cerrarlo.

Pero para no tener que recurrir a ese caso, podemos instalar pavucontrol (pulseaudio volumen control)

sudo apt-get install pavucontrol

Se instalará en Menú > Sonido y Vídeo > Control de volumen pavucontrol
Para mayor comodidad lo podéis arrastrarlo hasta la barra de tareas, junto al icono de volumen, de esta manera estará mas accesible, y como veis en la imagen, es mucho mejor que estar trasteando con el gnome-sound-applet


Ahí podremos hacer todo lo que hacemos en gnome-sound-applet, incluso una cosa que echaba mucho de menos, que es el poder exceder el volumen de audio normal, como se ve en la imagen lo tengo al 124%.

Eso es todo, un saludo.

sábado, 7 de julio de 2012

Usar el GPS del movil android para usarlo en Google earth free


Esto es un entretenimiento que estoy haciendo ahora mismo.
Quiero conectar mi movil Galaxy mini con android al pc por bluetooth, de manera que comparta el GPS y pueda usarlo con google earth free


Y pongo "free" porque el google earth que todos conocemos es el gratis, el que NO tiene soporte para GPS, cosa que apañaremos en las siguientes líneas y podréis disfrutar de posisionamiento GPS en vuestro google earth.

Por un lado he encontrado un soft para android que puede compartir el GPS por bluetooth, se llama ExtGPS y lo podéis descargar del market.

Este programa simplemente lo que hace es trasformar tu android en un receptor GPS bluetooth.

Inconvenientes de este programa:
-En mi movil parece quedarse congelado algunas veces.
-Te asigna un canal de bluetooth para gps al voleo, y diferente cada vez....

Lo primero no sé si solo me pasará a mi, lo segundo ya lo corrijo desde linux con un script que hecho y que pienso compartir.

Lo segundo que hay que hacer es configurar el pc para que se conecte al GPS del movil

Para hacer esto, antes de nada dar las gracias a Guillermo Conde, que publicó un artículo en:
http://enunmomentillo.blogspot.com.es/2009/08/gps-bluetooth-en-ubuntu.html
De manera que aprendí como operar para hacer lo que quiero.
Os recomiendo visitéis su blog, es muy interesante y pone contenido de calidad.

Todo, absolutamente todo lo que necesitáis, lo quiero simplificar en un script que más adelante quiero crear para que lo haga todo del tirón sin complicaciones, pero lo mejor es que leáis todo para saber como funciona.

Primero descargamos la aplicación la aplicación ExtGPS del 'play store' (market de toda la vida)

Lo ejecutamos y con eso, ya tenemos listo el tlf.

Ahora vamos a configurar linux.

Escaneamos en busca de dispositivos bluetooth:
hcitool scann

Os deberá mostrar las directiones mac de los dispositivos encontrados, ejemplo:

scorpyomint@pc-citomint ~ $ hcitool scann
Scanning ...
    58:C3:8B:BC:82:4C    Scorpyo

Lo que nos hace falta es la dirección mac, que en este caso es: 58:C3:8B:BC:82:4C

Para poder ver los canales por los que está transmitiendo el bluetooth del tlf y encontrar la de GPS hay que usar el siguiente comando:

sdptool records 58:C3:8B:BC:82:4C

Tenéis que buscar el apartado en el que salta extGPS y que apuntdad e canal:

 Service Name: Symarctic ExtGPS
Service RecHandle: 0x10009
Service Class ID List:
  UUID 128: 00001101-0000-1000-8000-00805f9b34fb
Protocol Descriptor List:
  "L2CAP" (0x0100)
  "RFCOMM" (0x0003)
    Channel: 15
Si os fijáis, el canal por el que opera es el 15.

Con este otro comando, podréis obtener el número de canal casi con total seguridad, pero mucho más dificil de recordar:
sdptool records 58:C3:8B:BC:82:4C | grep ExtGPS -A 7| grep Channel: |  awk '1 { print $2 }'

Para conectarnos a ese canal tendríamos que usar el comando:
sudo rfcomm connect hci0 58:C3:8B:BC:82:4C 15

En cuanto os conectéis en la aplicación ExtGPS del tlf aparecerá un cliente conectado al bluetooth.

Bien, ahora toca configurar unas cosillas para que google earth nos muestre un nuevo link en "Lugares" ese link será una dirección generada por un script que irá tomando datos del gps y las irá colocando en ese link, de manera que el google earth muestre tu posición actualizada.

Primero nos diregimos a la ruta de google earth, yo lo tengo en:
/opt/google/earth/free

Así que pongo:
cd /opt/google/earth/free

Con eso nos situamos en el directorio de google earth, ahora creamos un archivo llamado "Realtime GPS.kml".

nano "Realtime GPS.kml"

Dentro copiamos esto:

##########################################
 <?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<NetworkLink>
    <name>Realtime GPS</name>
    <open>1</open>
    <Link>
        <href>./realtime/Realtime GPS.kml</href>
        <refreshMode>onInterval</refreshMode>
    </Link>
</NetworkLink>
</kml>
##########################################

Ctrl+o para guardar y Ctrl+x para cerrar.

Crearemos una carpeta llamada "realtime"

mkdir realtime

Y por último creamos un nuevo fichero con código de python para hacer el seguimiento del gps:

nano gegpsd.py

Y dentro copiamos esto:

##########################################
 #!/usr/bin/python

# Copyright (C) 2007 by Jaroslaw Zachwieja <grok!warwick.ac.uk>
# Copyright (C) 2008 by TJ <linux!tjworld.net>
# Published under the terms of GNU General Public License v2 or later.
# License text available at http://www.gnu.org/licenses/licenses.html#GPL

import serial
import string
import sys
import getopt

def usage():
        print "Usage:"
        print " -p | --port <device>   e.g. /dev/ttyS0"
        print " -b | --baud <speed>    e.g. 4800"
        print " -f | --file <filename> e.g. /tmp/gps.kml"
        print " -h | --help     display options"

def main():
    # defaults
    serial_port = "/dev/ttyS0"
    serial_baud = 4800
    file = './realtime/Realtime GPS.kml'

    try:
        opts, args = getopt.getopt(sys.argv[1:], "p:b:f:h", ["port=", "baud=", "file=", "help"])
    except getopt.GetoptError:
        usage()
        sys.exit(1)
    else:
        for opt, arg in opts:
            if opt in ("-p", "--port"):
                serial_port = arg
            elif opt in ("-b", "--baud"):
                serial_baud = string.atof(arg)
            elif opt in ("-f", "--file"):
                file = arg
            elif opt in ("-h", "--help"):
                usage()
                sys.exit(0)
            else:
                print "Unknown option"

    gps = serial.Serial(serial_port, serial_baud, timeout=1)

    print "Serving data from %s (%d baud) to %s" % (serial_port, serial_baud, file)

    latitude = 0
    longitude = 0
    speed = 0
    heading_in = 0
    altitude = 0
    range = 1000
    tilt = 30

    while 1:
        line = gps.readline()
        datablock = line.split(',')

        if line[0:6] == '$GPRMC':
            latitude_in = string.atof(datablock[3])
            longitude_in = string.atof(datablock[5])
            try:
                altitude = string.atof(datablock[8])
            except ValueError:
                # use last good value
                altitude = altitude
            speed_in = string.atof(datablock[7])
            try:
                heading_in = string.atof(datablock[8])
            except ValueError:
                # use last good value
                heading_in = heading_in
            if datablock[4] == 'S':
                latitude_in = -latitude_in
            if datablock[6] == 'W':
                longitude_in = -longitude_in

            latitude_degrees = int(latitude_in/100)
            latitude_minutes = latitude_in - latitude_degrees*100

            longitude_degrees = int(longitude_in/100)
            longitude_minutes = longitude_in - longitude_degrees*100

            latitude = latitude_degrees + (latitude_minutes/60)
            longitude = longitude_degrees + (longitude_minutes/60)

            speed = int(speed_in * 1.852)
            range = ( ( speed / 100  ) * 350 ) + 650
            tilt = ( ( speed / 120 ) * 43 ) + 30
            heading = heading_in

            if speed < 10:
                range = 200
                tilt = 30
                heading = 0

            output = """<?xml version="1.0" encoding="UTF-8"?>
    <kml xmlns="http://earth.google.com/kml/2.0">
        <Placemark>
            <name>%s km/h</name>
            <description>^</description>
            <LookAt>
                <longitude>%s</longitude>
                <latitude>%s</latitude>
                <range>%s</range>
                <tilt>%s</tilt>
                <heading>%s</heading>
            </LookAt>
            <Point>
                <coordinates>%s,%s,%s</coordinates>
            </Point>
        </Placemark>
    </kml>""" % (speed,longitude,latitude,range,tilt,heading,longitude,latitude,altitude)

            f=open(file, 'w')
            f.write(output)
            f.close()

    ser.close()

if __name__ == "__main__":
    main()


##########################################
Fuente del script: http://tjworld.net/wiki/Linux/Ubuntu/GoogleEarthPlusRealTimeGPS
 
Guardamos con Ctrl+o y cerramos con Ctrl+x
Le damos permisos de ejecución:
chmod +x gegpsd.py

Abrimos google y le damos a Archivo > abrir, y buscamos el archivo que ya habíamos creado, el  "Realtime GPS.kml"

Al abrirlo aparecerá en lugares, pinchamos para que nos muestre la situación actual y no hará nada.... pero parpadeará.

Ahora tendríamos que abrir una terminal para ejecutar el script así que unirá los datos que entran del gps con el archivo que está mirando google:

/opt/google/earth/free/gegpsd.py -p /dev/rfcomm0

Y google debería empezar a marcar la ruta que estamos siguiendo, marcando velocidad a la que nos movemos.

Como dije antes, pronto me pondré con el escript, que es bastante sencillo de hacer, incluso gráficamente mostrando ventanucos y todo con el teléfono a elegir etc....

Un saludo.

martes, 3 de julio de 2012

Mostrar notificaciones de contactos en pidgin con LMDE



Llevo un tiempo peleando con el complemento pidgin-libnotify en LMDE ya que este no funciona.

Simplemente aparece desactivado en complementos y no te permite activarlo.

En detalles del complemento muestra este error:

Error: undefined symbol: attach_request_ui_ops\n
Compruebe el sitio web del complemento para obtener una actualización.

He intentado de todo para solucionarlo pero sin éxito.

Así que me puse a mirar en los repositorios y encontré una alternativa muy interesante llamada guifications.

Es muy configurable y potente.

En principio el complemento está en español, pero los mensajes los muestra en inglés y no me mostraba en la burbuja los mensajes que me escribían mis contactos.


Esto se arregla añadiendo un tema personalizado o descargando uno.

Personalmente, los que he visto no me agradaban mucho y decidí hacer el mío que comparto con ustedes.

 
Así que vamos con la solución:

Quitar pidgin-libnotify (para que lo queremos?)
sudo apt-get purge pidgin-libnotify

E instalamos pidgin-guifications:
sudo apt-get install pidgin-guifications

Con esto ya tenemos el complemento instalado.

Para activarlo abrimos pidgin y vamos a Herramientas > Complementos.
Buscamos guifications y lo activamos.




Le damos a configurar complemento y lo ponemos al gusto de cada uno.

Sí queréis tener el tema que esto creando lo podéis descargar de aquí:

http://ubuntuone.com/0nL9IbNQpQdg0KxsUphbns

Lo descomprimís y obtendréis una carpeta llamada Guispyo

Abrid vuestra carpeta personal y movéis la carpeta a: .purple/guifications/themes/

Nota: para ver las carpetas que empiezan por un punto "." tendréis que presionar Ctrl+H

Una vez movido allí, ya lo tendréis añadido como un tema nuevo, y lo podréis elegir en la pestaña "Tema" de la configuración de guifications.



Espero que os guste y que por fin tengáis notificaciones de quién entra, sale, nos habla, etc, etc

PD: Os pido por favor, que si detectáis alguna anomalía en el texto mostrado o algún icono que no encaje o se vea descuadrado, etc... lo notifiquéis aquí con un comentario para poder corregirlo.

Muchas gracias.