Archivo de Autores para fitorec

18
Dic
09

Deteccion de intrusos en nuestra WI-FI

Introducción:

Como bien sabemos las redes inalámbricas tienen un problema de seguridad nativo del medio, pues en este caso el medio es el espectro electromagnético dispersado por la atmósfera el cual es compartido por todos, es por esta razón por la cual la redes inalámbricas son y serán inseguras dadas la naturaleza del medio.

Hace unos días por parte del equipo de SICÁ tuvimos la oportunidad de participar en el evento Ingenia que tuvo lugar en la cuidad de Oaxaca, entre las conferencias y talleres que tuvieron lugar hubo una que me llamo mucha la atención y fue la que dieron los amigos Diego(bugcillo) y el Nierox en este taller explicaron el uso de la suite aircrack-ng del como detectar redes inalámbricas, inyectar paquetes a dicha red y del como por medio de eucarísticas encuentra la key deseada.

Todo esto me dejo pensando en una solución a la detección de intrusos en nuestra red, y se me ocurrió una idea!.

Análisis

En este caso suponemos que somos nosotros los propietarios del servicio y que hemos sido atacados por algún intruso (p.e. un vecino).

También suponemos que el servicio es Prodigy de Telmex y que el modem routeador es un 2wire (que es lo + común).

Modem 2 WIRE telmex

Modem 2 WIRE telmex

Ahora si accedemos a la URL http://gateway.2wire.net/xslt o bien  (http://home/) estaremos entrando a la configuración de nuestro modem en donde en el main page nos muestra un resumen del sistema si vemos en la parte inferior nos daremos cuenta que aparecen las maquinas colgadas a nuestro modem en este caso solo la mía.

red domestica

aqui se puede observar solo mi maquina fitorec conectada

Solución propuesta:

Como podemos ver el router monitorea constantemente los hosts conectados y es posible preguntarle quienes están conectado esto ultimo traves de un browser suele ser algo tedioso.

Pero si nos ponemos a pensar un par de minutos esto mismo pasa con los canales RSS, el correo electrónico, los mismos podcast, todos ellos normalmente tienen un cliente el cual se conecta con el servicio cada determinado tiempo para ver si hay nueva información. Esto ultimo nos hace pensar que se trata de para automatizar la revisión de nuevos hosts en la red cada determinado tiempo y que de alguna manera nos avise quienes están conectados a nuestra red.

Fue entonces cuando se me ocurrió utilizar el Conky el cual es una programa que se integra al escritorio de Linux y nos sirve para monitorear a nuestro systema: memoria consumida, procesador en uso, etc.. Sin embargo también se le pueden agregar scripts de red como notificaciones de gmail, twittter y demas.

un ejemplo del conky

un ejemplo del conky

Pues bien entonces la solucion es hacer un script para detectar los usuarios conectados a nuestro router y mostrarlos en nuestro escritoria a través de conky.

Implementación:

Detección de Hosts: la deteccion de hosts la vamos hacer accediendo a la URL http://gateway.2wire.net/xslt en donde vamos a parsear para buscar la imagen (http://gateway.2wire.net/icons/icon_small_pc.gif) la cual corresponde a una maquina activa y de existir dicha imagen el nombre del host activo en este caso fitorec se encuentra localizada entre las etiquetas:

<span class="textmono">fitorec</span>
De esta idea he generado el siguiente script:

codigo 2wireHosts.py script en python

codigo 2wireHosts.py script en python

Configurando Conky: pues bien ahora que ya tenemos un script para detectar los hosts en nuestra wifi ahora solo nos falta configurar nuestro Linux para que nos muestre esta info.  en su Escritorio.

Instalación

1.- creamos la carpeta donde estaran los archivos del compiz e ingresamos a la carpeta:

mkdir  ~/.config/conky

cd ~/.config/conky

2.- Descargamos el siguiente archivo de configuración para el conky al cual he nombrado rightTop ya que se posiciona en la esquina superior derecha de nuestro desktop.

wget http://gist.github.com/raw/259995/e9c8538cb6c45b7b7f063798262ed1566581680f/rightTop

Nota:

El este archivo de config. del  conky manda a llamar las siguientes fuentes.

Las caules debes de descargar e instalar antes de seguir los siguientes pasos.

3.- Descargamos el código de python que nos detecta los host conectados:

wget http://gist.github.com/raw/259463/7af5d194d0829530cd5bbae6b7463e7f477e1014/2wireHosts.py

4.- Y finalmente Ejecutamos nuestro conky con la siguiente instrucción:

conky -c rightTop

Corrida de ejemplo:

Aqui les dejo una corrida de ejemplo de una maquina que configure con edubuntu para una niña de 9años (a mi como me hubiera gustado conocer linux a esa edad)

12
Dic
09

Diseñando un logo para mononeurona.org

Mononeurona.org es un sitio de Internet de colaboración mutua entre usuarios, hace apenas algunos días a través de este blog (mi blog personal) tuve una entrada en el área de contactos por parte del usuario rnstux a el cual contacte a través del twitter (salu2 x Cierto), bueno el caso es que al  informarme un poco sobre el, observe que pertenecía a Mononeurona.org note que también había una convocatoria la cual se me hizo interesante, me inscribí al portal y aquí esta mi primera aportación un par de layouts para el logotipo para el sitio, espero les sea de su agrado.

Logo1 este logotipo esta mas apegado al diseño original del sitio la verdad desconozco q tan radical quieran el cambio de su logotipo por estas razones preferí mantener los colores y la idea del diseño anterior.

Primer Layout para el logo de monoNeurona.org

Primer Layout para el logo de monoNeurona.org

En el segundo layout solo hice un par de modificaciones sobre el concepto del celebro.

Segundo Layout para el logo de monoNeurona.org

Segundo Layout para el logo de monoNeurona.org

Ambos logotipos están desarrollados con el programa de SL Inskcape (dibuja Libremente) y son descargables desde mi open-art en:

http://openart.googlecode.com/files/monoNeurona_logos.zip

29
Nov
09

Internautas difunden el “Test del Atole” sobre acciones políticas

El siguiente POST es un correo electrónico el cual fue enviado por  un entrañable amigo de CASOTA el cual comparto:

Con el propósito de que la gente se de cuenta de qué tamaño es el pasmo que tiene respecto a los abusos de la clase política, internautas distribuyen por email un “Test del Atole” que mide cuánto atole le corre a la gente por las venas.

Internautas difundieron por medio de email el “Test del Atole” mediante el cual buscan que la gente determine si no hacen nada contra los abusos de los políticos por tener “atole en las venas.”
El test contiene 11 preguntas mediante las cuales se busca determinar “cuánto atole te corre por las venas.” Con estas preguntas los internautas buscan que la gente se de cuenta de qué tamaño es el pasmo o la abulia que tienen respecto a los abusos de la clase política.
Al final del texto se invita a la gente a participar en las actividades de protesta que realizará el SME Este es el texto enviado por los internautas:

TEST DEL ATOLE

¿CUÁNTO ATOLE TE CORRE POR LAS VENAS?

1. Cuando el gobierno construye obras con tus impuestos, durante la construcción tú sufres las molestias y al terminar tienes que pagar para usar esas obras, tú:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Piensas que es muy bueno, porque así vas a aprender a valorar lo que te dan.
d)     Te preocupas por ser el primero en dormirte al hacer la fila para ser el primero en pagar tu tarjeta (TAG)
e)     Todos los días refunfuñas en el embotellamiento de abajo, mientras, con envidia, miras como arriba pasan rápido

2. Te enoja el sueldo de los diputados y quieres desaparecer la Cámara porque:
a)     En la televisión te lo dicen y luego te olvidas del asunto.
b)     Te dicen que te enojes, pero luego no te importa porque, hasta ahora, no te afecta.
c)     Preferirías una dictadura.
d)     No puedes votar por el más guapo.
e)     Quieres un rey.
3. Ante la propuesta de que en México el presidente pueda reelegirse tú:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Aplaudes la idea.
d)     Formas parte de la campaña de reelección.
e)     Te enojas, comentas furioso, mandas mensajes a todos tus contactos y eliges el inciso a)
4. Ante el problema de la extinción de la Compañía de Luz y Fuerza y la amenaza a todos los sindicatos del país:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Corres al banco a pagar tu recibo de la Cía. de Luz y Fuerza, aunque ya no exista la Compañía.
d)     Aplaudes la medida y si eres del sindicato piensas que estuvo muy bien.
e)     Piensas que está mal, pero luego de ver la televisión, aplaudes la medida.
5. Cuando te suben los impuestos cerca de diciembre y te piden apoyar el TELETÓN o a los pobres, tú:
a)     Te sientas a ver la televisión, ves el TELETÓN y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Corres a cooperar con el Teletón
d)     Te duele el bolsillo, te enojas y cooperas en la primera oportunidad que se te presenta.
e)     Te enojas, te chutas todos los anuncios y, al final, convencido, corres a cooperar con el Teletón.
6. Cuando las grandes empresas no pagan impuestos de sus ganancias gracias a los centavos que tú les dejas con el redondeo, tú:

a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Redondeas para combatir la pobreza y no le das nada al empacador.
d)     Te enojas, comentas, refunfuñas y luego ves la televisión y se te olvida.
e)     Piensas que vas a crear tu campaña de redondeo particular
7. No te llega trabajo y te suben la gasolina, el IVA, el ISR y cuanto impuesto se puede, tú:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Te vas a chupar con tus cuates para pagar 3% más y te olvidas del asunto.
d)     Te indignas, amenazas, lloras, te deprimes, piensas que te vas a ir del país y luego, al ver la televisión te olvidas del asunto.

8. Sufres constantemente al saber o vivir inseguridad, asaltos, violencia, robos, violaciones…
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Tomas acciones contundentes: cortas un árbol, matas perros y gatos, culpas a las palomas que ensucian la ciudad, criticas a los jóvenes y te sientas a ver la televisión y te olvidas del asunto.
d)     Si fuiste perjudicado, le das una feria a las autoridades para que investiguen.
e)     Te sientas a ver la televisión y a esperar que, cuando te toque, no interrumpan tu programa favorito.
9. Te tocó un desastre natural (como una inundación, temblor, asentamiento de tierra, grietas…), que se agravó por la negligencia de las autoridades, tú:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Sufres con lo ocurrido porque se ven muy impresionantes las imágenes por la televisión.
d)     Te enojas, refunfuñas, acusas, escribes mensajes y luego te sientas a ver la televisión para olvidarte del asunto.
e)     Piensas que las autoridades no tuvieron la culpa: todo fue por la naturaleza.
10. Quieres alimentarte y sólo encuentras pan BIMBO caro, lleno de transgénicos y grasas saturadas, y por leche te dan fórmulas lácteas con grasas vegetales, saborizantes y colorantes artificiales y suero, tú:

a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Das gracias por tener qué comer.
d)     Te enojas, refunfuñas y ves la televisión para olvidarte del asunto.
e)     Agradeces el que te ayuden a cuidar tu línea.
11.  Tienes un coche y te obligan a pagar la tenencia para poder verificarlo, tú:
a)     Te sientas a ver la televisión y te olvidas del asunto.
b)     No te importa porque, hasta ahora, no te afecta.
c)     Buscas un coyote para no pagar.
d)     Te enojas, refunfuñas, ves la televisión y te resignas a pagar la tenencia y la verificación.
e)     Vendes el coche a la primera oportunidad.

Si contestaste la mayoría de a), el país no tiene remedio porque en las venas te corre una mezcla de champurrado, arroz con leche, atole de masa, cajeta y una guajolota disuelta.
Si contestaste la mayoría de b) Todavía no empiezan a rodar la próxima película de los zombies de Sahuayo, pero tienes muchas posibilidades de lograr el papel principal.


Si contestaste la mayoría de c)
Tienes el 70% de atole y sangre.
Si contestaste la mayoría de d) Se observan trazas de linfocitos, eritrocitos, plaquetas y plasma  sanguíneo que no ponen en riesgo la estabilidad del sistema.
Si contestaste la mayoría de e) No tienes atole, tienes miedo.
Si no elegiste ninguna de las anteriores, quiere decir que todavía te queda sangre en las venas, entonces:


¿Qué esperas?

¡INFÓRMATE!
¡VAMOS A ORGANIZARNOS!
¡ORGANÍZATE CON TUS VECINOS Y TUS CONOCIDOS!
¡ACUDE A LAS MARCHAS!
¡APRENDE A LUCHAR POR TUS DERECHOS!

28
Nov
09

wget con un ejemplo descargando las revistas de diasiete.com

Introducción:

GNU Wget es una herramienta de software libre que permite la descarga de contenidos desde servidores web de una forma simple. Su nombre deriva de World Wide Web (w), y de «obtener» (en inglés get), esto quiere decir: obtener desde la WWW.

Fuente: http://es.wikipedia.org/wiki/GNU_Wget

Por otra parte si eres de aquellos usuarios que solo usan Güindows :¬S   te tengo una buena noticia existe una versión de este programa disponible para Windows (espero q  en un tiempo cambies a un sistema GNU). Pues existe un proyecto denominado GNUwin32 el cual es un conjunto de software disponible para las versiones de Güindows :¬S de 32Bits (sitio: http://gnuwin32.sourceforge.net/packages.html) dicha versión se encuentra en:

http://gnuwin32.sourceforge.net/packages/wget.htm

descargar setup wget

descargar setup wget para Güindows

Incluso es factible acceder al source (algo bueno del FS)  por si gustas adentrarte mas en el tema.

Ejemplo Practico:

La revista día siete tiene sus revistas ubicadas en http://xml.diasiete.com/pdf/ como se puede ver en la siguiente imagen.

ruta de las revistas de diasite.com

se puede notar en la imagen que navegue en la ruta 339 (el núm. de revista)  pero ahi me encontré con que la revista estaba dividida en varios pdf’s.

La idea de descargar archivo por archivo atraves del navegador implica una tarea muy monotona y aburrida :¬(

Es aquí donde toma sentido todo lo previo ya que podemos pensar de la siguiente manera.

1.- queremos descargar los archivos a partir de la ruta http://xml.diasiete.com/pdf/

2.- Solamente nos interesan los archivos pdfs.

Basta con ejecutar la siguiente sentencia:


donde:

-A.pdf es para que solo descargue los archivos pdfs

Después de -A. suele venir la extensión que queremos que wget descargue; si por ejemplo queremos descargar archivos con extensión doc haremos -A.doc

-r  para que lo haga en forma recursiva

Esto quiere decir que empezara a descargar e replicara su comportamiento por cada vinculo que encuentre.

-l5 para que recorra solo 5 niveles

Se entiende por nivel a cada sub carpeta que recorra (cada / en la URL es un nivel) seleccione el 5 simplemente pensé que seria un buen limite

-np Para que no recorra a su directorio padre(..)

En este caso http://xml.diasiete.com/ si nos damos cuenta el primer vinculo de la pagina es para subir al directorio padre cosa que no queremos.

-N es para que no cambie la fecha y hora de la estructura stat del archivo

cada archivo contiene una serie de información la cual es guardada en una estructura denominada stat : fecha/hora de creación, de modificación, etc.. (mas info)

Corrida de ejemplo:

dejo este video disponible en : http://kissyoutube.com/watch?v=xY8y1fTCAwY

Ligas recomendadas:

wget con ejemplos (Linuxtotal):

http://www.linuxtotal.com.mx/index.php?cont=info_admon_017

Limitar la velocidad de descarga en Wget (blog del amigo @nierox):

http://www.nierox.com/2009/10/limitar-la-velocidad-de-descarga-en-wget/

10
Nov
09

Caso el Bruto.es

ElBruto.es

Genesis:

Hace un par de meses me inscribi a la página del elbruto.es (http://fitorec.elbruto.es/)  no soy muy adepto a jugar, pero en el juego se me hiso bastante entretenido, en una ocacion cuando estaba en Oaxaca en la Sica-Unitierra platicando con @eymard y @nierox me dijeron que si le entrabamos y armabamos un clan yo le dije que si, y fuee como inicia este caso.

Estudio del caso:

Pues bien el bruto resulta que es un juego desarrollado por motion-twin la forma en como interactuan los brutos es algo rara,  pues existen diversos servidores de elbruto:

Grafico red elbruto.es

Grafico red elbruto.es

Entre toda esta complegidad en la red un detalle importante a destacar es que el el bruto.es (de España) se se conecta para extraer datos del  labrute.fr (de Francia) esto lo hace atravez del usuarios data es por esta razón que no es posible crear el usuario data y si intentamos accedes a los datos de dicho usuario p.e (http://data.elbruto.es/) nos indicara “error: 404 page no found” .

¿Entonces como poder ganar en el bruto?

El problema principal es poder jugar el bruto y subir rapido de nivel, veamos como es esto posible, consideraciones:

1.-Cuando te inscribes en el bruto el primer dia te dan 6 peleas.

2.- Los siguientes dias solo tienes derecho a combatir 3 veces por dia.

3.- Por cada combate que ganes a un bruto de nivel igual al tuyo o superior, te daran 2 puntos de experiencia.

4.- Por cada pelea perdida o ganada(a un bruto de nivel inferior) solo optendras 1 punto de experiencia.

5.- Por cada alumno nuevo que tengas (Se debera registrar con una IP distinta) te daran 1 punto de experiancia.

6.-Cuando un alumno sube de nivel te daran 1 punto de experiencia.

Si nos ponemos a pensar un poquito nos daremos cuenta que existen muchas formas de poder conseguir puntos de experiencia de forma rapida, una de ellas es procurar que nuestro bruto siempre gane las peleas esto para que siempre nos den 2 puntos de experiencia, entonces la pregunta seria ¿como hacerle para que nuestro bruto siempre gane?,esta pregunta es algo complicada yo le estuve pensando en como hacerle la forma como se me ocurrio fue la de buscar a los brutos mas perdedores, esto de alguna manera asegura que nuestro bruto estadisticamente tiene mas probabilidades de ganar.

Cuando nos logeamos en el bruto y nos vamos a la arena para combatir el sistema nos muestra una lista de oponentes de nuestro mismo nivel, como se muestra en la siguiente figura.

arene

¿De todos ellos quien es rival mas debil?, pues en realidad es dificil de decidir, pero podemos explorar a cada uno de ellos para ver sus estadisticar por ejemplo para ver los datos del que esta en la esquina inferior derecha (somdavgs) si podriamos ver sus datos estadisticos en su celda la cual seria la siguiente url: http://somdavgs.elbruto.es/cellule aqui mismo podemos ver datos como: nivel,puntos de vida, fuerza, velocidad, numero total de peleas ganadas; pero hay unos datos muy especiales que son las ultimas 7 actividades de nuestro bruto.

Estas por lo regular son las ultimas 7 peleas, para cada una de ellas nos dice contra quien fue y ademas si el bruto en cuestion la perdio o gano, resulta un poco evidente que a los brutos contra los que gano deberan ser más debiles.

Mi Solución :

La solucion esta implicita en la explicacion previa, en la siguiente imagen intento explicar dicho concepto:

spider

La figura ilustra como el spider(programa que inspecciona las páginas del World Wide Web de forma metódica y automatizada)  selecciona a (Zukoo,4d38,felixxxx31)  como los siguientes candidatos (costado izquierdo) y en un determinado momento llega al usuario el cual tiene todas las peleas perdidas siendo este el rival mas debil(costado derecho).

mi idea fue la de hacer un script que haga:

1.- Que atraves del nick y el pass de nuestro usuario inicie sesion en  la pagina del bruto.

2.-Seleccione a los 6 oponentes candidatos.

3.- Para cada oponente candidato

3.1.- Extraiga los datos estadisticos de cada uno de ellos

3.2. Si el bruto ha perdido sus ultimas  peleas ->

3.2.1  Recomendar combatir contra el.

3.3. Repetir paso(3.1) Para cada bruto que halla perdido

3.- Este paso se repetira asta que halla recorrido un nivel de 3 entre las relaciones

Implementacion:

De la implementación no hay mucho que decir(pues lo importante esta arriba), para realizar mi idea primero pense en Perl, sin embargo todavia no me siento muy comodo con dicho lenguaje asi que me cambie a Python el cual es un lenguaje que llevo utilizando de un corto tiempo para aqui, pero que cada vez me gusta más.

Codigo en python:

acceder al codigo

acceder al codigo

Dejo la documentacion de la que me apoye:

Python doc Internet Protocols and Support: Documentacion oficial(ingles).

http://docs.python.org/library/internet.html

Interactuar con webs en Python : Breve explicación muy intuitiva con ejemplos y en español

http://mundogeek.net/archivos/2008/04/15/interactuar-con-webs-en-python/

 

Conclusión:

Es posible el hacer que nuestros bruto gane siempre solo es cuestion de enfrentarlo contra el rival adecuado, por otra parte seria bueno el crear un script en el cual se conecte atraves de multiples proxy’s y nos creen alumnos si podriamos subir de puntos rapidamente.

Bueno espero que le sirva a alguien este caso.

p.d. Por favor creenme un alumno desde http://fitorec.elbruto.es/

 

01
Nov
09

Declaración de independencia del ciberespacio

Dejo aquí una traducción sobre la declaración de independencia del ciberespacio de John Perry Barlowesta traducción la realice personalmente, no se que tan buena sea espero comentarios.

dejo la liga de documento original:

http://w2.eff.org/Censorship/Internet_censorship_bills/barlow_0296.declaration

Dejo también una traducción en wikisource :

http://es.wikisource.org/wiki/Declaraci%C3%B3n_de_independencia_del_ciberespacio

Así como la liga de esta tradución:

http://gist.github.com/223403

Declaración de independencia del ciberespacio

Gobiernos del Mundo Industrial, ustedes cansados gigantes de carne y acero, vengo del Ciberespacio, el nuevo hogar de la Mente. En nombre del futuro y del pasado les pido que nos dejen en paz. No son bienvenidos entre nosotros. No ejercen ninguna soberanía sobre el lugar donde nos reunimos. No hemos elegido ningún gobierno, ni pretendemos tenerlo, así que me dirijo a ustedes sin mas autoridad que  la libertad de expresarme.
Declaro el espacio social global que estamos construyendo independiente por naturaleza de las tiranías que están buscando imponernos. No tienen ningún derecho moral a gobernarnos ni poseen métodos para hacernos cumplir su ley que debamos temer verdaderamente.
Los gobiernos derivan del justo poder del consentimiento de los que son gobernados. No habrán podido ni recibido el nuestro. No los hemos invitado.
Ustedes no nos conocen, ni conocen nuestro mundo. El Ciberespacio no se encuentra dentro de sus fronteras. No piensen que podrán construirlo, como si se tratara de un proyecto de obras públicas. No se puede. Es un acto natural que crece a través de nuestras acciones sociales y colectivas.
No se han unido a nuestra gran conversación colectiva, ni han creado la riqueza de nuestros mercados. Ustedes no sabe de nuestra cultura, nuestra ética, o los códigos no escritos que ya proporcionan a nuestra sociedad más orden que podría obtenerse por cualquiera de sus imposiciones.

Proclaman que hay problemas entre nosotros que necesitan resolverse. y utilizan esto como una excusa para invadir nuestros límites. Muchos de estos problemas no existen. Donde haya verdaderos conflictos, donde haya errores, los identificaremos y la dirección por nuestros propios medios. Estamos creando nuestro propio Contrato Social. Esta forma de gobernarnos se creará según las condiciones de nuestro mundo, no del suyo. Nuestro mundo es diferente.

El Ciberespacio está formado por transacciones, relaciones, y pensamiento en sí mismo, se extiende como una onda estacionaria en la red de nuestras comunicaciones. Nuestro mundo está a la vez en todas partes y en ninguna parte, pero no está donde viven nuestros cuerpos.
Estamos creando un mundo plural en el que tod@s pueden entrar, sin privilegios o prejuicios debidos a la raza, el poder económico, la fuerza militar, o el lugar de nacimiento. Estamos creando un mundo donde cualquiera, en cualquier sitio, puede expresar sus creencias, sin importar lo singulares que sean, sin miedo a ser coaccionado al silencio o al conformismo.
Sus conceptos legales sobre propiedad, expresión, identidad, movimiento y contexto no se aplican a nosotros. Pues estos se basan en la materia(materialismo). Aquí son irrelevantes ya que no hay materia en cuestión.

Nuestras identidades no tienen cuerpo físico, así que, a diferencia de ustedes, no nos pueden imponer orden por coacción física. Creemos que nuestra autoridad emanará de la moral, de un progresista interés propio, y del bien común.
Nuestras identidades pueden distribuirse a través de muchas jurisdicciones. La única ley que todas nuestras culturas reconocerían es la Regla Dorada. Esperamos poder construir nuestras soluciones particulares sobre esa base. Por que no estamos dispuestos ha aceptar las soluciones que están tratando de imponernos.

En Estados Unidos han creado una ley, el Acta de Reforma de las Telecomunicaciones, que repudia la propia Constitución e insulta los sueños de Jefferson, Washington, Mill, Madison, DeToqueville y Brandeis. Estos sueños deben renacer ahora en cada uno de nosotros.
Se Aterrorizan de sus propios hijos, ya que ellos son nativos en un mundo donde ustedes siempre serán inmigrantes. Como les temen, se encomiendan a su burocracia, con las responsabilidades de los padres que son demasiado cobardes para hacer frente a ustedes mismos. En nuestro mundo, todos los sentimientos y expresiones de la humanidad, desde las más viles a las más angelicales, son parte de un todo único; la conversación global de bits. No podemos separar el aire que asfixia del aire sobre las alas que batir.
En China, Alemania, Francia, Rusia, Singapur, Italia y los Estados Unidos, está intentando de protegerse del virus de la libertad erigiendo ser la guardia en las fronteras del Ciberespacio. Pueden impedir el contagio durante un pequeño tiempo, pero esto no funcionará en un mundo que creo tan rápido y con pocos soportes.

Son cada vez más obsoletas las industrias de la información se perpetúan a sí mismas proponiendo leyes, en América y en otras partes, que afirman poseer la palabra por todo el mundo. Estas leyes declaran que las ideas un producto más de la industria, menos noble que el hierro oxidado. En nuestro mundo, lo que la mente humana pueda crear puede ser reproducido y distribuido infinitamente sin ningún costo. El intercambio global del pensamiento ya no necesita de sus fábricas para llevar esto a cabo.

Estas medidas cada vez más hostiles y coloniales, nos colocan en la misma posición a los amantes de la libertad con la auto-determinación de rechazar a las autoridades, los poderes desinformados. Debemos declarar nuestros entidades virtuales inmunes a su soberanía, aunque continuemos soportando su poder sobre nuestros cuerpos. Nos extenderemos a través del planeta para que nadie pueda encarcelar nuestros pensamientos.

Vamos a crear una civilización de la Mente en el Ciberespacio. Que sea más humana y justa que el mundo que nuestros gobiernos hicieron.

25
Oct
09

Implementación algoritmo Prim en Python

Marco teórico:

El algoritmo de Prim es un algoritmo de la teoría de los grafos para encontrar un árbol recubridor mínimo
en un grafo conexo, no dirigido y cuyas aristas están etiquetadas.
En otras palabras, el algoritmo encuentra un subconjunto de aristas que forman un árbol con todos los
vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible. Si el grafo no es conexo,
entonces el algoritmo encontrará el árbol recubridor mínimo para uno de los componentes conexos que
forman dicho grafo no conexo [?] .

Implementación en Python:

#!/usr/bin/python
#        Copyright (C) 2009 fitorec - chanerec@gmail.com
#        Archivo	: prim.py
#        Creado     : 2009-05-31
#        Modificado : 2009-05-31
#       ======================= Descripcion ===========================
#		Input: leemos el grafo de un archivo denominado "grafo" el cual
#				debera estar en el mismo directorio.

import sys, re, string
print "archivo de entrada: 'grafo'"

#funcion auxiliar para extraer los datos del archivo
def extrDatos(linea):
	l = []
	v0 = re.compile("[[a-zA-Z]+ ")
	v1 = re.compile(" [[a-zA-Z]+ ")
	v2 = re.compile("[0-9]+")
	line = re.compile("[a-zA-Z]+ [a-zA-Z]+ [0-9]+")
	mo = line.search(linea)
	if mo:
		print mo.group(0)
	mo = v2.search(linea)
	l2 = []
	if mo:
		l.append(int(mo.group(0)))
	mo = v0.search(linea)
	if mo:
		l.append(mo.group(0).replace(" ",""))
	mo = v1.search(linea)
	if mo:
		l.append(mo.group(0).replace(" ",""))
	l.append(False)
	return l

#revisa si la arista y si alguno de sus nodos no han sido  marcados
def entra(nodo,arista):
	if arista[3] == True :
		return False
	if nodo[0] == arista[1]:
		return True
	if nodo[0] == arista[2]:
		return True
	return False

#revisa si el el vertice v conduce a un nodo nuevo en visitados
def noVisitado(v,visitados):
	if v[3] == True:
		return "$"
	for i in visitados:
		if i[1] == True:
			continue
		if i[0] == v[1]:
			return i[0]
		if i[0] == v[2]:
			return i[0]
	return "$"

f = open("grafo","r")
grafo = []
visitados = []

while True:
     entrada = []
     linea = f.readline()
     if not linea: break
     if re.match("[a-zA-Z]+ [a-zA-Z]+ [0-9]+",linea) :
     	grafo.append(extrDatos(linea))

grafo.sort()

#insertando los nodos a visitados
for i in grafo:
	band = True
	for j in visitados:
		if i[1] == j[0]:
			band = False
			break
	if band == True:
		visitados.append([i[1],False])
	band = True
	for j in visitados:
		if i[2] == j[0]:
			band = False
	if band == True:
		visitados.append([i[2],False])

#iniciando el algoritmo de prim
visitados[0][1] = True;
band = False;
print "\nSe inicio el algoritmo PRIM con el nodo %s" % visitados[0][0]
while band == False:
	vertices = []
	band = True
	for i in range(len(visitados)):
		if visitados[i][1] == False:
			continue
		for j in range(len(grafo)):
			if entra(visitados[i],grafo[j]):
				vertices.append(j)

		vertices.sort()
	for i in vertices:
		s = noVisitado(grafo[i],visitados)
		if s == "$":
			continue
		print "Conociendo %s a traves [(%s,%s),%s]" % (s,grafo[i][1],grafo[i][2],grafo[i][0])
		for j in visitados:
			if j[0] == s:
				j[1] = True
		grafo[i][3] = True
		break
	for n in visitados:
		if n[1] == False:
			band = False
			break

print "\nArbol de expansion minima: "
for i in grafo:
	if i [3] == True:
		print "[(%s,%s),%s]" % (i[1],i[2],i[0])

Corrida de ejemplo:

Para la corrida de ejemplo necesitamos un archivo de entrada el cual describa un grafo para esto he elegida el grafo de la documentacion de wikipedia http://es.wikipedia.org/wiki/Algoritmo_de_Prim .

Grafo a utlizar (Extraido de Wikipedia)

Grafo a utlizar (Extraido de Wikipedia)

Ahora necesitamos insertale al algorimo el grafo par este caso hemos generado el siguiente archivo denominado grafo el cual tine el siguinente formato (nodoA nodoB pesoEntreAyB), veamos el grafo que describe la imagen antes mostrada.

A B 7
A D 5
B C 8
B E 7
D E 15
D F 6
F E 8
F G 11
E G 9
C E 5
B D 9

Pasos:

Paso 1:Ninguna de las aristas está marcada, y el vértice A ha sido elegido arbitrariamente como el punto de
partida.
Paso 2: El Primer vértice es el más cercano a A es D está a 5 de distancia,ya que B se localiza a una
distancia de 7, así que marcamos la arista [(A,D),5] y el nodo A como visitado.
Paso 3: Ahora que solo conoce al Nodo A y D el nodo siguiente por conocer es F a travez de la arista
3
[(D,F),6].
Paso 4: Conociendo B a traves [(A,B),7]
Paso 5: Conociendo E a traves [(B,E),7]
Paso 6: Conociendo C a traves [(C,E),5]
Paso 7: Conociendo G a traves [(E,G),9]

salida en linea de comando

Por ultimo muestro la salida en linea de comandos al ejecutar el script.

usuario@host$./prim.py
archivo de entrada: ’grafo’
A B 7
A D 5
B C 8
B E 7
D E 15
D F 6
F E 8
F G 11
E G 9
C E 5
B D 9
Se inicio el algoritmo PRIM con el nodo A
Conociendo D a traves [(A,D),5]
Conociendo F a traves [(D,F),6]
Conociendo B a traves [(A,B),7]
Conociendo E a traves [(B,E),7]
Conociendo C a traves [(C,E),5]
Conociendo G a traves [(E,G),9]
Arbol de expansion minima:
[(A,D),5]
[(C,E),5]
[(D,F),6]
[(A,B),7]
[(B,E),7]
[(E,G),9]

Decargar Codigo
18
Oct
09

Hotmail y sus problemas de seguridad:

Hace apenas unos días un amigo me pregunto de respecto a la opción “de seguridad mejorada” que nos proporciona hotmail.

Bueno para aquellos que no se han dado cuenta hotmail en su pagina principal de logeo nos ofrece una opción entre si logearse en modo “normal” o logearse por medio de seguridad mejorada.

logeo hotmail

logeo hotmail

Antes de responder me tome unos minutos para reflexionar y se me vinieron otras preguntas, como:

¿por que gmail no, nos da esa opción de: “seguridad mejorada”?

Seguramente algún iluso dirá: Por que Todavía gmail no lo implementa!.

Cuando en realidad la respuesta es por que gmail trabaja con seguridad mejorada siempre :¬D

Entonces que es lo que hace específicamente hotmail cuando ¿presionamos el botón de seguridad mejorada?, y que ¿hace cuando no e iniciamos sesión simplemente?.

Bueno pues en realidad Hotmail trabaja con un nivel de seguridad bastante bajo en donde los datos son trasferidos de manera no segura por distintos servidores en la Internet.

Esto es por que cuando iniciamos sesión de manera “normal” en hotmail los datos son trasferidos bajo una forma definida, bajo un “protocolo” el cual se denomina http(Hypertext Transfer Protocol) que es como funcionan la mayoría de los sitios.

Y cuando presionamos el botón de “seguridad mejorada” los datos son trasferidos pero en esta ocasión bajo otro protocolo, bajo el protocolo “https(Hypertext Transfer Protocol Secure)”.

Cuando realizamos la solicitud http://fitorec.wordpress.com estamos diciendo que queremos que nos transfieran por http lo que esta en fitorec.wordpress.com, pues igual pasa con el correo electrónico cuando le decimos https le decimos que queremos que los datos nos los trasfieran por https, como se puede observar en las capturas en la urls generadas:

Hotmail en  modo normal (http)

Hotmail en modo normal (http)

Hotmail en  modo seguro (https)

Hotmail en modo seguro (https)

Gmail en  modo normal (https)

Gmail en modo normal (https)

Esto se me hace muy irónico, ¿por que hotmail ocupa por predeterminado el logeo no seguro?, que no se supone representa la empresa de mayor desarrollo del software, esta misma empresa tolera los virus…

Desgraciadamente muchos tenemos cuenta de hotmail(lo digo con pena) por cuestiones sociales es por esto que solo nos queda difundir a nuestros contactos que cuando inicien sesión en hotmail lo hagan de modo “seguridad mejorada” , aunque en realidad Hotmail y su seguridad siguen dando mucho que desear.

11
Oct
09

Trigger – Disparadores en PosgreSQL

Un disparador o Trigger es una función con ciertas características, de ellas la mas relevante es que es invocada(llamada) automáticamente al suceder cierta acción sobre una tabla.

Este es el motivo de su nombre ya que son funciones que serán disparadas al suceder cierto evento, insertar un registro, borrar, editar, etc., ademas también podemos definir si este disparador ocurra antes o después de dicho evento.

Nota: para que una función sea denotada como trigger deberá ser declarada como una función que no reciba argumentos y deberá devolver un tipo trigger.

Imaginemos que tenemos el siguiente esquema de la tabla emp(empleados):

CREATE TABLE emp (
    empname text,
    salary integer,
    last_date timestamp,
    last_user text
);

Ahora para este ejemplo lo que pretendemos hacer es que validar los datos antes de ser intertados o actualizados en el registro de emp, para esto declaramos un disparador el cual deberá revisar los datos nuevos a insertar o actualizar, para esto PL/pgSQL nos brinda un objeto denominado NEW el cual tiene como miembro a los nuevos valores por insertar por ejemplo NEW.empname accede al valor de empname que introdujo el usuario al realizar la consulta update o insert. Veamos mejor el ejemplo.

CREATE FUNCTION emp_stamp() RETURNS trigger AS $emp_stamp$
    BEGIN
        -- Revisando que el campo empname No este vacio
        IF NEW.empname IS NULL THEN
            RAISE EXCEPTION ’empname no puede ser null’;
        END IF;
	-- Revisando que el campo salary No este vacio
        IF NEW.salary IS NULL THEN
            RAISE EXCEPTION ’% salary no puede ser null’, NEW.empname;
        END IF;
        -- Salary tampoco puede llegar a ser negavito
        IF NEW.salary < 0 THEN
            RAISE EXCEPTION ’% no puede haber un salario negativo!’, NEW.empname;
        END IF;
        -- Generando los datos para la bitacola
        NEW.last_date := current_timestamp;
        NEW.last_user := current_user;
        RETURN NEW;
    END;
$emp_stamp$ LANGUAGE plpgsql;

De igual forma p.e. En el caso del UPDATE si quisiéramos comparar el valor anterior del campo empname podríamos acceder con desde el objeto OLD en este caso seria OLD.empname, por ultimo solo nos falta instanciar el Trigger a la tabla y eventos correspondientes.

CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
    FOR EACH ROW EXECUTE PROCEDURE emp_stamp();

Para esto instanciamos el Trigger (CREATE TRIGGER) emp_stamp a la tabla(ON) emp para que sea ejecutado antes (BEFORE) una inserción u una actualización (INSERT OR UPDATE).

Conclusiones:

Como podemos ver un Trigger es una función que es ejecutada automáticamente por el motor de BD al generarse una acción, así también vimos un ejemplo claro de su uso común en la validación de los datos, ya que como podemos ver estas funciones las definimos en el estema de nuestra BD y con esto tenemos la seguridad que nuestras tablas se comportaran de la forma como la definimos, p.e. Si tenemos una aplicación de escritorio programada en Java y otra aplicación distribuida en PHP y ambas hacen uso de la tabla emp, con esto tendremos la certeza que la tabla emp nunca tendrá un campo con el valor salary negativo, sin importar la mala programación en Java o PHP.

Fuente Documentación oficial PosgreSQL 8.4.1 US:

http://www.postgresql.org/files/documentation/pdf/8.4/postgresql-8.4.1-US.pdf

La información fue extraída y traducida de:

  • 9.25. Trigger Functions – paginas 322-323
  • 12.4.3. Triggers for Automatic Updates – paginas 360-362
  • 38.9. Trigger Procedures – paginas 925-931

PostgreSQL 8.4.1 Documentation  by The PostgreSQL Global Development Group  Copyright ©

10
Oct
09

Programacion de Palms con MOJO y Java

Introducción:

Existen múltiples formas de programar estos dispositivos móviles, aquí veremos como configurar nuestro equipo para poder programar a través del kit de desarrollo(MOJO) que nos ofrece esta compañía.

Desarrollo de Aplicaciones en Palm con SDK y MOJO

Desarrollo de Aplicaciones en Palm con SDK y MOJO

Tabla de contenidos:

0.- Breve introducción.

1.- Instalando Entorno de Desarrollo.

1.- Instalando el Entorno de Desarrollo.

linux

Nota: he configurado e instalado sobre ubuntu 9.04.

Lo primero que tenemos que hacer es instalar la suite Mojo SDK para nuestro entorno Linux para esto nos basamos en la documentacion que se localiza en la pagina:

Installing the Palm® Mojo™ SDK on Ubuntu 8.04 http://developer.palm.com/index.php?option=com_content&view=article&id=1585

1.1 . Instalando Virtual Box.

VirtualBox

VirtualBox

Descargamos el virtual box para nuestro linux en la siguiente liga:

http://www.virtualbox.org/wiki/Linux_Downloads

Por ejemplo en mi caso que tengo ubuntu 9.04:

$wget http://download.virtualbox.org/virtualbox/3.0.4/virtualbox-3.0_3.0.4-50677_Ubuntu_jaunty_i386.deb

luego ejecutamos nuestro archivo descargado para instalar.

$sudo deb virtualbox-3.0_3.0.4-50677_Ubuntu_jaunty_i386.deb

posteriormente descargas el SDK MOJO de la pagina de palm:

http://developer.palm.com/index.php?option=com_content&view=article&id=1788

http://developer.palm.com/index.php?option=com_content&view=article&id=1788

una vez descargado se instala:

$sudo deb palm_mojo_sdk-Ubuntu-1.1.0-sdk62-hud25_i386.deb





Calendario

Diciembre 2009
L M X J V S D
« Nov    
 123456
78910111213
14151617181920
21222324252627
28293031  

del.icio.us/fitorec

Estadisticas

  • 4,104 hits

Bitacola entradas