viernes, 4 de diciembre de 2009

Introducción a un sniffer

Un sniffer en términos de informática se puede definir como un programa que nos permite capturar los paquetes que son transmitidos por una red de computadoras con la finalidad principal de estudiar nuestra red. Actualmente se pueden conseguir muchas aplicaciones de este tipo como por ejemplo: Ethereal o Wireshark.

Ahora, si prefieres construir tu propio sniffer, existe una librería para el lenguaje de programación C llamada Libpcap la cual cuenta con toda una interfaz para dicho propósito, es decir, un conjunto de funciones que te permiten configurar interfaces de red de tu maquina con la finalidad de que puedas iniciar la captura de paquetes.

Los aspectos básicos que debes de tener para que puedas iniciar la creación de tu propia aplicación de este tipo son:

->Conocimientos generales de redes de computadoras.

->Que conozcas a grandes rasgos el funcionamiento del modelo TCP/IP para que entiendas el encapsulamiento que sufren los paquetes que se transmiten por la red, esto te servira a la hora de que desees interpretar un paquete que captures.

->Lógico, que sepas programar en C.

->Que tengas a la mano los RFC’s de diferentes protocolos, como: IP, TCP, UDP, ARP, etc. Te serviran para que comprendas el funcionamiento de cada uno de estos.

->Que conozcas la estructura de las cabeceras de los paquetes que manejan los diferentes protocolos que utiliza tu red. Por ejemplo: la cabecera ethernet se encuentra especificada en el archivo ethernet.h y tiene una estructura como la que sigue:

struct ether_header
{
u_int8_t ether_dhost[ETH_ALEN]; /* destination eth addr */
u_int8_t ether_shost[ETH_ALEN]; /* source ether addr */
u_int16_t ether_type; /* packet type ID field */
}

En base a esta estructura podemos identificar que tiene una longitud de 14 bytes. 6 bytes por cada dirección ethernet (MAC) y 2 bytes para el campo de ether_type (protocolo).

Cuando se interpreta un paquete, la primer cabecera que hay que extraer es la ethernet, despues en base al valor que contega ether_type identificamos que protocolo esta encapsulando, investigamos la configuración de su cabecera para que sea la proxima en extraer y despues podremos estar obteniendo el payload o carga útil, por lo que es importante conocer el tamaño de las cabeceras para irnos posicionando en el paquete.

Investigando un rato en internet puedes dar con páginas muy interesantes que contienen ejemplos y mucha información para que puedas iniciar el desarrollo de tu sniffer. En la siguiente publicación pienso poner algo de código funcional para que sirva como introducción.

miércoles, 18 de noviembre de 2009

¿Do you want a IDE for C y C++ on Linux?

Anjuta DevStudio is the correct solution.

I have a little time working with Anjuta DevStudio but it's necessary to fall in love, je. Other thing that make to this IDE very interesting is the easy way that give us to work with graphical interface so we can include a tool like Glade to development user interfaces for GTK+ toolkit.

Anjuta is licensed under the GNU GPL to the same form that Glade.

And other thing very important is that we can found a lot of information about. Here, I give you two links to pages where you will can read during very much time of Anjuta and Glade.

Anjuta
Glade

/* Is the first time that I write in this language so I'm sorry if I have some mistakes, I'll be to make better */

martes, 13 de octubre de 2009

AGRADECIMIENTOS

Esta publicacion la realizo con el fin de agradecer a todos los organizadores de la semana de ingenierias del Instituto Tecnologico Superior de Huetamo por el trato tan amable que se nos dio durante nuestra estancia, especialmente al Ingeniero Edgar que fue el encargado de nosotros, tambien quiero reiterar que seguimos en contacto para futuros eventos.

A todos los que asistieron a la conferencia que imparti quiero decirles que estoy abierto a cualquier comentario o pregunta que quieran hacerme llegar.

Saludos.

viernes, 25 de septiembre de 2009

Conferencia en el Tec de Huetamo

Quiero contarles que actualmente me encuentro preparando una pequeña conferencia que presentare el proximo mes de Octubre en el Instituto Tecnológico de Huetamo la cual tratara sobre VLANs.

Actualmente he estado pensando en el titulo pero le dejare el de siempre, ja "Introducción a VLANs", al menos que me propongan alguno o don David que es mi fiel lector diga cual, jeje.

Bueno, saludos y despues les pongo una breve reseña de la ponencia.

viernes, 4 de septiembre de 2009

VTP (VLAN Trunking Protocol)

VTP es un protocolo para la administración de redes virtuales en dispositivos cisco, tiene una forma de trabajar muy interesante y bastante sencilla, su finalidad es facilitar el trabajo del administrador y asegurar la congruencia en las VLANs creadas en cada uno de los switches.

VTP funciona mediante la agrupación de switches que comparten las mismas VLANs y la asignación de roles a cada uno de estos. A grandes rasgos, las VLANs que sean creadas en un determinado switch serán configuradas de manera automática en todos los demás switches dentro de la misma agrupación o dominio, por lo que se ahorra tiempo en la configuración y se evita que se comentan errores al crear VLANs diferentes.

Un switch puede ser configurado de acuerdo a tres diferentes estados VTP:

1. Server: Tiene los privilegios necesarios para: crear, eliminar o modificar VLANs. Y despues compartirlas entre todos los switches del mismo dominio.

2. Transparent: Puede crear, eliminar y modificar VLANs pero solo de manera local, es decir, modificaciones que haga a VLANs no seran compartidas con los demás switches del dominio.

3. Client: No puede crear, eliminar o modificar VLANs, solo esta a la espera de los cambios que un switch server le comunique.

Para que este mecanismo funcione, VTP utiliza el paso de mensajes entre los switches que conforman la topologia, mensajes VTP son enviados cada 5 minutos con la finalidad de que los switches en el dominio se sincronicen.

Para más información acerca de este protocolo, ya que esto de lo que les hable es solo la introducción, existe un link proporcionado por cisco bastante bueno, además pueden encontrar también un video excelente acerca de VTP.

saludos

jueves, 30 de julio de 2009

Algo sobre VLANs

Saludos y como lo prometido es deuda, aquí les dejo una pequeña publicación sobre VLANs.

Actualmente es muy común que la topología de red que podamos tener en una organización este regida por aspectos geográficos mas que por elementos jerárquicos de nuestra empresa, es decir, usuarios de un determinado departamento forman parte de la misma red de computadoras a la cual otro departamento también lo hace, simplemente por que físicamente se encuentran dentro de la misma oficina, lo que hace que tengamos a trabajadores de distintas áreas utilizando un mismo canal de comunicación. En base a esto se pueden apreciar a simple vista fallas en la seguridad.

Una VLAN (Virtual LAN) lo que pretende es tener de manera lógica bien organizada y delimitada nuestra topología de red, pudiendo crear tantas VLANs como departamentos o áreas de trabajo tengamos.

Entonces, una VLAN se define como la interconexión lógica de dispositivos de red, pudiendo tener en un mismo switch diferentes redes virtuales o formar una sola VLAN con equipos conectados en diferentes switches.

Les dejo una imagen que encontré en Internet en la cual se puede apreciar con claridad una organización con VLANs.

En la siguiente publicación les hablare de algo mas técnico sobre el mismo tema.

Saludos.

domingo, 28 de junio de 2009

Saludos

Buen dia, hoy no publico algo muy formal, hay muchos temas que me gustaria redactar pero los dejare para despues, tengo mucho que no les platico algo y por eso me animo a escribirles aunque sea un poco, actualmente me encuentro trabajando en lo de mi titulación, realizare una monografia con el titulo "Intercepcion de frames etiquetados en VLANs", en un tiempo más publicare algo al respecto, aqui les dejo un link para los que esten interesados en el tema, en lo personal conozco poco de esto pero me suena bien y pues a investigar, je. Algo que tambien tendre que hacer como ejercicio practico sera un pequeño sniffer que intercepte frames para poder identificar de que VLAN provienen.



Bueno despues les platico y les muestro algo de codigo.

Saludos.

miércoles, 29 de abril de 2009

Asignación de permisos en Linux

El sistema operativo Linux cuenta con un mecanismo para la asignación de permisos a todo directorio o archivo que maneje, mecanismo que para todo principiante en dicho software es muchas veces desconocido.

El saber como funciona este mecanismo nos es de gran utilidad ya que nos permite realizar actividades que para algunos son sencillas pero para otros significa el dejar a un lado Linux, por la forma en que están acostumbrados a trabajar.

Esta forma de proteger los archivos y directorios es lo que hace a Linux un sistema mas seguro.


ASIGNACION DE PERMISOS

Se tienen tres tipos de miembros a los cuales se les pueden asignar permisos:
+ Dueño
+ Grupo
+ Otro

Los permisos que se pueden asignar a cada miembro son:
+ Lectura
+ Escritura
+ Ejecución

Es decir, se le puede dar permiso de lectura y escritura al dueño pero a los usuarios pertenecientes al grupo solo de lectura, por citar algún ejemplo.

Una forma de hacer esto es con el comando "chmod" seguido de los permisos q se asignaran y el archivo o directorio que se vera afectado.

Los permisos estarán simbolizados por números y la asignación de una combinación de estos será mediante la suma de los mismos, los valores para cada permiso son los siguientes:
+ Lectura = 4
+ Escritura = 2
+ Ejecución = 1

Ejemplo1: Si queremos permisos de lectura para el dueño, grupo y otro en el archivo main.l se escribe en una consola y como super-usuario lo siguiente:

chmod 444 main.l

El primer 4 se refiere a los permisos para el dueño, el segundo para el grupo y el tercero para otro.


Ejemplo2: Permisos de lectura (4), escritura (2) y ejecución (1), (4+2+1=7) para el dueño, permisos de lectura para el grupo y ninguno para cualquier otro usuario sobre el archivo main.l

chmod 740 main.l


De esta forma es como se asignan permisos en Linux, espero les sea de utilidad.

domingo, 26 de abril de 2009

FLISOL 2009

Saludos a todos y despues de un dia lleno de trabajo por la realización del FLISOL 2009 en las instalaciones del Instituto Tecnológico de Morelia, quiero felicitar, primero que nada, a todos mis compañeros, miembros del Grupo de Usuarios Linux de Morelia (GULMORE) por la gran labor que de acuerdo a sus posibilidades desempeñaron, y despues, que no son menos importantes, ya que sin ellos no hubiera sido posible, a todas las personas que asistieron a dicho Festival, agredeciendo también todos los puntos de vista que nos proporcionaron durante la clausura, ya que con estos nos brindan la posibilidad de mejorar la realización de futuros eventos.

Felicidades compañeros y sigamos a delante con los demas objetivos que tenemos en agenda.

miércoles, 18 de febrero de 2009

Pequeña aplicacion en Java Struts

Nuestra aplicación estará formada por los siguientes archivos y por una tabla llamada Passwords:

Model:
•Passwords.java
•PasswordsClient.java

Controller:
•LoginActionForm.java
•LoginAction.java
•struts-config.xml

View:
•inises.jsp
•bienvenida.html
•errorIniSes.html

Tabla Passwords:
Atributos: usuario, password;

El archivo Passwords.java viene siendo nuestra “Clase Entidad”, esta hecha a imagen y semejanza, en este caso, de nuestra tabla Passwords.

Con PasswordsClient.java realizamos la conexión a la base de datos y la creación de métodos para el manejo de esta.

LoginActionForm.java también conocido como “bean” contiene un atributo por cada cajita de texto en donde el usuario proporcionara sus datos, así como los respectivos métodos “set” y “get”.

En LoginAction.java llevamos acabo la lógica de validar los datos.

struts-config.xml es el archivo de configuración en donde estableceremos cual sera nuestra Action en este caso LoginAction.java, cual nuestro bean (LoginActionForm) y cuales nuestros forwards, es decir, si son validos los datos del usuario que ventana mostraremos (bienvenida.html) o hacia donde dirigiremos el flujo del sistema.

A continuación muestro un diagrama de cómo estarían relacionados en nuestra aplicación todos estos elementos:



Quizás resulta demasiado confuso pero conforme te familiarizas se convierte en razonable y aprecias lo funcional.

Para más información acerca de MVC podemos visitar:
http://es.wikipedia.org/wiki/Modelo_Vista_Controlador

La documentación de Java Struts:
http://struts.apache.org/

Java Struts

Después de tanto tiempo sin publicar, por aquí estoy de nuevo, actualmente me encuentro realizando mis residencias profesionales en la Comisión Federal de Electricidad de la ciudad de Morelia, el proyecto en el que estoy trabajando tiene que ver con la creación de un sistema utilizando el Framework Java Struts, no soy experto en esta tecnología pero tratare de explicar en que consiste.

Resulta que recordando la clase de “Ingeniería de Software” existe una arquitectura en la cual nos podemos basar para desarrollar algún sistema, el seguir este diseño nos trae algunas ventajas como: modularidad, fácil mantenimiento, sencillo de entender (por aquello de que luego tenemos código conocido en ocasiones como espagueti), etc.

Con Java Struts podemos desarrollar software siguiendo esta arquitectura llamada MVC (Model View Controller) donde la parte del modelo tiene que ver con el manejo de información, muy probablemente conexiones a la base de datos, View (vista), todo lo referente a las interfaces y Controller todo lo que es la lógica de negocios (Business Logic).

Para que se comprenda con mayor facilidad este Framework hablare de una pequeña aplicación en donde son validados los datos proporcionados por un usuario para permitir (mostrando una pagina de bienvenida) o denegar (mensaje de error) el acceso al sistema: esta aplicacion la muestro en la siguiente publicación.