elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Protocolo MSN en C#
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Protocolo MSN en C#  (Leído 19,985 veces)
Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Protocolo MSN en C#
« en: 3 Junio 2007, 01:28 am »

Aqui les dejo este proyecto....se que el codigo se puede optimizar...pero son la 1:24 am y no hay ganas...xDDD

Lo que hace este codigo es conectarse al MSN mediante el protocolo del MSN:

Descargar/Ver

En principio lo que hace es pedirte tu cuenta, tu pass, conectarse y te enseña el nick tal y como lo tienes tu en el MSN (ya que por defecto te los pasan codificado...e implementado una funcion que lo descodifica).

El codigo es el siguiente:

Código:
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;


namespace ConsoleApplication2
{
    class Program
    {
        static string cuenta;
        static string pass;

        public bool IsNumeric(object epresionje)
        {
            bool isNum;
            double retNum;

            isNum = Double.TryParse(Convert.ToString(epresionje), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
            return isNum;
        }

        public string urldecode(string cadena)
        {
            char p = '%';
            string hexa;
            long dec;
            char asc;
            string resultado = "";

            Program hen = new Program();

            string[] arr = cadena.Split(p);
            foreach (string q in arr)
            {
                if (q.Length > 0)
                {
                    hexa = q.Substring(0, 2);
                    if (hen.IsNumeric(hexa) == true)
                    {
                        dec = Convert.ToInt64(hexa, 16);
                        asc = Convert.ToChar(dec);
                        resultado = resultado + asc + q.Substring(2);
                    }
                    else
                    {
                        resultado = resultado + q;
                    }

                }
            }

            return resultado;

        }

        public string depurarip(string direc)
        {
            string a;
            int b;
            string c;

            a = direc.Substring(9);
            b = a.IndexOf(":");
            c = a.Substring(0, b);
           
            return c;

        }

        public string Sacacookie(string resultado)
        {
            int a;
            string b;
            int c;
            string d;


            a = resultado.IndexOf("'t=");
            b = resultado.Substring(a + 2);
            c = b.IndexOf("'");
            d = b.Substring(1, c);

            return d;
        }





        static void Main(string[] args)
        {

            Console.Write("Introduce tu Cuenta: ");
            cuenta = Console.ReadLine();
            Console.Write("Introduce la Pass: ");
            pass = Console.ReadLine();


            string cabecera = "VER 1 MSNP9 MSNP8 CVR0\r\n";
            string respuesta = "";
            string cab2 = "CVR 2 0x0C0A winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS " + cuenta + "\r\n";
            string cab3 = "USR 3 TWN I " + cuenta + "\r\n";
            string cab4 = "VER 4 MSNP9 MSNP8 CVR0\r\n";
            string cab5 = "CVR 5 0x0409 win 4.10 i386 MSNMSGR 5.0.0544 MSMSGS " + cuenta + "\r\n";
            string cab6 = "USR 6 TWN I " + cuenta + "\r\n";
            string cab7;
            string nick;
            Byte[] Send6 = Encoding.ASCII.GetBytes(cab6);
            Byte[] Rec6 = new Byte[255];
            Byte[] Send5 = Encoding.ASCII.GetBytes(cab5);
            Byte[] Rec5 = new Byte[255];
            Byte[] Send4 = Encoding.ASCII.GetBytes(cab4);
            Byte[] Rec4 = new Byte[255];
            Byte[] Send3 = Encoding.ASCII.GetBytes(cab3);
            Byte[] Rec3 = new Byte[255];
            Byte[] Send2 = Encoding.ASCII.GetBytes(cab2);
            Byte[] Rec = new Byte[255];
            Byte[] SendBytes = Encoding.ASCII.GetBytes(cabecera);
            Byte[] RecvBytes = new Byte[255];
            int bytes;
            string IPnueva;
            string cookie;
            string cuentaurl = cuenta.Replace("@", "%40");


            IPHostEntry address = Dns.GetHostEntry("messenger.hotmail.com");
            IPEndPoint Ep = new IPEndPoint(address.AddressList[0], 1863);
            Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            try
            {
                // Primera conexión
                socket.Connect(Ep);
                socket.Send(SendBytes, SendBytes.Length, SocketFlags.None);
                bytes = socket.Receive(RecvBytes, RecvBytes.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(RecvBytes, 0, bytes);

                //Segunda Conexión
                socket.Send(Send2, Send2.Length, SocketFlags.None);
                bytes = socket.Receive(Rec, Rec.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec, 0, bytes);

                //tercera Conexión
                socket.Send(Send3, Send3.Length, SocketFlags.None);
                bytes = socket.Receive(Rec3, Rec3.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec3, 0, bytes);

                Program o = new Program();

                IPnueva = o.depurarip(respuesta);

                socket.Close();

                Console.WriteLine("\nConectando...");

                //Cuarta conexión
                IPHostEntry addressa = Dns.GetHostEntry(IPnueva);
                IPEndPoint Epo = new IPEndPoint(addressa.AddressList[0], 1863);
                Socket socket2 = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                socket2.Connect(Epo);
                socket2.Send(Send4, Send4.Length, SocketFlags.None);
                bytes = socket2.Receive(Rec4, Rec4.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec4, 0, bytes);

                //Quinta conexión
                socket2.Send(Send5, Send5.Length, SocketFlags.None);
                bytes = socket2.Receive(Rec5, Rec5.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec5, 0, bytes);

                //Sexta conexión
                socket2.Send(Send6, Send6.Length, SocketFlags.None);
                bytes = socket2.Receive(Rec6, Rec6.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec6, 0, bytes);

                cookie = respuesta.Substring(12);


                //Septima conexión
                string tiket;
                string head;

                cab7 = "Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" + cuentaurl + ",pwd=" + pass + "," + cookie + "\r\n";
                WebRequest request = WebRequest.Create("https://login.passport.com/login2.srf");
                request.Headers.Add("Authorization", cab7);
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                head = Convert.ToString(response.Headers);
                tiket = o.Sacacookie(head);
                response.Close();

                //Ultima conexión
                string cab8 = "USR 7 TWN S t=" + tiket + "\r\n";
                Byte[] Send8 = Encoding.ASCII.GetBytes(cab8);
                Byte[] Rec8 = new Byte[255];

                socket2.Send(Send8, Send8.Length, SocketFlags.None);
                bytes = socket2.Receive(Rec8, Rec8.Length, SocketFlags.None);
                respuesta = Encoding.ASCII.GetString(Rec8, 0, bytes);

                nick = respuesta.Substring(cuenta.Length + 10);

                string decode;
                int fin;

                fin = nick.IndexOf("??$");
                nick = nick.Substring(0, fin);

                decode = o.urldecode(nick);

                Console.WriteLine("\n\nTu nick es: {0}",decode);

                Console.Read();
            }
            catch
            {
                Console.WriteLine("Ocurrió un error");
                Console.Read();
            }
        }
    }
}

A partir de esta base se pueden hacer otros proyectos como son versiones del MSN tipo AMSN, se pueden hacer MSN nukers....eso lo dejo a vuestra elección.

Un Saludo.  ;)

PD: Quiero dar las gracias a MazarD, sin su ayuda no habria podido conectar con login.passport.com... :xD :xD


« Última modificación: 3 Junio 2007, 01:30 am por Hendrix. » En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
BADBYTE-K
Knowledge is power, Diesel-K


Desconectado Desconectado

Mensajes: 2.329


Aprende todo lo que este a tu alkance


Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #1 en: 3 Junio 2007, 17:06 pm »

Muchas gracias por la info, valiosisima

Saludos


En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #2 en: 3 Junio 2007, 19:18 pm »

¿Para qué es todo esto exactamente?

¿Con qué idea?

Menudo curro ha hecho.
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #3 en: 3 Junio 2007, 19:45 pm »

Esta parrafada implementa el protocolo del MSN a traves de C#....es decir, implementa le mismo protocolo que implementa tu MSN....podria hablar con alguien a traves de la consola del C# o si le diseñara una GUI podria hacer una version del MSN como es el AMsn... ;) ;)

Este codigo se conecta y te presenta tu nick actual del msn en la consola.

Un Saludo.  ;)

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #4 en: 4 Junio 2007, 00:00 am »

Eso si ya me interesa más.

Pero ya que hay messenger. No creo que haya motivación para hacer algoq ue ya existe.

Es decir. ¿Para qué reinventar la rueda?
En línea

BADBYTE-K
Knowledge is power, Diesel-K


Desconectado Desconectado

Mensajes: 2.329


Aprende todo lo que este a tu alkance


Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #5 en: 6 Junio 2007, 16:28 pm »

Hola

Para fines didacticos esta muy bien, aparte la satisfaccion de desarrollar un proyecto propio en base a la investigacion del protocolo. Luego, lo considero interesante ya que se ponen en practica varios conceptos de c# y ademas tecnicas de trabajo con sockets con c#.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #6 en: 8 Junio 2007, 05:50 am »

Eso es cierto, no se nada de socket, pero para los que lo sepan, que hagna ejemplillos para aprender.
En línea

sirdarckcat
Aspirante a supervillano
Colaborador
***
Desconectado Desconectado

Mensajes: 7.029


No estoy loco, soy mentalmente divergente


Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #7 en: 8 Junio 2007, 06:19 am »

Hay algunas clases que te permiten establecer una conversación con algun conteacto, etc..

http://www.wox.no/
http://www.firstfloorsoftware.com/
http://members.home.nl/b.geertsema/dotMSN/

Saludos!!
En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: Protocolo MSN en C#
« Respuesta #8 en: 8 Junio 2007, 14:12 pm »

Meta, si quieres lo puedo ampliar hasta un codigo en el que se pueda ver la lista de contactos y hablar con ellos.... ;) ;)

Un Saludo.  ;)

En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
anion

Desconectado Desconectado

Mensajes: 149


Ver Perfil
Re: Protocolo MSN en C#
« Respuesta #9 en: 10 Junio 2007, 18:34 pm »

se puede hacer que una vez que se conecta a la red del msn, independiediente del contanto que nos envia un mensaje responda algo a ese contacto, por ej, si cualquiera de los contacto envia la palabra "hola", responda algo, si envia "chau", responde otra.
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
en que protocolo estan programados los p2p de tv?
Programación General
kasiko 0 2,170 Último mensaje 2 Febrero 2011, 21:02 pm
por kasiko
protocolo snpp
Redes
AlexPro 1 3,225 Último mensaje 8 Marzo 2012, 22:13 pm
por Aprendiz-Oscuro
que diferencia hay entre el protocolo IP y el protocolo UDP
Redes
etic097 3 3,027 Último mensaje 2 Junio 2015, 04:04 am
por DarK_FirefoX
Tipos de mensajes del protocolo LDP
Redes
MPLS 1 2,781 Último mensaje 9 Enero 2016, 16:54 pm
por Slava_TZD
protocolo UDP
Dudas Generales
Sadistski 1 2,276 Último mensaje 1 Noviembre 2016, 14:10 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines