miércoles, 19 de diciembre de 2012

Primera semana

Un mes sin poner nada aquí, bueno es que estaba ocupado buscando trabajo.

Y lo encontré  aquí esta el recuento de la primera semana y el primer comic de una serie que (espero) poder sacar semanalmente (o lo mas cercano a eso que pueda)

Primera semana.

miércoles, 7 de noviembre de 2012

Modem Crash

No odian cuando están bajando algo y algo hace que la conexión se pierda ?

Modem Crash.

viernes, 19 de octubre de 2012

Gato VS Computadora

Una idea que se me ocurrio para un comic, me extraña no haber visto algo asi antes, asi que ahí van, espero hacer unos cómics mas así en el futuro.

Gato VS Computadora.

Y uno con la inconfundible e impredecible voz del Avast Antivirus.

Actualización del Avast.

sábado, 22 de septiembre de 2012

Filtro de Captura: Un ejemplo practico

-->
En una entrada anterior presente la forma básica de llevar a cabo un filtrado de paquetes en Wireshark, mostrando las dos opciones principales disponibles que son el filtrado de visualización y el filtrado de captura.

Del filtrado de visualización ya se hablo antes, consiste, en escancie, en capturar todos los paquetes en la red almacenándolos en la memoria y luego visualizar los que se deseen.

Por su parte los filtros de captura le indican a Wireshark solo capturar y almacenar en memoria los paquetes que coincidan con las características indicadas en dicho filtro.

La diferencia entre estos dos filtros puede llegar a ser decisiva si se planea capturar y analizar una cantidad inmensa de paquetes o capturar por un periodo de tiempo prolongado, ya que por muy exagerado que suene si es posible que una red conlleve un trafico de tal magnitud que una captura de paquetes pueda llenar por completo la memoria de una computadora en cuestión de unas horas, lo que llevaría a que el sistema operativo se caiga o cierre el programa que esta consumiendo la memoria, en ambos casos todos los datos se perderían.

Para prevenir este caso podemos usar un filtro de captura el cual, como ya se menciono, le indicara a Wireshark a solo almacenar los paquetes que deseamos analizar y descartar el resto lo que ahorrara memoria y hará mas sencillo el análisis, al eliminar datos innecesarios que solo pueden ser considerados ruido al momento de examinar la captura.

Para ejemplificar esto se hará un sencillo experimento en el que veremos la diferencia entre ambos filtros, el experimento consistirá en capturar un tipo muy especifico de paquetes, que en este caso serán las respuestas a un ping.

-->
Procedimiento

Antes de comenzar sera necesario que tenga a la mano tanto Wireshark (y privilegios de administración si es que Wireshark no se configuro para cuentas de usuario regular), el programa ping y una conexión a Internet, ya que tenga ambos programas y acceso a Internet puede comenzar.

Para comenzar sera necesario que haga un ping a una pagina conocida, en este caso particular haremos dicho ping a google.com, si esta usando Windows es posible que necesite la opción -t para que ping se mantenga enviando paquetes, hecho esto inicie wireshark y comience a capturar datos.

Figura 1: Ping a google.com

Espere un par de minutos y después detenga la captura, si lo desea en ese tiempo acceda a una pagina de Internet para dar mas variedad a los paquetes capturados.

Figura 2: Paquetes Capturados.
Figura 3: Últimos paquetes capturados.
 
-->
Como podrá ver en este ejemplo se capturaron 11167 paquetes en 121 segundos como muestra la Figura 3 y de tipos muy variados como muestra la Figura 2

Sin embargo de esos paquetes solo unos son los paquetes que deseamos ver

Por esto vamos a filtrar las respuestas de ping esto se hace con la expresión “icmp.type==8”, la cual pondremos en el campo de filtros y nos dará un resultado como el mostrado en la Figura 4

Figura 4: Respuestas al Ping
Como nota adicional el tipo de paquete ICMP se puede consultar dentro del propio paquete en el campo “Type” como se ve ne la Figura 4.

Ahora pasaremos al filtro de captura para observar las diferencias, antes de comenzar es necesario hacer énfasis en que cada tipo de filtro tiene sus propios términos para identificar el tipo de paquetes, esto se puede consultar a mas detalle en la documentación de Wireshark.

Para comenzar necesita acceder a las opciones de captura y poner el filtro “icmp[icmptype]=icmp-echoreply” como muestra la figura 5
Figura 5: Opciones de captura.
 
-->
Hecho eso acceda a las paginas de internet que desee, mande correos, abra programas de mensajeria, vea algun video en internet, wireshark mostrara una pantalla como la de la Figura 6

Figura 6: Capturados
  -->
Ahora sera necesario que abra dos ventanas de la linea de comandos y ponga en una el comando “ping -t www.google.com” y en la otra “ping -t www.yahoo.com.mx” como se ve en la Figura 7

Figura 7: Ping a google y yahoo
-->
Y que de pronto en Wireshark se vera una pantalla como la figura 8

Figura 8: Paquetes capturados
-->
Que como puede ver son las respuestas de google y yahoo

Aqui puede observar la principal diferencia y ventaja de los filtros de captura ya que estos solo capturan lo que se desea ignorando todo lo demás, de modo que si se sabe que se desea analizar puede ignorar el resto, ahorrando memoria y haciendo mas legibles las estadísticas que se pueden generar desde Wireshark.




domingo, 16 de septiembre de 2012

lunes, 3 de septiembre de 2012

Remodelación

Fui al Pizza Hut cerca del dorado y esto paso, sabia que remodelaron, pero no me esperaba tanto.

Remodelación

domingo, 26 de agosto de 2012

Multicolumna en LaTeX

Después de casi dos meses de buscar trabajo, encontrarlo, acostumbrarme a no tener tiempo libre de las 3pm a las 9pm y ver como aprovechar mejor las mañanas (esto ultimo fue lo mas latoso), creo que ya es hora de poner algo aquí de nuevo.

Una de las cosas que me estuve pensando mientras mandaba mas correos con mi C.V que los spamers rusos es si seria posible replicar el formato que estaba usando con LaTeX y al parecer si lo es (ya solo falta buscar como posicionar una imagen en un lugar muy especifico del documento)

Considero que antes de armar todo el documento seria mejor presentar  las estructuras poco usuales que use para darle forma, empezando con una forma de presentar los datos generales.

Para esto quería una estructura de este modo:

Nombre:                                                     Juan Camaney
Fecha de nacimiento:                                 01/01/1999
Domicilio:                                                  Avenida Siempre viva 123
Telefono:                                                   (000) 12 34 54 7

Nada el otro mundo como notaran, solo la información con los datos en si alineados en la parte derecha, hacer esto en LibreOffice o MS Office no es ningún problema, solo basta hacer uso de la siempre confiable tecla que es el tabulador (aqui no se nota mucho, pero al parecer en el editor de blogger la tecla TAB hace otra cosa).

Ahora hacer eso en LaTeX es un poco mas complejo, una opción seria tratar de alinear manualmente escapando caracteres de espacio, pero eso no solo seria una solución muy poco elegante sino que ademas seria demasiado propensa al error.

Por fortuna existe una solución que hace ese formato sin ningún problema, esta es una combinación de las ya conocidas listas junto con la instrucción multicols del paquete multicol.

Esta instrucción nos permite dividir una sección de texto en el numero de columnas que deseemos, manejando automáticamente cuando texto le toca a cada columna para que quede lo mas parejo posible y su uso es muy sencillo.

La forma de usarlo es la siguiente:

\begin{multicols}{2}

\begin{itemize}
\item[] Nombre.
\item[] Fecha de Nacimiento.
\item[] Estado Civil.
\item[] Domicilio Particular.
\item[] Teléfono.
\item[] E-mail.
\item[] Juan Camaney.
\item[] 1 de Enero 1999.
\item[] Soltero.
\item[] Avenida Siempre Viva \#123.
\item[] 12-34-56-7
\item[] noreply@xmail.com.im
\end{itemize}

\end{multicols}


Donde \begin{multicols}{2} indica que deseamos crear 2 columnas con el texto hasta llegar a \end{multicols}. Un detalle que tal vez note en las instrucciones \item son los corchetes que puse justo despues de estas, esto es unicamente para quitar los puntos que el comando itemize suele poner y para nada una necesidad del comando multicols.

El resultado se ve como en la Figura 1.

Lista de datos después de aplicar multicols.

Como podrá notar esto cumple con lo que se desea, los datos en ambos lados están perfectamente alineados tanto vertical como horizontalmente sin la necesidad de usar espacios escapados u otras forma de alineación manual.


Ya para concluir pongo a continuación el código completo el cual muestra que se agrego el paquete multicol para poder usar la instrucción multicols.

Codigo del documento:

\documentclass[11pt]{article}

\usepackage[utf8]{inputenc} % para usar ñ y acentos en Linux

                            % cambie por latin1 en Windows
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{multicol}

\begin{document}

\begin{center}
\textbf{Datos Generales}
\end{center}

\begin{multicols}{2}

\begin{itemize}
% Primero ponemos los nombres de los campos
\item[] Nombre.
\item[] Fecha de Nacimiento.
\item[] Estado Civil.
\item[] Domicilio Particular.
\item[] Teléfono.
\item[] E-mail.
% Y ya pasando de la mitad ponemos el valor de cada campo
\item[] Juan Camaney.
\item[] 1 de Enero 1999.
\item[] Soltero.
\item[] Avenida Siempre Viva \#123.
\item[] 12-34-56-7
\item[] noreply@xmail.com.im
\end{itemize}

\end{multicols}

\end{document}



miércoles, 27 de junio de 2012

Buscando empleo

Eso es lo que he estado haciendo últimamente, y esta fue la mejor forma de explicarlo que se me ocurrió :P

Buscando Empleo.

sábado, 16 de junio de 2012

Matrices en LaTeX

Cuando se realizan documentos relacionados con álgebra es muy posible que se necesite mostrar algún conjunto de valores en forma de matrices, no sera ninguna sorpresa que LaTeX incluya funciones y entornos para desplegar matrices.

Uno de esos es bmatrix el cual es un entorno que despliega los datos en el formato mas usual, encerrando los datos entre dos corchetes que toman el tamaño adecuado, esta sera la que se detallara en esta entrada.

Preparativos.

Antes de usar esta función es necesario realizar dos pasos, con el fin de tener la función disponibles y habilitar el entorno en el cual puede utilizarse.

Para lograr lo primero, tener disponible la función, debe de indicarse que se usara el paquete amsmath, esto se logra con la instrucción \usepackage{amsmath} la cual le indica al compilador que se desean utilizar las funciones definidas en dicho paquete.

Una vez que desee desplegar una matriz en el documento debe recordar hacerlo dentro de el entorno equation* el cual no solo le permitirá utilizar los comandos y entornos matemáticos de LaTeX a la vez que posicionara la ecuación de modo que no interrumpa el flujo del texto, este entorno se declara con la instrucción \begin{equation*} y abarca todas las instruciones hasta llegar a \end{equation*}.

Uso del entorno bmatrix.

Generar una matriz con el entorno bmatrix es muy similar al modo en que se generan las tablas con el entorno tabular, en ambos casos el final de un elemento y el comienzo del siguiente se delimita con el caracter & y el salto de linea se indica con \\, el siguiente codigo lo muestra

\begin{bmatrix}
t_{11} & t_{12} & t_{13} & t_{14} \\
t_{21} & t_{22} & t_{23} & t_{24} \\
t_{31} & t_{32} & t_{33} & t_{34}
\end{bmatrix}

Este código genera una matriz de 4x3 compuesta por elementos tnm ,como puede observarse la delimitación entre los elementos es el caracter &, con excepción del ultimo de la fila, el cual usa el salto de linea como delimitación.

Ejemplo
Para concluir se presenta un ejemplo, mostrando todo el codigo del documento, este genera el documento mostrado en la Figura 1:

Figura 1: Documento Ejemplo.


\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{amsmath} % Este paquete define bmatrix

\begin{document}

Ejemplo de un conjunto de matrices, para poder hacer uso de la instruccion \emph{ \textbackslash bmatrix} es necesario incluir el paquete \emph{amsmath}.

\begin{equation*} % Entorno desde el cual pueden usarse los entornos y funciones matematicas
\begin{bmatrix} % El entorno bmatrix puede generar vectores tambien, en ese caso uno de 1 x 3
u w'\\
v w'\\
w'
\end{bmatrix}
=
\begin{bmatrix} % O matrices como esta de 4 x 3
t_{11} & t_{12} & t_{13} & t_{14} \\
t_{21} & t_{22} & t_{23} & t_{24} \\
t_{31} & t_{32} & t_{33} & t_{34}
\end{bmatrix}
\begin{bmatrix}
x \\
y \\
z \\
w
\end{bmatrix}
\end{equation*}


\begin{thebibliography}{9}
\bibitem{matriz1}
  La Plaga de Tux,
  \emph{LaTeX: Ecuaciones con matrices},
  http://plagatux.es/2008/11/latex-ecuaciones-con-matrices \\
  12 de noviembre de 2008.
 
\end{thebibliography}

\end{document}

Referencias:

La Plaga Tux: LaTeX: Ecuaciones con matrices

miércoles, 6 de junio de 2012

Visualizando el Modelo OSI

Uno de los primeros temas teóricos que suelen verse al principio de los cursos de redes es el modelo con el cual se han estructurado las transmisiones en una red de datos, y que describe las diferentes capas que componen la red y la función que realizan, este modelo es conocido como el Modelo OSI.

Figura 1: Modelo OSI.
Si bien en mis cursos de redes la importancia de dicho modelo siempre fue mencionada y todos los libros de redes que leí siempre tomaban su tiempo en describir su estructura y razones de ser, temo decir que fue hasta hace poco que pude comprender realmente su funcionamiento y mas importante aun, la razón de ser de varias de las capas en si.

Esto podría parecer extraño (mas en un blog que durante meses no hablo de otra cosa), sin embargo si solo se ve tal como esta en los libros un par de detalles del modelo OSI lucen en extremo redundantes.

Tener dos capas (o niveles en la Figura 1) dedicadas al direccionamiento suena redundante y la capa de Transporte parece no estar bien definida, después de todo esas tres capas parecen quedar en lo que hace el protocolo TCP/IP y eso sin mencionar las capas de Sesión, Presentación y Aplicación que no parecen tener protocolo que las cubra, ¿O no?

Pues no, esas valerosas afirmaciones sobre el protocolo TCP/IP y las capas superiores del modelo se basan en suposiciones *erradas* de como funciona una red, ciertamente tienen cierta lógica tras de si y algunas nomenclaturas parecen darles valides esto sin mencionar que los componentes de una red se diseñaron para ser transparentes al usuario, es obvio que no son visibles para el usuario final.

Sin embargo existen herramientas que nos permiten examinar a mas detalle lo que ocurre dentro de una red, de modo que podamos ver no solo los datos que se deseaban emitir, si no también los datos y parámetros usados y generados por cada etapa de la transmisión, es al examinar estos que las razones de la estructura del modelo OSI quedan claras.Una de estas herramientas es el analizador de paquetes de red.

Una muestra de esto puede verse en la figura 2, en la cual se capturo un paquete de una transferencia HTTP y las diferentes secciones mostradas en Wireshark se conectaron con su capa correspondiente del modelo OSI.

Figura 2: Correspondencia con el Modelo OSI.
De este modo es mas sencillo visualizar la función de cada capa,y varias de las "valerosas afirmaciones" empiezan a lucir menos como el resultado de aplicar lógica y mas como el resultado de sobre simplificaciones de como funciona una red.

Como ultimo, y para dejar en claro los detalles que no muestra del todo, se enlistara a que capa corresponde cada uno de los protocolos mostrados en la Figura 2 y una breve explicara en que forma su función corresponde a la capa que se indica.

Antes de hacer esto hay que indicar que si bien Wireshark si muestra algo que podría corresponderse con la capa física, esto no es del todo correcto, puesto que la capa física no se indica por las tramas emitidas, si no por frecuencias y voltajes eléctricos y es mas fácil de visualizar con un osciloscopio

  • Ethernet - Capa de enlace de datos: La función de Ethernet es proporcionar los mecanismos para el direccionamiento *físico* manejando a nivel tarjeta de red a donde deben de enviarse los paquetes.
  • Internet Protocol - Capa de red: Maneja como se direcionan los paquetes a nivel software, permitiendo cambiar el hardware sin modificar el sistema en si.
  • Transfer Control Protocol - Capa de Transporte: Permite las transferencias orientadas a conexión y la fiabilidad del sistema.
  • Capa de aplicación - HTTP: En esta capa están los protocolos que ya cumplen una función y envían datos que son usados o solicitados por aplicaciones.


domingo, 27 de mayo de 2012

martes, 22 de mayo de 2012

LaTeX, el entorno Tabular: Ilustrado

Un comic detallando la generación de tablas en LaTeX por medio del entorno tabular, los comandos utilizados y el formato de estos, a la vez que se muestra un ejemplo sencillo.

Espero que sea lo mas claro posible a pesar de la tal vez excesiva cantidad de texto que se necesito.

El entorno tabular Ilustrado

En entradas posteriores se tratara el entorno table y el comando multicolum.


lunes, 14 de mayo de 2012

Puro Ocio

A falta de algo mejor que hacer, esto es lo que he estado haciendo.

Puro Ocio.

El proximo ya sera algo mas didactico.

viernes, 11 de mayo de 2012

La presentación de una tesis - Comic autobiográfico

Como continuación de la estrada anterior, aqui estan los pasos que siguieron a la entrega del borrador final de la tesis, tramites, sinodales, correciones a ultima hora y mas.

Presentando la Tesis



sábado, 5 de mayo de 2012

La realización de una tesis - Comic autobiográfico

El recién terminar mi tesis de licenciatura me hizo recordar todo lo que tuve que hacer durante su realización.

No solo de investigación (lo que esta cubierto en las entradas anteriores de este blog) sino en cuanto a tramites, revisiones y mas importante aun manejar el tiempo.

Una idea de como fue el proceso puede verse a continuación.

Comenzando la Tesis.
Esto cubre hasta obtener un borrador aprobado por el asesor de Tesis, lo cual no es el punto donde termina la historia, lo que siguió se vera en la siguiente entrada.


lunes, 30 de abril de 2012

Pretenciones artisticas: Intentando un nuevo formato

Las entradas sobre las tablas me han hecho notar lo obtuso que pueden ser algunas de las funciones de LaTeX.

Por tanto, tras (medio) leer un libro sobre el tema [1] he decidido intentar hacer algunas entradas con formato de cómic, con la esperanza que el aspecto visual haga mas sencilla la comprensión de algunos temas.

Y para empezar con el pie derecho aquí esta el debut del que sera el personaje principal, siendo este un blog lo lógico es que sea un gato de caricatura (con pretensiones de saber informática), al que he nombrado Hash o #, que aquí esta.

Hash 01: La razón de ser.


Referencias:

[1] - Will Eisner - Comics and Sequential Art.


miércoles, 25 de abril de 2012

Redimensionar Tablas en LaTeX

Como se menciono anteriormente al realizar tablas en LaTeX es necesario vigilar manualmente el grosor de la tabla para evitar que la tabla sea mas ancha que la pagina y se "corte".

Sin embargo existe una sencilla para prevenir esos casos, a la vez que le da a la tabla una apariencia mas procesional, el comando \resizebox.

Este comando toma como argumento el ancho que deseamos tenga la tabla y la escala adecuadamente cambiando el tamaño de letra y grosor de las lineas, logrando que la tabla solo tenga el ancho indicado.

Para poder hacer uso de este comando es necesario incluir el paquete graphicx que viene incluido en la instalación por defecto tanto de Tex Live como de MikTeX.

El formato de este comando es el siguiente:

\resizebox{<ancho_deseado>}{!} {

<entorno tabular que se desea escalar>

}

Es muy importante poner las llaves ya que estas delimitan donde tendrá efecto el comando.

Ahora se presentara un pequeño ejemplo con el fin de ilustrar el efecto del comando

Para esto en un documento LaTeX que contenga las declaraciones necesarias (\documentclass , \begin{document}, etc) agrege este codigo

\begin{table}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

El cual generara una tabla como la mostrara el la figura 1

Figura 1: Tabla sin redimensionar.
Notara que la tabla queda "cortada" por el borde de la pagina y parte del contenido queda fuera vista.

Ahora remplace el codigo de la tabla por este:

\begin{table}
\centering
\resizebox{10cm}{!} {
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

Y recompile el documento, el resultado ahora lucirá como la Figura 2
Figura 2: Tabla redimensionada.

Ahora la tabla cabe perfectamente en la pagina y su contenido es perfectamente visible.

sábado, 21 de abril de 2012

Tablas en LaTeX

Pese a todas sus ventajas y su flexibilidad, hay un aspecto en particular de LaTeX que me a resultado confuso, difícil de usar y en momentos excesivamente rebuscado, esto es la generación de tablas.

Esto es mas que nada por el tener que manejar y vigilar manualmente cosas como el grosor de la tabla con respecto a la pagina, aspecto que si no se vigila puede causar que la tabla se "corte" al extenderse mas halla de la hoja.

Sin embargo, ya que es casi imposible hacer un documento de investigación sin tener que presentar datos tabulares en algún momento es conveniente realizar un pequeño tutorial que cubra al menos las características que requerí al escribir mi tesis de licenciatura.

El entorno Tabular

Para realizar las tablas en LaTeX es necesario acceder al entorno "tabular" para hacer esto basta utilizar los comandos \begin{tabular}{<opciones>} y \end{tabular} estos delimitan los comandos que generaran la tabla.

Notara que al comando \begin{tabular} se le pueden pasar opciones, estas no son opcionales puesto que indican el numero de columnas que tendrá la tabla, el formato es relativamente sencillo para cada columna que se desee utilizar se coloca una letra que indica como se posicionara el texto (centrado, ubicado a la derecha o a la izquierda), su se desea que halla lineas que delimiten las columnas se indican con caracteres |.

Una vez que a hecho esto puede proseguir a ingresar los datos, esto sigue un sencillo formato de la forma

<dato> &

donde el carácter & delimita la columna, solo recuerde no excederse del numero de columnas definido.

Al acabar esa columna escriba el carácter \\ para saltar a la siguiente, si además desea una linea dividiendo las filas utilice el comando \hline.

Como es esto no podría ser mas obtuso, abstracto y antagonista al usuario se presenta un pequeño ejemplo, en el cual se desea hacer una tabla con nueve columnas que tengan centrado el texto con excepción de la primera.

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}


Ahora podría presentarse el caso en que desee que una celda abarque varias columnas para hacer esto se usa la instrucción

\multicolumn{<numero de celdas>}{<contenido>}

Esta es un poco mas clara que las anteriores, con numero de celdas indicando cuantas celdas se desea abarcar y contenido se explica solo.

El entorno table

Si utilizara el entorno tabular directamente en un documento encontrara una serie de dificultades las cuales son

  1. La tabla aparece justo donde se le llamo, interrumpiendo el flujo de texto sin ningún tipo de margen.
  2. Si se llega al final de la pagina la tabla se "corta" quedando una parte en una pagina y el resto en otra.
  3. No se puede colocar un texto descriptivo o caption.
  4. No se numera automáticamente.
  5. No hay forma de hace referencia a dicha tabla desde otro punto del documento.
  6. No aparecerá en la lista de tablas generada por el comando \listoftables
Estas no son dificultades menores ya que afectan la presentación del documento de forma grave y dificultan consultar la tabla de manera eficiente, sin embargo hay una solución sencilla a esto, el entorno table.

Mediante el uso de este se le indica al compilador que debe tratar a la tabla de forma diferente al texto, ubicándola de modo que no interrumpa el flujo del texto y tampoco sea cortada por el cambio de pagina, a su vez que permite agregar texto descriptivo, etiquetas de referencia y llevar la numeración de la tabla de forma automática

El uso de este es muy simple, como muestra el ejemplo a continuación:

\begin{table}

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}

\caption{Trama Ethernet.}
\label{c2_estructura_ethernet}
\end{table}

Notara que los unicos cambios fue agregar las instruciones \begin{table}, \caption, \label y \end{table}

donde \caption contiene el texto descriptivo y  \label la etiqueta identificadora, con esto LaTeX posicionara y numerara la tabla de forma correcta.

Ya para terminar se presenta un ejemplo completo de lo presentado aquí, solo copielo a un archivo .tex y compilelo, le dará como resultado las tablas y lista de figuras mostradas en las siguientes imágenes

Figura 1: Entorno tabular solo

Figura 2: Entorno table

Figura 3: Multicolumn

Figura 4: Lista de tablas.


Ejemplo

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{hyperref}

\begin{document}

Ejemplo de una tabla sencilla

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}

Notara que no se le coloco ningun tipo de texto descriptivo y que carece de numeración, a la vez que queda justo en el
flujo de texto, lo cual puede resultar incomodo de leer, a su vez esta tabla no aparecera en la lista de tablas al final
del documento y no hay forma de referenciarla desde otro punto del documento.


\newpage

Misma tabla sencilla, utilizando el entorno \emph{table}

\begin{table}
%\centering
\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}
\caption{Trama Ethernet.}
\label{c2_estructura_ethernet}
\end{table}

Al usar el entorno \emph{table} fue posible agregar las instruciones \emph{caption}, la cual agrega un texto descriptivo a la tabla
y \emph{label} la cual nos permite referenciar la tabla con usar la instrucción \emph{ref}, como se ve aqui \ref{c2_estructura_ethernet}

Notara que la tabla tambien se posiciono automaticamente de modo que no corte el flujo del texto.

\newpage

En el caso que se desee que una de las celdas de la tabla abarque mas comunas, esto se puede lograr por medio del comando
\emph{multicolum} este toma como argumento cuantas columnas abarcara la celda, como se ubicara el texto y el contenido, un ejemplo
de esto se ve en la Tabla \ref{c2_tabla_cabecera_wifi}.


\begin{table}
\centering
\begin{tabular}{|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|c|}
\hline
\multicolumn{7}{|c|}{Cabecera MAC} & & \\ \hline
2 bytes & 2 bytes & 6 bytes & 6 bytes & 6 bytes & 2 bytes & 6 bytes & 0-2312 bytes & 4 bytes \\ \hline
Frame Control & Duration ID & Address 1 & Address 2 & Address 3 & Secuence Control & Address 4 & Frame Body & CRC \\ \hline
\end{tabular}

\caption{Trama IEEE 802.11.}
\label{c2_tabla_cabecera_wifi}
\end{table}


\newpage

Siempre que las tablas se realizen con el entorno \emph{table} podra listarlas con solo usar el comando \emph{listoftables}
\listoftables

\end{document}




jueves, 5 de abril de 2012

Uso basico de Beamer

Como se menciono en la entrada anterior el paquete Beamer permite realizar presentaciones de diapositivas en LaTeX, ahora pues se mostrara el uso básico de dicho paquete.


Para comenzar se detallaran los paquetes que se deben incluir para generar la diapositiva, en todo caso los paquetes a incluir se indican con la instrucción \usepackage, estos son:

beamer: El paquete principal, contiene las funciones que generan las diapositivas.

utf8 o latin1: Para poder escribir directamente los acentos y ñ en sistemas Linux o Windows respectivamente.

babel: Con la opción spanish, con esto los texto generados por LaTeX (Figura, Bibliografía, etc) aparecerán en Español

hyperref: Habilita los enlaces en el documento, de modo que al dar click en un numero de referencia, lo lleve a dicha referencia.

Generación de las Diapositivas

La estructura de presentación es muy sencilla, cada diapositiva esta delimitada por  \begin{frame} y \end{frame} y mostrara lo contenido entre esas instrucciones.

Usando ese par de instrucciones puede generar tantas diapositivas como desee y en las que es posible utilizar todas las funciones disponibles en LaTeX.

Observaciones 
Si ha colocado imágenes en LaTeX, seguramente se habrá encontrado con el problema causado por imágenes demasiado grandes, que quedan "cortadas" si son mas grandes que la hoja en la que aparecen, ese problema también esta presente al hacer presentaciones, por lo que debe de tomarlo en cuenta y escalar las imágenes de modo que quepan en la diapositiva.

Otra observación es la cantidad de renglones de texto que puede poner tampoco es ilimitada, es aproximada mente de 17, tras lo cual el texto se corta.


Ejemplo.
Para concluir se presentara un ejemplo que incluye algunas de las posibilidades, que pueden realizarse, con el fin de mantener el código lo mas sencillo posible no se aplica ningún tema a la diapositiva

\documentclass{beamer}
\usepackage[utf8]{inputenc} % remplace utf8 con latin1
                            % si va a compilar en un sistema
                            % Windows
\usepackage{hyperref}
\usepackage[spanish]{babel}

% Agregamos información del autor y titulo

\title{Ejemplo en Beamer}
\author{David Raygoza Gómez}
\date{6 de Abril del 2012}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\begin{frame}
Este es un ejemplo basico en beamer, el paquete para generar presentaciones en \LaTeX
\end{frame}

\begin{frame}
    Las instruciones \emph{    \textbackslash begin\{frame\} } y \emph{\textbackslash  end\{frame\}} delimitan lo que aparecera en una diapositiva
\end{frame}

\begin{frame}
  
Podemos poner Figuras
  
\begin{figure}
\includegraphics[scale=0.1]{c1-inicio}
\caption{Interfaz}
\label{img_1}
\end{figure}

Teniendo cuidado de que sean del tamaño adecuado
  
\end{frame}

\begin{frame}
Listas
  
\begin{enumerate}
\item Elemento 1
\item Elemento 2
\item Elemento 3
\end{enumerate}
  
\end{frame}

\begin{frame}
\begin{center}
Tambien pueden centrarse elementos
\end{center}
Y referencias figuras, como la Figura \ref{img_1}
\end{frame}

\end{document}

Antes de compilar recuerde cambiar el nombre de la imagen (en la instrucción \includegraphics[scale=0.1]{c1-inicio} ) de c1-inicio al nombre de alguna imagen que tenga en ese mismo directorio

lunes, 2 de abril de 2012

Beamer: Generar presentaciones en LaTeX

Después de la redacción de un documento de investigación el paso siguiente suele ser presentar las ideas de este frente a una audiencia.

La forma mas común de hacer esto es por medio de una presentación que se proyecta con un cañón y que normalmente se presenta como una serie de diapositivas, dado que esta se a convertido en la forma usual de presentar los resultados de una investigación, no es de extrañar que existan paquetes para LaTeX que nos permitan generar dichas presentaciones.

Uno de estos paquetes es Beamer, con el cual es posible generar diapositivas con facilidad y accediendo a las opciones y flexibilidad que el LaTeX proporciona.

Siguiendo el espíritu que han tenido las entradas sobre LaTeX hasta este punto comenzaremos pues con su instalación la cual es bastante simple tanto en sistemas Linux como en Windows.

Para el caso de los sistemas Linux, como lo son Fedora y Ubuntu basta con instalar Tex Live, puesto que este entorno ya incluye Beamer por defecto (Para ver la instalación en la distribución Fedora puede consultar la siguiente entrada en este blog Instalando LaTex en Fedora Linux.  )

En el caso de los sistemas Windows usando MikTex es cuestión de instalarlo desde el manejador de  paquetes del programa, un enlace de como realizar este proceso y que hacer si el paquete no aparece en el manejador se encuentra en la sección de referencias [2]

Si bien los detalles y peculiaridades del uso de Beamer serán el tema de futuras entradas, considero adecuado mostrar un ejemplo sencillo, como con los ejemplos anteriores copie el siguiente texto y compilelo.

\documentclass{beamer}
\usepackage[utf8]{inputenc} % remplace utf8 con latin1

                            % si va a compilar en un sistema
                            % Windows
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}

% Agregamos información del autor y titulo

\title{Ejemplo en Beamer}
\author{David Raygoza Gómez}
\date{3 de Abril del 2012}

%Definimos la apariencia de las presentaciones
\usetheme{PaloAlto}
\usecolortheme{default}
\setbeamercovered{transparent}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\begin{frame}
Este es un ejemplo basico en beamer, el paquete para generar presentaciones en \LaTeX
\end{frame}

\end{document}


Una ves que compile el documento (y que no halla habido errores) obtendrá dos diapositivas que lucirán con las figuras 1 y 2

Figura 1: Portada
Figura 2: Pagina 1


Referencias
[1] Presentaciones en Latex – Beamer
[2] LaTeX beamer

viernes, 9 de marzo de 2012

Caracteres reservados de LaTeX

Así como los lenguajes de programación LaTeX posee un conjunto de símbolos que usa como instrucciones para procesar el texto, usualmente las instrucciones se reconocen con facilidad, puesto que la mayoría comienza con el carácter \.

En embargo también existen caracteres a los cuales se les da un significado especifico, esto no parecería demasiado problema, hasta que se esta compilando un documento y aparecen errores extraños, los cuales terminan siendo provocados por un solo carácter, el cual el compilador intenta interpretar.

Antes de proceder tal vez sea corrector explicar que significa "escapar" un carácter, en este contexto "escapar" un carácter es el modo de indicarle a LaTeX  que deseamos mostrar ese carácter y que no debe de interpretarlo como una instrucción.

Dado que los mensajes de error suelen ser un poco vagos al respecto, y que es muy fácil olvidar "escapar" el carácter se presentaran aquí no solo una lista de caracteres reservados, si no ademas el como "escaparlos" y que mensaje de error es mostrado si no se hace esto.

La lista de caracteres reservados puede verse al compilar el siguiente código, solo cópielo a un archivo y compilelo.

Codigo Ejemplo


\documentclass{article}
% Si esta compilando en un entorno Windows remplaze la siguiente
% linea con \usepackage[latin1]{inputenc}
\usepackage[utf8]{inputenc}


\begin{document}


El codigo de este documento muestra como mostrar los caracteres reservados en \LaTeX


\begin{itemize}
\item \#
\item \$
\item \%
\item \^{}
\item \_
\item \&
\item \{
\item \}
\item \textasciitilde
\item \textbackslash

\item $<$ $>$
\item $[$ $]$

\end{itemize}


\end{document}


Este código, ya compilado le generara el documento mostrado en la Figura 1

Figura 1: Caracteres reservados.



Como puede observar en la Figura 1,  los caracteres reservados son, sin ningún orden en particular: #, $, %, ^, &, {, }, ~, [, ], <, >, _ y \

Ahora que los conoce, tal vez se pregunte ¿Como muestro esos caracteres en un documento?, después de todo el símbolo de porcentaje, el de dinero, el ampersand, los dignos de mayor que y menor que y la diagonal inversa son caracteres que aparecen de manera regular en varios tipos de documentos, para esto a continuación se presenta no solo como "escapar" esos caracteres, algo que seguro ya abra intuido de ver el código ejemplo, si no ademas que error marca el compilador si los escribe directamente, esto ultimo tal vez varié un poco dependiendo del compilador, para este ejemplo se esta usando el entorno LaTeX Tex Live.


Carácter #
Para escapar el numeral, usualmente conocido como "gato", basta con colocar una diagonal inversa antes del símbolo, de esta manera \#.

En caso que halla olvidado hacerlo el compilador le regresara un mensaje de error similar a este:

! You can't use `macro parameter character #' in vertical mode.
<recently read> ##

Carácter $
El símbolo de dinero es un caso curioso en el LaTeX, puesto que es usado para escapar otros signos, como puede ver en el ejemplo, si desea utilizarlo coloque una diagonal inversa antes de el, de modo que quede \$.

Este carácter en particular es utilizado por LaTeX para indicar que partes del texto deben de ser interpretadas como matematicas, por lo que si no es escapado adecuadamente obtendrá un error similar a este:
! LaTeX Error: Command \item invalid in math mode.

Carácter %
El porcentaje es usado por LaTeX para demarcar los comentarios, por lo que el compilador ignorara todo lo que quede de la linea donde se coloque ese carácter, por fortuna si esta usando un entorno con coloreado de sintaxis esto sera fácil de detectar, ya que cambiara el color de texto del resto de la linea.
Para que este carácter sea mostrado basta con colocar la diagonal inversa precediendolo \%

En caso de no estar usando un entorno con coloreado de sintaxis debe de tener mucho cuidado con este carácter, ya que es posible que el documento compile, pero halla lineas que no se muestran

Carácter ^
El acento circunflejo, conocido en mis clases de programación como "gorrito", es usando para indicar superindices, un ejemplo de estos son los números y signos de las potencias, en LaTeX, en el caso que desee usar ese símbolo puede escaparlo con la secuencia \^{} , es muy importante poner las llaves, de lo contrario se generara un error.

El error obtenido si no se escapa el carácter es el siguiente:
! Missing $ inserted.
<inserted text> 

Caracter &
El entorno tabular hace uso extensivo de este simbolo, por lo que si se coloca fuera de este LaTeX indicara un error, para mostrarlo sin generar errores use, de nuevo, la diagonal inversa de este modo \&.

De no hacerlo obtendra un mensaje de error al momento de compilar, el cual sera similar a este
Misplaced alignment tab character &.

Caracteres { }
Si bien el documento de ejemplo los lista separados estos dos caracteres en conjunto cumplen una función muy importante ya que indican los argumentos de las instrucciones por lo que no escaparlos debidamente generara desde mensajes de error a mal interpretaciones del código, para escaparlos use las secuencias \{ y \}.

En el caso de no escaparlos los mensajes de error mostrados seran, respectivamente para { y }
Missing } inserted y  Extra }, or forgotten \endgroup

Carácter ~
La tilde puede mostrarse con el comando \texasciitilde, de intentar colocarla directamente es posible que no se muestre en el documento compilado

Caracteres <, >, [ y ]
Estos cuatro caracteres se escapan de la misma manera, colocandolos entre dos $ de esta manera $<$, $>$, $[$, $]$, en el caso de no hacerlo se mostraran caracteres incorrectos en el documento compilado.

Carácter _
El subindice es usado en LaTeX para indicar que caracteres aparecerán en el subindice (los números similares a las potencias, pero en la parte inferior de una letra o numero), para mostrar este carácter en un documento se usa la diagonal inversa de este modo \_

Mensaje de error si no se escapa adecuadamente
Missing $ inserted.

Carácter \
Habra notado que casi todos los caracteres pueden escaparse con el uso de la diagonal inversa, por lo que no sera ninguna sorpresa que sea un caracter reservado, para mostrarlo use la instrucción \textbackslash


En el caso de no escapar el carácter hay dos posibilidades, si la diagonal inversa esta sola, el LaTeX no la mostrara en el documento compilado, pero si esta junto a otra palabra, ie \palabra, el compilador mandara un error de instrucción no conocida




miércoles, 29 de febrero de 2012

Simulación y Detección de un ataque.

Una de las posibilidades de la captura y analisis de paquetes proporcionados por Wireshark es la habilidad de detectar si provienen de una fuente maliciosa, con lo cual las acciones acordes pueden tomarse para mitigar los efectos.

Para desmostrar esto se propone una sencilla simulación en la cual dos computadoras atacaran a una tercera y es ataque sera visualizado en Wireshark.

Requerimientos.
Para llevar a cabo este experimento sera necesario contar con lo siguiente:
  • Tres computadoras conectadas en red.
  • Las direcciones IP de las computadoras.
  • Wireshark instalado en al menos uno de los equipos.
  • Ping disponible en al menos dos de los equipos.
Para conseguir las direcciones IP de los equipos basta consultar las propiedades de la conexión , las cuales son accesibles desde el panel de control en los sistemas Microsoft Windows o por medio del comando ipconfig, ambos le entregaran la dirección IP del equipo, asegúrese de anotarlas.


Procedimiento.

Una vez que las tres computadoras esten conectadas en linea y la maquina victima reciba y responga a los ping enviados arranque Wireshark en la maquina victima y comienze a capturar paquetes, durante esto ponga atencion a la columna tipo, ya que asi podra saber cuales son los protocolos que comunmente arriban, un ejemplo de como se ve el trafico normal puede  observarse en la Figura 1 donde se que si bien los paquetes ARP son comunes tambien hay paquetes de otros protocolos y hay varios microsegundos entre los paquetes.

Figura 1: Trafico Normal.
Ahora que a tiene una vista del trafico usual de la red es el momento de comenzar la simulación del ataque, para hacer esto ingrese el siguiente comando en las maquinas atacantes

ping -t ip-victima

Este comando comenzara a enviar solicitudes de respuesta de forma continua a la dirección IP indicada mismos que seran respondios por el receptor.



Esto puede observarse desde Wireshark, si comienza o ya esta capturando paquetes al momento en que el ataque comienze obtendra una pantalla similar a la Figura 2



Figura 2: Paquetes ICMP.
Como podra observar ahora esta presente una gran cantidad de paquetes \emph{ICMP}, los cuales se visualizan mejor aplicando el filtro de visualizacion del mismo nombre, en estos paquetes pueden observarse una serie de caracteristicas particulares.

Primero que hay paquetes generados tanto por el atacante, los cuales estan descritos como Echo (ping) request en el campo Info, asi como paquetes generados por la maquina victima identificados como Echo (ping) reply, por lo que en efecto el responder a los las solicitudes de ping consume recursos de la maquina victima.


Observaciones
Al comezar este experimento se observo un problema con el comando ping, pese a tener las direcciones IP de todas las computadoras utilizadas y verificar la conexión, el ping siempre regresaba el mensaje 100% packet loss esto se debio a que los sistemas utilizados, Microsoft Windows XP y Microsoft Windows 7 tienen habilitado el cortafuegos por defecto, por lo que, para realizar el experimento, fue necesario deshabilitarlo en la maquina victima.