Esempio n. 1
0
        private void Connect()
        {
            if (_Socket != null)
            {
                _Socket.Close();
                Trace2(_uin + "disc:" + _oldConnectionStatus);
            }
            _NetworkStream = new MemoryStream();
            TcpClient _TcpClient = new TcpClient(servers.Pop(), 5190);

            _Socket        = _TcpClient.Client;
            _NetworkStream = new NetworkStream(_Socket);
            new Flap {
                _ICQ = this
            }.Receive();                        // receive hello
            Flap _Flap2 = new Flap {
                _ICQ = this
            };

            _Flap2.ch = 1;
            _Flap2._data.Write(new byte[] { 0, 0, 0, 1 });
            _Flap2._Tvls.Add(new Tvl {
                type = 1, data = _uin.ToBytes()
            });
            _Flap2._Tvls.Add(new Tvl {
                type = 2, data = XOR(_passw)
            });
            _Flap2._Tvls.Add(new Tvl {
                type = 3, data = "chatbot".ToBytes()
            });
            _Flap2.WriteTvl();
            _Flap2.Send(@"00 16 00 02 01 0A                           
   00 17 00 02 00 05                        
   00 18 00 02 00 25                        
   00 19 00 02 00 01                        
   00 1A 00 02 0E 90                        
   00 14 00 04 00 00 00 55                  
   00 0F 00 02 65 6E                        
   00 0E 00 02 75 73".Hex());

            Flap _Flap = new Flap {
                _ICQ = this
            }.Receive().ReadTvl();                                     //1 uin //2 ip 3 cookie
            Match m = Regex.Match(_Flap._Tvls[2].data.ToStr(), @"(.+?):(\d+)");

            if (!m.Success)
            {
                throw new ExceptionB("cannot Connect");
            }
            ip = m.Groups[1].Value;

            port    = int.Parse(m.Groups[2].Value);
            _Cookie = _Flap._Tvls[3].data;
            _Socket.Close();
            BossSimple();
        }
Esempio n. 2
0
        public void BossSimple()
        {
            TcpClient _TcpClient = new TcpClient(ip, port);

            _Socket        = _TcpClient.Client;
            _NetworkStream = new NetworkStream(_Socket);
            Flap hello = new Flap {
                _ICQ = this
            }.Receive();                                     //receive hello

            Flap _Flap1 = new Flap {
                _ICQ = this, ch = 1
            };

            _Flap1._data.Write(new byte[] { 0, 0, 0, 1 });
            _Flap1._Tvls.Add(new Tvl {
                data = _Cookie, type = 6
            });
            _Flap1.WriteTvl().Send();
            Flap _Flap2 = new Flap {
                _ICQ = this
            }.Receive().ReadSnac();
            Flap _Flap3 = new Flap {
                _ICQ = this
            };

            _Flap3.ch          = 2;
            _Flap3._Snac.ID1   = 1;
            _Flap3._Snac.ID2   = 2;
            _Flap3._Snac.flag1 = _Flap3._Snac.flag2 = 0;
            _Flap3.WriteSnac();//.Write();
            while (_Flap2._data.Position != _Flap2._data.Length)
            {
                UInt16 a = _Flap2._data.ReadUInt16();
                _Flap3._data.WriteUint16(a);
                _Flap3._data.Write("00 01 01 10 04 7B".Hex());
            }
            _Flap3.Send();
            Flap _Flap4 = new Flap {
                _ICQ = this
            };

            _Flap4.Receive().ReadSnac();
            if (_Flap4._Snac.ID1 != 11 || _Flap4._Snac.ID2 != 2)
            {
                throw new Exception();
            }
            Thread.Sleep(1000);
        }
Esempio n. 3
0
 public void SendMessage(Im im)
 {
     try
     {
         if (_ConnectionStatus != ConnectionStatus.Connected)
         {
             throw new Exception("Not Connected");
         }
         Flap _Flap = new Flap {
             _ICQ = this
         };
         _Flap.ch        = 2;
         _Flap._Snac.ID1 = 4;
         _Flap._Snac.ID2 = 6;
         _Flap.WriteSnac();
         _Dictionary.Add(_Flap._Snac.req, im);
         _Flap._data.Write("00 00 00 00 00 00 00 00 00 01".Hex());
         byte[] sendto = ASCIIEncoding.ASCII.GetBytes(im.uin);
         _Flap._data.WriteByte((byte)sendto.Length);
         _Flap._data.Write(sendto);
         _Flap._data.Write(new byte[] { 0, 6, 0, 0 });
         Tvl _Tvl02 = new Tvl()
         {
             data = new byte[] { 05, 01, 00, 02, 01, 01 }, type = 2
         };
         Tvl _Tvl0101 = new Tvl()
         {
             type = 257, data = ("\0\0\0\0" + im.msg).ToBytes()
         };
         _Tvl02.data = _Tvl02.data.Join(_Tvl0101.ToBytes());
         _Flap._Tvls.Add(_Tvl02);
         _Flap.WriteTvl().Send();
         im.Status    = MessageStatus.Sending;
         im._DateTime = DateTime.Now;
     }
     catch (IOException) { Trace2(_uin + "Error msg send failed"); }
 }
Esempio n. 4
0
        public void BossAdv()
        {
            TcpClient _TcpClient = new TcpClient(ip, port);

            _Socket        = _TcpClient.Client;
            _NetworkStream = new NetworkStream(_Socket);
            Flap hello = new Flap {
                _ICQ = this
            }.Receive();                                     //receive hello

            Flap _Flap1 = new Flap {
                _ICQ = this, ch = 1
            };                                              // отправляем куки

            _Flap1._data.Write(new byte[] { 0, 0, 0, 1 });
            _Flap1._Tvls.Add(new Tvl {
                data = _Cookie, type = 6
            });
            _Flap1.WriteTvl().Send();
            Flap _Flap2 = new Flap {
                _ICQ = this
            }.Receive().ReadSnac();                                      // SRV_FAMILIES

            new Flap {
                _ICQ = this, ch = 2
            }.Send(@"00 01-00 17 00 00 00 00 00 00   
00 01 00 03 00 13 00 02-00 02 00 01 00 03 00 01   
00 15 00 01 00 04 00 01-00 06 00 01 00 09 00 01
00 0A 00 01 00 0B 00 01-".Hex()); // CLI_FAMILIES

            Flap _Flap4 = new Flap {
                _ICQ = this
            }.Receive();                                     // SRV_FAMILIES2
            Flap _Flap5 = new Flap {
                _ICQ = this
            }.Receive();                                     // SRV_MOTD

            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 01-00 06 00 00 00 00 00 00".Hex());                                  // CLI_RATESREQUEST
            Flap _Flap6 = new Flap()
            {
                _ICQ = this
            }.Receive();                                        // SRV_RATES

            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 01-00 08 00 00 00 00 00 00 00 01 00 02 00 03 00 04-00 05".Hex());                                 // CLI_ACKRATES (ответим серверу что мы получили его SRV_RATES)

            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 04-00 02 00 00 00 00 00 00 00 00 00 00 00 03 1F 40-03 E7 03 E7 00 00 00 00".Hex());                                 // CLI_SETICBM
            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 01-00 0E 00 00 00 00 00 00".Hex());                                 // CLI_REQINFO
            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 02-00 02 00 00 00 00 00 00".Hex());                                 // CLI_REQLOCATION
            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 03-00 02 00 00 00 00 00 00".Hex());                                 // CLI_REQBUDDY
            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 04-00 04 00 00 00 00 00 00".Hex());                                 // CLI_REQICBM
            new Flap()
            {
                _ICQ = this, ch = 2
            }.Send("00 09-00 02 00 00 00 00 00 00".Hex());                                 // CLI_REQBOS
            Flap _Flap7 = new Flap {
                _ICQ = this
            }.Receive();                                      //SRV_REPLYINFO
            Flap _Flap8 = new Flap {
                _ICQ = this
            }.Receive();                                      //SRV_REPLYLOCATION
            Flap _Flap9 = new Flap {
                _ICQ = this
            }.Receive();                                      //SRV_REPLYBUDDY
            Flap _Flap10 = new Flap {
                _ICQ = this
            }.Receive();                                      //SRV_REPLYICBM
            Flap _Flap11 = new Flap {
                _ICQ = this
            }.Receive();                                      //SRV_REPLYBOS

            new Flap()
            {
                _ICQ = this
            }.Send(@"00 02-00 04 00 00 00 00 00 00   
                  00 05 00 10 09 46 13 41-4C 7F 11 D1 82 22 44 45   
                  53 54 00 00".Hex());// CLI_SETUSERINFO - капабилды клиента (в TLV5)


            new Flap {
                _ICQ = this, ch = 2
            }.Send("00 09-00 07 00 00 00 00 00 00".Hex());                               // CLI_ADDINVISIBLE
            new Flap {
                _ICQ = this, ch = 2
            }.Send("00 01-00 11 00 00 00 00 00 00 00 00 00 00".Hex());                               //SNAC(1,11)(зх шоза снэк)
            new Flap {
                _ICQ = this, ch = 2
            }.Send(@"00 01 00 1E 00 00   
00 00 00 00 00 06 00 04-00 00 00 00 00 08 00 02   
00 00 00 0C 00 25 59 BD-9B DD 00 00 0B B8 04 00   
08 2D A8 4E 56 00 00 00-50 00 00 00 03 00 00 00   
00 00 00 00 00 00 00 00-00 00 00".Hex());// CLI_REQINFO

            new Flap {
                _ICQ = this, ch = 2
            }.Send(@"00 01 00 02 00 00 00-00 00 00 00 01 00 03 01   
10 04 7B 00 13 00 02 01-10 04 7B 00 02 00 01 01   
01 04 7B 00 03 00 01 01-10 04 7B 00 15 00 01 01   
10 04 7B 00 04 00 01 01-10 04 7B 00 06 00 01 01   
10 04 7B 00 09 00 01 01-10 04 7B 00 0A 00 01 01   
10 04 7B 00 0B 00 01 01-10 04 7B".Hex());//CLI_READY

            Flap _Flap12 = new Flap {
                _ICQ = this
            }.Receive();                                       // Как видим, тут у нас есть SNAC B,2 (00 0B 00 02) - следовательно мы успешно зашли =)
        }