Nov 30 2006

NavarraDotNet: 13 de Diciembre: Primer evento

NavarraDotNet: 13 diciembre txikiSegún se anuncia en el portal del Grupo de Usuarios, han tenido que adelantar el evento previsto un día, pasando a celebrarse el día 13 de diciembre. La agenda y demás no se toca, es más, se amplia, añadiendo… la cena!!

Sí, parece que los de Microsoft se estiran y nos pagan una cenica, que me imagino será tortilla, vino peleon y cosicas de ese estilo (no creo que nos pongan langosta, don perignon y caviar iraní, así que nadie piense en ponerse las botas, más bien en matar el gusanillo).

Si clickeais en la imagen os saldra el cartel en tamaño grande, para que lo pongais en la oficina, instituto, taberna-friki… divúlgalo!

Toda la información sobre este evento la tenéis aquí.

Nov 28 2006

Inferno. 06:- Fingerprinting II

Desde el último post ha pasado mucho tiempo, pero es que la vida del feriante es así, nunca sabes cuándo y dónde vas a tener unos minutos para escribir algo. Continuando con lo anterior seguimos para ver como descubrir los puertos de un servidor.

Escaneo de SYN

Para descubrir los puertos TCP hay que conocer como es el intercambio de mensajes en cada una de las fases de la conexión TCP.

En la fase de establecimiento de la conexión se produce un intercambio de mensajes como este

Emisor —> SYN(X) —> Receptor
Emisor <— SYN(X)+ACK<— Receptor
Emisor —> ACK —> Receptor

En el caso de que el puerto esté cerrado entonces sería una comunicación tal que:

Emisor —> SYN(X) —> Receptor
Emisor <— RST+ACK <— Receptor

El primer tipo de escaneo que se realiza se basa en simplemente agarrar dos bytes y hacer un bucle for i=0 to 65.536 y lanzar contra una ip SYN(i) y esperar a ver que SYN(i)+ACK te devuelve. Esos “i” serán los puertos que estén abiertos.

Esto es como solucionaba un amiguete mío lo de ligar. Hay quien se curraba a una chica durante toda la noche y hay quien iba una a una “¿quieres?”, “¿quieres?” Conclusión. Este método es rápido pero salta todas las alarmas. Los firewalls, tanto de red, como de host, detectan este intento en base a dos parámetros: Peticiones de conexiones consecutivas y número de peticiones por unidad de tiempo. Además, tiempo atrás, esto era una forma de hacer Denegación de Servicio, pues los equipos mantenían las conexiones abiertas (SYN, SYN+ACK, ACK) y las semi-abiertas (SYN,SYN+ACK) en un mismo buffer circular, así que cuando se llenaba se machacaban por el principio las conexiones que ya existían (que recuerdos de juventud). Hoy en día lo más probable será que no se permitan más de x conexiones.

Escaneo de SYN+ACK

En este caso simulamos que somos el servidor y que atendemos a una petición de conexión que nos ha enviado con anterioridad un servidor, para ello se intercambian los siguientes mensajes.

Emisor —> SYN(X)+ACK —> Receptor
Emisor <— RST <— Receptor

Este tipo de comunicación indica que el servidor no está escuchando por el puerto X y le devuelve un mensaje RST porque presupone que es un error. En el caso de que el puerto esté escuchando simplemente piensa que es un error en el paquete por lo que no contesta a la espera de que salte el time-out y el cliente lo reenvíe correctamente.

Emisor —> SYN(X)+ACK –> Receptor
Emisor <— <— Receptor

Los escaners de SYN+ACK lanzan peticiones SYN+ACK y estarán abiertos aquellos que no contesten. Tienen un alto índice de falsos positivos pues los motivos por los que no se conteste a una petición pueden ser muchos y variados, pero es una forma más de descubrir los puertos de un servidor.

Y hasta pronto que seguiremos con más formas de detectar los puertos.

Nov 27 2006

.NET: Poner 3 decimales a una celda del spread

Otra curiosidad del spread, ya que si tienes declarada una celda como double, el muy hijo de perkins te las pone a dos decimales a no ser que le indiques lo contrario, es decir, por defecto (o por la configuración regional, que no me ha dado tiempo a probarlo, pero puede venir de ahí) te los pone a dos decimales, por lo que en vez de declararlo de la siguiente forma:

Me.vasSpread.Sheets(0).Columns(MiColumna).CellType = New FarPoint.Web.Spread.DoubleCellType

Lo que tenemos que hacer es declarar una variable del tipo de celda double y ponerle el número de decimales (DecimalDigits) que quieres:

Dim MiCelda As New FarPoint.Web.Spread.DoubleCellType
MiCelda.DecimalDigits = 3
Me.vasIngre.Sheets(0).Columns(colPorcen).CellType = MiCelda

Nov 27 2006

NavarraDotNet: Primer evento

navarradotnet: cartel eventoTal y como anuncian en el portal de NavarraDotNet, ya está en marcha la celebración del primer evento que correra a cargo de Chema Alonso, bajo el título “Los Programadores y las Seguridad“. El evento será a las 18:30 (entrada libre, aunque hay que registrarse primero) se hará una presentación de la historia y luego Chema nos contará lo que nos tenga que contar. Me imagino que para no perder la costumbre, depues de la charla se saldra de martxa, iujuuu!!!

En este link teneis toda la información sobre este evento así como el cartel del mismo, para que lo imprimáis y lo pongais en la oficina, instituto, universidad,…

Actualización: Debido a causas ajenas al Grupo de Usuarios, el evento se adelanta al 13 de diciembre

Nov 25 2006

Nueve cosas que los programadores prefieren al dinero

Vía la FrikiNews, el blog de un compa del curro (visitarlo, te hechas unas risas!) me llego al mail del curro el siguiente link a un artículo muy, pero que muy interesante, de lectura recomendada y que todos y todas los que estamos en las trincheras, en primersa línea, programando, deberíamos de leer y analizar. El texto es de Rob Walling, y la traducción de picacódigos.

Nov 23 2006

.NET: Sólo números en la celda del Spread Web Forms, please.

Un compañero que acaba de entrar me preguntaba a la mañana una pequeña duda que tenía. La historia es que tiene una celda del spread en la que sólo deben meter caracteres numéricos. Nada más facil, en la definición de esa celda basta con poner lo siguiente:

Me.vasSpread.Sheets(0).Columns(NumeroColumna).CellType = New FarPoint.Web.Spread.IntegerCellType("Sólo números mangarran!")

[!] Si os fijais, hasta tienes la opción de ponerle un mensaje de alerta, jiji.

Si queremos cambiar el diseño del mensaje de error sólo tenemos que crear esta funcion y llamarla desde la definición del mensaje, usease, para que lo entendais os pongo el código:

Primero definimos la función que diseñara dicho mensaje:

private Function FormatearMensaje(ByVal sMensaje As String) As String
Return "<font style='font-size:11px;'>" & sMensaje & "</font>"
End Function

Y luego definimos la celda llamando a dicha función:

Me.vasSpread.Sheets(0).Columns(NumeroColumna).CellType = New FarPoint.Web.Spread.IntegerCellType(FormatearMensaje("Sólo números mangarran!"))

[!] Si os fijais, en este ejemplo sólo le cambiamos el tamaño, pero si podemos cambiarle el tamaño podemos cambiarle el fondo, el tipo de letra, el…

Actualización: Esker anitz SER!!! en vez de span había que poner font para que no coja lo que tiene definido de antemano.

Nov 22 2006

CodeCamp 2006: Técnico-less: El Elefantiásico [Video]

Jode como está el patio, ea ea ea el técnico-less se mosquea! Que a que viene esto? pues muy sencillo, por este post del Pedreño sobre este otro post del Maligno.

Ala, os dejo con este magnifico video (58 seg.), ¡que lo disfruteis! jiji

Nov 21 2006

Curso: Desarrollo en equipo con CVS

Sí, como siempre me pilla el toro, pero más vale tarde que nunca, ¿no? Así que aquí os dejo información de este curso:

Qué: Curso: Desarrollo en equipo con CVS.
Cuándo: jue 23 de nov 15:30 - vie 24 de nov 20:30
Lugar: Plaza Cein, 31110 Noáin
Por: Centros de Excelencia Software de Navarra
Teléfono: 848 42 55 00

Objetivos:

Mostrar las posibilidades de la herramienta CVS como sistema de control de versiones, para utilizarla en equipos de desarrollo de software.
Se presentará la instalación del servidor de manera básica y su configuración, y el uso de la herramienta por parte de los desarrolladores.
El curso mostrará los mecanismos que permite CVS para el desarrollo de software de modo más eficiente posible.

Imparte:

José Ramón Díaz. Ingeniero en Informática por la Universidad del País Vasco y Máster en Administración de Empresas por la UNED. Su experiencia laboral ha estado centrada en desarrollos JAVA en equipos de trabajo multidisciplinares, ejerciendo distintas funciones de programador y analista. Desde el año 2000 ha trabajado en varias empresas, como Retevisión Interactiva (portal eresMas), DSS Reuters, Thomson Aranzadi e Indaba.

Duración:

10 horas (dos sesiones de 5 horas).

Programa:

  • Introducción a CVS
  • Instalación del servidor CVS
    • Repositorio
    • Acceso SSH
    • Acceso mediante pserver
  • Método de trabajo con CVS
    • Versiones, etiquetas y fechas
    • Desarrollo en paralelo
    • Ramas de desarrollo
  • Clientes de CVS
  • Historial de cambios. Logs.
  • Administración de CVS

Información obtenida de aquí

Nov 21 2006

.NET: Uso provechoso del Application_Error del Global.asax

Nuestro compa JLL (esker anitz!) nos manda el siguiente texto para nuestra lectura. El codigo está en C#. Es un pequeño manual de cara a capturar los errores que surjan fuera de los TryCatch:

El evento Application_Error que hay en el archivo Global.asax se dispara cuando salta una excepción en la aplicación ASP.NET y no la hemos cazado en un bloque TryCatch. Usaremos este evento para guardar los datos de la excepción en un archivo de log. Para obtener el objeto excepción, llamamos a la la función Server.GetLastError() que nos da el objeto excepción. Este sería el código que habría que poner en el global.asax para que nos grabara un archivo de log en el directorio /logs de la aplicación (Debe estar creado y tener permisos de escritura):

using System.IO;
using System;
using System.Text;



protected void Application_Error(Object sender, EventArgs e)
{
//Funcion que escribe los detalles de una excepción cuando esta se genera en un log
Exception ex = this.Server.GetLastError().GetBaseException();

StreamWriter L_fichero = new StreamWriter(System.AppDomain.CurrentDomain.BaseDirectory + “/logs/App.log”, true);
L_fichero.WriteLine(”******************”);
L_fichero.WriteLine();
L_fichero.WriteLine(System.DateTime.Now.Hour.ToString() + “:” + System.DateTime.Now.Minute.ToString()+ “:” + System.DateTime.Now.Second.ToString());
L_fichero.WriteLine(”Descripción: ” + ex.Message);
L_fichero.WriteLine(”Origen:” + ex.Source);
L_fichero.WriteLine(”Pila:” + ex.StackTrace);
L_fichero.WriteLine();
L_fichero.WriteLine(”*****************”);
L_fichero.Flush();
L_fichero.Close();
}

Nov 19 2006

Navarradotnet avanza!

El recién creado Grupo de usuarios de .NET de Nafarroa no para. Ya está organizando el primer evento (ya os avisaremos) para el 14 de diciembre. Y el servidor ya ha encontrado casa! Según anuncia hoy el propio portal, EGA Informática se ha ofrecido a acomodar al servidor en su keli. Esker anitz!

También han realizado, a mi entender, un cambio muy importante, como es la nueva definición que aparece hoy en la web:

Navarradotnet se constituye como una asociación independiente, sin ánimo de lucro, de personas interesadas en el software en Navarra.

Nuestro objetivo principal es enseñar, aprender y compartir los conocimientos en tecnologías de desarrollo de software para ser un punto de encuentro de personas, en el que se puedan comentar y tratar tanto aspectos técnicos como de otras índoles, y de esta manera, contribuir que el colectivo informático de la zona esté un poco más unido.

Este grupo de usuarios surge de la ilusión, de las ganas de aprender y enseñar, y de la posibilidad de disponer en Navarra de un grupo de gente con un punto de interés común alrededor del software y, en especial, de la tecnología .NET de Microsoft.

Este grupo de usuarios se plantea a si mismo como un lugar abierto y dinámico donde nuestra comunidad de desarrolladores aprende y comparte conocimientos, creando grupos de trabajo y experimentación de software donde aplicar dichos conocimientos.

Me gusta ese empeño en enseñar y aprender, en definitiva, compartir los conocimientos, un objetivo que compartimos plenamente.

Por cierto, cumple 69 usuarios! Zorionak!! jiji

navarradotnet: 69 usuarios