Aca el codigo:
Código
using System; using System.Collections.Generic; using System.Text; using System.Net; using System.Net.Sockets; using System.IO; namespace Conexion_Msn { 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 = ""; 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[] Send5 = Encoding.ASCII.GetBytes(cab5); Byte[] Send4 = Encoding.ASCII.GetBytes(cab4); Byte[] Send3 = Encoding.ASCII.GetBytes(cab3); Byte[] Send2 = Encoding.ASCII.GetBytes(cab2); Byte[] SendBytes = Encoding.ASCII.GetBytes(cabecera); int bytes; string IPnueva; string cookie; string cuentaurl = cuenta.Replace("@", "%40"); IPHostEntry address = Dns.GetHostEntry("messenger.hotmail.com"); 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); IPnueva = o.depurarip(respuesta); socket.Close(); Console.WriteLine("\nConectando..."); //Cuarta conexión IPHostEntry addressa = Dns.GetHostEntry(IPnueva); 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); 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(Exception error) { Console.WriteLine("Ocurrió un error : " +error.Message); Console.Read(); } } } }