Mensajeria para elhacker.net

Iniciado por D4RIO, 19 Febrero 2008, 00:13 AM

0 Miembros y 1 Visitante están viendo este tema.

D4RIO

Ya es un tema ampliamente discutido el de un canal de IRC para elhacker.net, y aclaro que estoy desinformado acerca de si se ha llegado o no a una conclusion en ese sentido. Pero vengo proponiendo un nuevo proyecto que se que les va a interesar...
En este ultimo tiempo estudie el protocolo de la red MSN y pase algo de tiempo haciendo pruevas para crear una nueva red de mensajeria instantanea sobre la que tengamos un control total.
Estoy diseñando unas primeras bases a fuerza de PERL, y solucionando algunos problemas de protocolo.

Se que todos en éste sitio se sentiran atraidos a la experiencia de crear una nueva red de mensajeria en la que podmos trabajar a gusto. Mi idea es experimentar nuevas tecnologías que permitan una cifrado rápida, seleccion de múltiples protocolos, descentralizacion de la red, etcétera.

Por supuesto, no pretendo desarrollar tal empresa en un hilo del foro... sería imposible... pero si hay suficientes voluntarios haremos lo posible paraque el proyecto se realice.

Es hora de despertar ese espiritu h4ck3r y explorar!!  :xD :xD
OpenBSDFreeBSD

The Shadow

ps ... es una excelente idea! .... pienso q deberias comenzar la organizacion de las partes del proyecto para ir atraiedo a la gente segun lo que se necesite.

Saludos!




D4RIO

Por ahora estoy mejorando los scripts y el protocolo... En cuanto tenga algo más sólido lo posteo. Por ahora les bastará saber que uso IO::Socket, así que deberían manejarlo... es muy simple.
Por ahora el protocolo es simple, la primer fase es similar al protocolo de MSN, con un servidor de notificación.

Como en PERL es necesario sacar los carácteres de fin de línea uso una función que determina si la transferencia del usuario es con uno o dos carácteres de fin de línea (diferencia que noté entre telnet y netcat). Así la primer fase del protocolo es recibir una cadena específica (aun no decidi cual será) y pasarla a esa función, que básicamente hace ésto, poniendo a CADENA_ESPERADA como la cadena que esperamos recibir, y CADENA es la cadena recibida:

$DOBLE_CARACTER=0;
quitar ultimo caracter de $CADENA;
si $CADENA es distinta a $CADENA_ESPERADA hacer;
        quitar ultimo caracter de $CADENA;
        $DOBLE_CARACTER=1;
fin si;
si $CADENA es distinta a $CADENA_ESPERADA hacer;
        $INTERNAL_FATAL_ERROR="Se recibio una cadena falsa, se esperaba $CADENA_ESPERADA";
fin si


Asi, si se envia una cadena que aun sin los dos ultimos caracteres es distinta a la esperada, sabemos que es una cadena fuera del protocolo, y cerramos la conexion.
Sino, el protocolo sigue adelante y pide el NickName y el PassWord, que serán tratados conforme a lo que el paso anterior detectó.

Ahora carga, a partir de un fichero de texto, un arrays con los NickNames y los PassWords (se guarda un fingerprint del password para no comprometer la seguridad)... los protocolos de seguridad se verán luego. La lista está ordenada para que la búsqueda por el método binario sea posible (La lista solo se debe modificar en caso de añadirse o quitarse un usuario, asique se escribe ordenada y asi permite que la busqueda use éste método)

Para los que no sepan lo que es la busuqeda por metodo binario, prefiero llamarla búsqueda por divisiónes múltiples. Omite la lectura se todos los elementos (que podrían ser demasiados) leyendo solo unos pocos. Si buscamos el elemento "Nico" en un array de 1000 elementos, tomamos el elemento 500 (1000/2) y lo comparamos. Si ese elemento es "Ramiro" es evidente que nos hemos pasado y debemos buscar en la sublista que va de 0 a 499 (el 500 ya lo vimos)... asi se omitieron 500 elementos que habrían sido evaluados de otra forma.
El método se repite hasta dar con el elemento "Nico" o notar que no está.

Si la autenticación es correcta se pasan los datos a otro servidor (o el mismo en otro puerto) y se sigue el protocolo que en otro momento explicaré.

A éste punto el servidor de notificación sólo debe atender algunas operaciónes mientras que la red puede ser descentralizada.

Otro servidor hace las veces de "centinela" buscando servidores caídos y transfiriendo a los usuarios a otro servidor.

Si hay ganas lo hacemos... claro que la organización de algo tan grande requiere:

- Al menos un servidor
- Un equipo organizado trabajando en un proyecto debidamente documentado
- Un método de trabajo

Y necesitaré gente con ganas o me volvería loco llevando la documentación y el proyecto.
OpenBSDFreeBSD

Tughack

Hola D4RIO,

Apoyo la idea a 100%.

Y se usamos algo asi?

http://gogloom.com/Cyanide-x/elhacker/CHAT

Saludos

D4RIO

¬¬ Eso es una página para entrar a un WebChat.... lo que dije al principio de mi post era a modo introducción. Pero si quisiera solamente un canal de IRC habría propuesto crear uno en FreeNode o algo así, que son redes muy grandes y sencillas de usar, pero lo que propongo es crear un servidor de mensajería (y tal vez sus respectivos clientes)... Si te referís a la interfáz web creo que usar Java para ésto es un malgasto de memoria, aunque tal vez a algunos no les importe mientras no deban bajar un programa nuevo. Mi idea del cliente es sin salirme de PERL, usando PerlQt como interfáz. Tal vez en Windows sea sencillo crear un cliente usando AutoIt, o Visual Basic, de los que prefiero AutoIt.

Doy por obvio que se requiere cierto conocimiento de PERL para ésto...  :¬¬
OpenBSDFreeBSD

Tughack

Pues no se, no soy la persona mas indicada para hablar de este asunto. Lo k puedo decir esk muchos foros usan un sistema de chat con java y tienen su canal IRC, y eso lo veo muy bueno y util. Si tu idea es otra, sigue con el tema y suerte con el proyecto.  ;)

Saludos

Flakito81

Mis conocimientos de perl son muy limitados, y no sé si un lenguaje de scripting sería lo  mejor, aun asi ha gustado la propuesta. Desde mi ignorancia pregunto ¿en perl existen punteros? lo digo xq sería más fácil y rápido la gestión de una tabla hash abierta que mantener un vector ordenado cuando es probable nuevas inserciones y borrados.

Intentaré seguir el hilo para ver el avance del proyecto. Un saludo!

D4RIO

El vector se cargaría cada vez que un cliente quiera conectarse... Si cargase el vector y pretendiese manejarlo para añadir y quitar usuarios en tiempo de ejecución debería hacerlo con el mismo programa, corriendo el riesgo de que toda la lista se pierda ante cualquier problema. De ésta forma sólo cargo la lista cuando es necesario permitiendo que otro programa se encargue de los registros.

CitarMis conocimientos de perl son muy limitados, y no sé si un lenguaje de scripting sería lo  mejor

Cuando hablamos de Perl no hablamos de un lenguaje de scripting cualquiera. Perl fue diseñado para éstas tareas, y a diferencia de otros lenguajes de scripting, Perl compila el programa antes de correrlo, y da miles de posibilidades que otros no, como la de crear procesos hijos y manejar conexiones con mucha facilidad.

Como ya dije, todavía trabajo en el protocolo y la manera de hacerlo más flexible, pero en cuanto elabore algo sólido aviso.
OpenBSDFreeBSD