Mostrando entradas con la etiqueta GULMER. Mostrar todas las entradas
Mostrando entradas con la etiqueta GULMER. Mostrar todas las entradas

viernes, 18 de enero de 2013

Cambiar la dirección MAC de tu tarjeta de red

En las redes de computadoras, la dirección MAC (siglas en inglés de media access control; en español "control de acceso al medio") es un identificador de 48 bits (6 bloques hexadecimales) que corresponde de forma única a una tarjeta o dispositivo de red. Se conoce también como dirección física, y es única para cada dispositivo. más..

La necesidad de cambiar este numero es muy especifica para cada usuario, pero imaginen que en su trabajo, están realizando filtrado de información mediante alguna técnica "cual sea" aprovechando este numero único que permite conocer quien es la persona que normalmente utiliza una computadora!, tal vez ahora si tiene sentido cambiarlo.

Este "como" esta realizado para ser implementado en Linux, en primera instancia utilizaremos Linux/Debian, estos son los pasos a seguir:

  • Tener permisos de root ó "super usuario" -> "#"

  • Instalar el paquete "macchanger", este nos permite realizar un "fake" o cambio falso de MAC y asignarlo a un dispositivo de red.

#aptitude install macchanger


  • Con este simple paso de instalación ya tenemos la aplicación "macchanger" y desde ahora podemos cambiar el MAC de la siguiente manera, suponiendo que nuestro dispositivo de red es el "eth0".

#macchanger -r eth0 


  • Se mostrara un mensaje como este, que indica el MAC actual y el MAC falso asignado al dispositivo:  

Current MAC: b8:dd:ac:67:91:4f (unknown)
Faked MAC: 94:c1:a0:3f:3f:31 (unknown)

De esta forma ya sera difícil identificar a la persona detrás de la computadora  ya los sistemas de filtrado no tendrán la MAC falsa relacionada con un usuario.

Para hacer que este técnica se aplique cada vez que encendemos la computadora de forma automática podemos ejecutar lo siguiente:
#echo '#!/bin/sh' > /etc/network/if-pre-up.d/fake-mac; echo '/usr/bin/macchanger -r eth0' >> /etc/network/if-pre-up.d/fake-mac

Eso creara un fichero llamado "fake-mac" en la ruta /etc/network/if-pre-up.d/ , el cual sera evaluado cada vez que la computadora inicie y justo antes de levantar la interfaz de red "eth0" sera cambiado el numero de MAC.

lunes, 27 de febrero de 2012

Buscar fichero distinto a:

Utilizando la potencia del comando "find" en Linux, veremos como buscar ficheros distintos a la extensión (.mp3, .Mp3 y .MP3).

Situarse en el directorio que quiere realizar la búsqueda:
$cd  /media/333-000

Para buscar:
$find . -name "*.*" -not -name "*.??3"

Esto devuelve como resultado una lista de ficheros que se encuentran dentro del directorio /media/333-000 distintos a las extensiones antes mencionadas. En mi caso quería eliminar la lista de ficheros resultantes, para eso solo se pasa el parámetro "-delete" al comando "find".



martes, 16 de agosto de 2011

Séptimo Día Debian - Mérida

El sábado 27 de agosto se estará celebrando por séptima vez el día Debian - Mérida.

Cada 16 de agosto se conmemora un nuevo aniversario del nacimiento del proyecto Debian, por lo que cada grupo de usuarios organiza un evento a nivel local con variadas actividades referentes tanto a Debian como al software libre en general.

Toda la planificación del evento en -> http://wiki.debian.org/DebianDay2011/Venezuela/Merida




martes, 21 de junio de 2011

Android Python Apps

Continuando con el Post Python en Android + script de regalo SMS/GPS/SMS he empaquetado el scrip SMS/GPS/SMS en una aplicación llamada smslocation-beta-0.0.1.apk para Android.

Actualmente se encuentra en su fase de pruebas , pero es funcional, pueden encontrar la información completa en la dirección http://hg.web-aox.com/android-python-apps/wiki/Home, incluso pueden reportar errores y agregar solicitudes de nuevas funcionalidades.

Django Plug Modules

Es una aplicación que permite incorporar módulos en un proyecto de Django, es ideal para proyectos con necesidades de ser escalables que contengan varios módulos y los mismos deban ser relacionados y/o dependientes entre ellos.


Características:



  • Fácil de implementar, se instala como una aplicación Django en su proyecto.

  • Comando para creación de módulos.

  • Fichero de configuración de módulos, permite describir dependencias fuertes ó débiles con otros módulos.

  • Indexa dinámicamente los módulos instalados.

  • Interfaz de información del estado y relación entre módulos.

  • Diagrama de relación entre módulos.

  • Cada módulo maneja independientemente todos sus ficheros.

  • Simple librería que suministra la información necesaria para relacionar módulos a nivel de vistas y templates.

  • Cumple con todas la convenciones de programación en Django.



Información completa en -> https://bitbucket.org/olivaresa/django-plug-modules/wiki/Home



jueves, 30 de septiembre de 2010

Python en Android + script de regalo SMS/GPS/SMS

Teniendo la necesidad de hacer algo con mí Motorola Milestone (Droid) lo primero que pensé fue instalar Python, para eso me valí del proyecto “Scripting Layer for Android brings scripting languages to Android” (SL4A).

Este post se divide en dos parte, la primera es la fase de instalación de Python y la segunda es un script realizado para detectar la posición actual del móvil representada en GoogleMaps.

Instalación de Python


Todo el proceso de instalación a continuación es realizado desde el teléfono:

Presionar la tecla menu configuración->Aplicaciones , seleccionar fuentes desconocidas.



Abrir el navegador y colocar la dirección http://code.google.com/p/android-scripting/

Descargar el fichero python_for_android_r1.apk y sl4a_r2.apk



Al terminar las descargas tenemos las siguiente pantalla en el historial de descargas del navegador



Instalar Python presionando sobre  python_for_android_r1.apk



Luego presionar sobre el boton install



Cuando termine el proceso de instalación aparece



Ya tenemos Python instalado, ahora vamos a instalar el SL4A, abrimos el navegador presionamos la tecla Menu->Mas->Descargas y nuevamente tendremos la pantalla donde están las descargas.



Ahora presionamos sobre el paquete sl4a_r2.apk para instalarlo, y se muestra



Presionar el botón Instalar, en este momento ya tendremos instalas las dos aplicaciones, el Python y el SL4A



Ejecutar SL4A, y veremos una pantalla con algunos scripts de ejemplo, presionamos sobre el script hello_world.py y parecerá un cuadro de opciones (1. ejecutar y visualizar resultados en consola, 2. ejecutar, 3. editar, 4. almacenar, 5. eliminar)



Presionar sobre la opción 1. ejecutar y visualizar resultados en consola, se mostrara.



En este momento ya hemos ejecutado un script de Python en nuestro Android, puedes también crear tus propios scripts presionando la tecla Menu->Add





También puedes correr la consola de python presionando Menu->View->Interpretes


El regalo - Script SMS/GPS/SMS


Se trata de un script gpaox.py que he desarrollado y trabaja de la siguiente forma:

  • Se ejecuta como un demonio (servicio) el cual evalúa cada 30 segundos para verificar si ha llegando un nuevo mensaje que no ha sido leído y que contenga únicamente la palabra Gps

  • Busca la posición actual del móvil utilizando el Gps ó la red celular para conseguir las coordenadas, esta operación dura un máximo de 5 minutos, en caso de no conseguir las coordenadas devuelve la ultima coordenada conocida.

  • Construye un mensaje de texto SMS que contiene una Url de GoogleMaps con las coordenadas

  • Envía el mensaje al móvil que hizo la solicitud.

  • Marca el mensaje de solicitud recibida como leído.

  • Muestra el siguiente mensaje en la consola "Enviado a: 0416******" , donde los * son números que componen el numero telefónico que realizo la petición.

  • Continua escuchando como demonio (servicio) para nuevas solicitudes.

Para instalar el script en su móvil siga estos pasos:

  • Descargar el script aquí

  • Conectar su móvil al computador por el cable USB y copiar el script en el directorio /sdcard/sl4a/scripts

  • Luego usted podrá observar que aparece el script gpaox.py en la lista de scripts de SL4A



  • En este momento ya puede ejecutar el script como lo hizo anteriormente con el script de ejemplo hello_world.py

A continuación un vídeo que muestra el funcionamiento del script.



Vídeo original Theora/Vorbis (ogg) 40Mb -> descargar aquí


Una imagen del mapa en GoogleMaps



Esta es una base para mostrar que es posible hacer cosas bastante interesantes con Python en la plataforma de Android.

jueves, 18 de marzo de 2010

Otro cuento sobre decoradores en Python

Al buscar información sobre ¿cómo funcionan los decoradores en Python?, normalmente nos encontramos con que: es una función que es pasada como parámetro a otra y retorna una función modificada, otra definición es: una función (a) pasada a una función (c) para retornar una función (b). Bueno la verdad es que ninguna de estos conceptos son digeribles.

Buscando una manera de tratar de explicar mi modo de entender los decoradores, he preparado el siguiente ejemplo:

Crearemos una función llamada (suma)  el cual tendrá como menester recibir dos parámetros (a) y (b) y otorgar a la variable (c) la suma de (a) + (b) para luego retornar el valor de la suma contenido en (c), la función es la siguiente.


En este momento podríamos utilizar la función (suma), por ejemplo:
>>>print suma(1,2)

3

Ahora crearemos un decorador que tendrá como finalidad recibir la función (suma) como parámetro, evaluar el valor (c) retornado por (suma) y verificar si es divisible entre 2, si es verdadero retornará un string ("si") de lo contrario retornará un string ("no"), la función es la siguiente.



Para decorar la función (suma), lo haremos agregando un (@) seguido del nombre de la función decoradora (@numero_divisible) antes de definir la función (suma), quedara de la siguiente manera:



En este momento la función (suma) ya está decorada y a diferencia de cuando no lo estaba , ahora si la utilizamos no tendremos el valor de la suma de (a+b), sino nos imprimirá en pantalla si es divisible o no entre 2, ejemplo:
>>>print suma(1,2)

no

Pero todavía no es fácil comprender que es lo que pasa con todo esto, en la siguiente imagen pueden observar de una manera gráfica que es lo que la función (suma) puede pasar la función decoradora (numero_divisible):



En verde se encuentran los valores que podemos acceder desde el decorador, para codificarlos, procesarlos y luego retornarlos. Luego este otro gráfico nos muestra como se reciben estos valores y se procesan, para retornar un valor totalmente nuevo.



Teniendo en el valor (f) el valor de (c) de la función de (suma), se evalúa si f es divisible entre 2 (if f % 2 ==1) si es igual a (1) retorna  ("no"), de lo contrario retorna ("si"), si quisiéramos en vez de retornar un string ("si") ó ("no"), convertir este decorador para hacer que la función (suma) siempre sea igualado a un valor par divisible entre 2. debe ser así:




Otro ejemplo es que el decorador retorne el valor de la (suma) multiplicado por el primer parámetro (a) pasado a la función (suma):




Así entonces hemos examinado tres ejemplos rápidos y sencillos, se puede decir que un decorador es una función construida para recibir otra función que no queremos modificar explicitamente y modificar sus resultados.






lunes, 14 de diciembre de 2009

Django Hosting en Venezuela!

Últimamente me he dedicado a realizar aplicaciones utilizando el Framework para Python Django, sencillamente extraordinario, para el desarrollo cuenta con un servidor de peticiones Web/Http el cual permite ir ejecutando la aplicación sin tener que montar un servidor web para hacerlo.

El problema esta cuando ya esta diseñada aplicación que sera instalada en un entorno de producción “llevar la aplicación a la vida real”, es posible que si uno trabaja para una institución pública o privada “grande” cuente con salas de servidores “centro de datos”, esto no es mucho problema habilitar un Virtualhost o servidor para montar la aplicación, ya que se cuenta con conexiones dedicadas a internet que cuentan con IP's públicas, pero, qué pasa cuando cuando uno o el cliente para el cual uno esta “matando el tigre” no cuenta con estas bondades?.

En primera instancia uno pude ir a la Wiki del proyecto de Django, específicamente http://code.djangoproject.com/wiki/DjangoFriendlyWebHosts allí encontraremos una lista de proveedores de servicios que oficialmente dan soporte sobre Python/Django, esto quiere decir, que si queremos un servicio de Hosting para una aplicación Django deberíamos contratar con alguno de estos proveedores, pero que pasa si queremos un servicio de Hosting que tenga soporte en español y que se pueda pagar en moneda Venezolana?. Bien la respuesta es que a esta fecha no existe un servicio de Hosting que soporte Django en Venezuela, por lo menos no oficialmente y que yo conozca.

Gran cantidad de Hosting dicen que soportan Python, pero si preguntan , pero, y soportan mod_python o fastcgi?, la respuesta es no sabemos o que uno debe contratar un servicio Premiun para contar con estas cosas. Para terminar les quiero contar como he montado una aplicación de Django en un Hosting en Venezuela.

El proveedor es http://www.venehosting.com , oficialmente ellos no dan soporte para aplicaciones en Django, pero tienen habilitado el modulo de Python para Apache “mod_python”, con eso es suficiente para ejecutar aplicaciones de Django, su servidor(es) corren en Os/Linux i386 y tienen python2.5., el panel es Plesk y la transferencia de ficheros es en FTP, no tiene soporte para SSH. Los pasos son los siguientes:

  • Comprar uno de los planes que ofrecen (yo solo compré el básico por 1 mes, osea que la prueba me salio en 12 Bsf)

  • Luego de pagar y tener los datos para poder entrar al Panel Plesk, asignar el password para entrar vía FTP.

  • Subir al directorio “httpdocs” que por defecto es el directorio al que apunta el dominio principal un fichero que debe llamarse “.htaccess” con el siguiente contenido que habilitara los módulos de Python.


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs', '/var/www/vhosts/NOMBRE-DEL-DOMINIO/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE PROYECTO.settings

PythonDebug On



Tener en cuenta que donde dice “NOMBRE-DEL-DOMINIO” debe estar el nombre de su dominio , por ejemplo “midominio.com” y cambiar “PROYECTO.settings ” por el nombre de su proyecto, por ejemplo: “miaplicacion.settinsg” en donde “miaplicacion” es el nombre del directorio de su aplicación y “settings” el fichero que contiene la configuración del proyecto Django settings.py.




  • Crear un directorio en su maquina llamado “modules”, descargar Django en tu maquina de la siguiente dirección http://www.djangoproject.com/download/1.1.1/tarball/ el cual es un comprimido que usted debe descomprimir, copiar desde el directorio “Django-1.1.1” el directorio llamado “django” al directorio recién creado llamado “modules”, si todo esta bien el directorio “modules” debería ser así “/modules/django”

  • Subir al directorio “httpdocs” el directorio “modules” que contiene el framework Django, el Python que esta en el Hosting lo integrara a su path.

  • Subir su aplicación al directorio “httpdocs”.

Este es un mini howto de como hacerlo, ahora, pudiéramos colocar un ejemplo: supongamos que mi aplicación y/o proyecto se llama “tatakua”, es de suponer que tengo un directorio llamado “tatakua” donde esta toda la estructura de proyecto de Django y que mi dominio se llame “tatakua.net”, entonces:



  • Mi fichero “.htaccess” contendría esto;


SetHandler python-program

PythonHandler django.core.handlers.modpython

PythonPath "['/var/www/vhosts/tatakua.net/httpdocs', '/var/www/vhosts/tatakua.net/httpdocs/modules'] + sys.path"

SetEnv DJANGO_SETTINGS_MODULE tatakua.settings

PythonDebug On





  • Mi directorio “modules” contendría un subdirectorio llamado django y se vería así “/modules/django”

  • Mi directorio de aplicación o proyecto se llamaría “tatakua” que dentro tiene settings.py y todo lo demás de un proyecto Django.

  • Así quedaría la estructura de directorios:


|-- var

| |-- www

| | |-- vhosts

| | | |-- tatakua.net

| | | | |-- httpdocs

| | | | | |-- .htaccess

| | | | | |-- tatakua

| | | | | | |-- settings.py

| | | | | | |-- resto de ficheros y directorios del proyecto

| | | | | |-- modules

| | | | | | |-- django

| | | | | | |-- resto de ficheros y directorios de django del FrameWork Dajango


Extra, les comento que el directorio “modules” se puede utilizar para copiar otros módulos al cual no tenga soporte el Python del Hosting, en mi caso en ese directorio también tengo a PIL y MySQLdb.

martes, 30 de junio de 2009

sofi



Sofi es una aplicación web que gestiona eventos, presentaciones, ponentes y suscripciones.
Sofi es ideal como portal web de publicación de eventos tipo blog.
Sofi cuenta con una interfaz de administración.
Sofi es una aplicación liberada bajo la licencia GPLv2, por lo tanto usted tendrá derecho de utilizar, estudiar, modificar y distribuir libremente según los términos de la licencia.
Sofi esta desarrollada con el lenguaje de programación Python utilizando Django como framework.

Página del proyecto: http://sofi.cenditel.gob.ve

Algunas capturas de pantalla:

  




jueves, 11 de junio de 2009

Jugando con las X


Un día realizando una aplicación de escritorio con Python y la librería Pygame me di cuenta que estaba necesitando muchos recursos de maquina, se trataba de una aplicación que realiza un gráfico de curva a partir de una adquisición de datos obtenida a alta velocidad por el puerto USB.

Después de optimizar la aplicación varias veces , me dispuse a probarla con el consumo mas bajo de Xwindow que pudiera, para eso necesitaba el servidor de Xwindow pero no necesitaba el WindowManager Gnome, y realicé mi prueba de la siguiente manera:

Estando en el escritorio de Gnome pulsé las teclas Ctrl+Alt+F1, esto me llevo a una consola del sistema, en el cual hay que loguearse como root, y lo primero es:



  • Desactivar el WindowManager de Gnome


#/etc/init.d/gdm stop



  • Declarar una la variable que manejara Xwindow como display


#export DISPLAY=0:0



  • Arrancar las Xwindow


#X



  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

Esto mostrara las Xwindow ya corriendo, la imagen sera como esta.



Luego podremos arrancar cualquier aplicación grafica en el servidor X, supongamos que queremos correr firefox:



  • Abrimos una segunda consola de sistema, pulsando las teclas Ctrl+Alt+F2


  • Declarar una la variable que manejara Xwindow como display


#export DISPLAY=0:0



  • Ejecutamos firefox


#firefox



  • Cambiar de consola al entrono gráfico con las teclas las teclas Ctrl+Alt+F7

La captura:


miércoles, 22 de abril de 2009

Aprender Python divirtiéndose

Aprender a programar debe ser divertido!, para adultos y niños por igual.

Este es el primero de una serie de publicaciones que buscan introducir al mundo de la programación específicamente en Python a personas que tengan interés.
Para lograr el objetivo nos apoyaremos en la herramientas RUR-PLE



RUR-PLE es un entorno diseñado para ayudarle a aprender la programación utilizando el lenguaje Python. Dentro de un mundo artificial en el que un robot puede ser programado para realizar diversas tareas. Usted también será capaz de aplicar sus habilidades de programación.

Aprender a programar es como aprender a tocar un instrumento musical: hay que hacerlo, y no simplemente leer sobre él.

Unas de las limitaciones que encontraremos en este post, es que estaremos basándonos en el sistema operativo Linux/Debian. Asumiendo que ya tienen instalado Linux/Debian o alguna de las distribuciones de Linux Basadas en él (Ubuntu, Kubuntu...) necesitaremos lo siguiente:


  • wxPython - (el paquete se llama python-wxgtk2.8, para instalar abra una consola y ejecute)

aptitude install python-wxgtk2.8


  • RUR-PLE - (descargar el programa desde aquí, luego descomprimirlo, desde consola podría ser así)

unzip rurple1.0rc3.zip

Para ejecutar el programa:
cd rurple1.0rc3

python rur_start.py

Si todo va bien veremos esto:

[gallery]

Para interactuar con el robot existen un grupo de instrucciones o funciones:

  • Acciones

    • move()

    • turn_left()

    • pick_beeper()

    • put_beeper()

    • turn_off()

  • Pruebas (test)

    • front_clear()

    • facing_North()

    • carries_beepers()

    • next_to_a_beeper()

Por ahora nos limitaremos a ver como se ejecuta el programa y utilizaremos dos acciones; mover un paso el robot (move()) y apagar el robot (turn_off()), ver el siguiente video.



En la próxima entrega, veremos como a partir de estas funciones podemos empezar a programar en Python de una forma divertida!.

lunes, 10 de noviembre de 2008

Clonar maquinas con Linux

Existen varios programas que pueden hacer este trabajo como (g4l, clonezilla...), sin embargo yo estaba embarcado en hacerlo para conocer en realidad que es lo que necesitaba para clonar un disco sin necesitar programas especializados.

En este caso lo que quería era tener un clon y replicarlo en grupo de maquinas totalmente iguales, las maquinas tenían ya instalado Linux/Debian Lenny totalmente configurado y me dispuse a clonar el disco de la siguiente manera.

Requerimos:

  • Ubuntu ó cualquier distribución Live CD

  • Maquina (origen) totalmente configurada y funcional

  • Dispositivo de almacenamiento (en mi caso utilicé un disco externo de un TeraByte USB) ó Conexión a una Red Interna.

  • Comandos dd, nc y gzip.

Pasos:

  1. Botear la maquina que ya esta configurada y queremos clonar
    con el LiveCD.

  2. Abrir una consola y cambiarse a root "sudo su".

  3. Identificar que dispositivo de disco queremos clonar, en mi caso es "sda"

  4. El comando que necesitamos utilizar para clonar el disco es "dd", para obtener la ayuda sobre este comando se puede ejecutar "man dd". Básicamente es un comando que permite tomar como entrada un fichero y copiarlo a otro utilizando varias configuraciones.

  5. En este momento podemos elegir entre:

Clonar a un dispositivo local:

conectar el dispositivo y observar en que dirección se monta, en mi caso es /media/usbdisk/aox:


Generar la imagen
#dd if=/dev/sda | gzip | dd of=/media/usbdisk/aox/clon.img.gz

Clonar la imagen a una maquina
#gunzip < /media/usbdisk/aox/clon.img.gz | dd of=/dev/sda

Clonar por la red local:

Maquina origen
#dd if=/dev/sda | gzip | nc 192.168.x.x 12345

Maquina destino
#nc -l -p 12345 | gunzip | dd of=/dev/sda

Generar la imagen en un dispocitivo local puede tardar 1 hora para un disco duro de 80Gb y para clonarlo unas 3 Horas, para clonar en red local puede tardar el proceso unas 3 a 3:30 horas.