Beispiel #1
0
 internal MSNTicket(Credentials creds)
 {
     if (null != creds &&
         false == String.IsNullOrEmpty(creds.Account) &&
         false == String.IsNullOrEmpty(creds.Password))
     {
         DeleteTick = NextDeleteTick();
         Sha256Key = ComputeSHA(creds.Account, creds.Password);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Send the first message to the server.
        /// </summary>
        protected virtual void SendInitialMessage()
        {
            (MessageProcessor as NSMessageProcessor).ResetTransactionID();

            // 1) VER: MSN Protocol used
            MessageProcessor.SendMessage(new NSMessage("VER", new string[] { "MSNP21", "CVR0" }));

            // 2) CVR: Send client information
            MsnProtocol msnProtocol = MsnProtocol.MSNP21;
            Credentials oldcred = Credentials;
            Credentials = new Credentials(oldcred.Account, oldcred.Password, msnProtocol);
            string base64Hop = (hopCount == 0 || hopCount == int.MaxValue) ? "0" : Convert.ToBase64String(Encoding.ASCII.GetBytes("Version: 1\r\nXfrCount: " + hopCount.ToString(CultureInfo.InvariantCulture)));

            MessageProcessor.SendMessage(new NSMessage("CVR",
                new string[] {
                    "0x040c", //The LCIDs in .net framework are different from Windows API: "0x" + CultureInfo.CurrentCulture.LCID.ToString("x4")
                    "winnt",
                    "6.1.1",
                    "i386",
                    Credentials.ClientInfo.MessengerClientName,
                    Credentials.ClientInfo.MessengerClientBuildVer,
                    Credentials.ClientInfo.MessengerClientBrand,
                    Credentials.Account,
                    base64Hop
                })
            );

            // 3) USR: Begin login procedure
            MessageProcessor.SendMessage(new NSMessage("USR", new string[] { "SSO", "I", Credentials.Account }));
        }
Beispiel #3
0
        private static MSNTicket GetFromCacheOrCreateNewWithLock(string sha256key, Credentials creds)
        {
            MSNTicket ticket = null;

            lock (SyncObject)
            {
                if (authenticatedTicketsCache.ContainsKey(sha256key))
                {
                    // Hit delete tick
                    ticket = authenticatedTicketsCache[sha256key];
                    ticket.DeleteTick = MSNTicket.NextDeleteTick();
                }
                else
                {
                    ticket = new MSNTicket(creds);
                }
            }

            return ticket;
        }