Example #1
0
        public void Start()
        {
            //recebe_pacote chave de sessão
            Byte[] buffer = new Byte[24];

            Int32 size = _mainSock.Receive(buffer);

            if (size < 24)
            {
                throw new Exception("Erro ao receber chave de sessão");
            }

            //WriteFile(buffer, 0, size);

            header_key header = new header_key(decriptaHeader(buffer, buffer.Length));

            aut_seta_n(header.n);

            //Separa chave
            chave = new chave_aut(header.chave);

            Int32 cnt = 0;

            if (OnConnectionStarted != null)
            {
                OnConnectionStarted(_remoteEP, ref cnt);
            }

            //Prepara pacote para envio ao cliente
            ag_greeting greeting = new ag_greeting();

            greeting.versao     = 4;
            greeting.sub_ver    = 0;
            greeting.release    = 1;
            greeting.plataforma = (byte)1; //1 = lunix, 2 = Windows
            greeting.n_users    = cnt;

            Byte[] sendBuffer = greeting.ToBytes();

            envia_pacote(_mainSock, sendBuffer, sendBuffer.Length, FWAUT_OP_AG_GREETING, FWAUT_ST_OK);

            EsperaPacotes();
        }
Example #2
0
        private void _Connect(ref Socket iSock)
        {
            iSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            iSock.Connect(remoteEP);

            chave = gera_chave(password);

            header_key header = new header_key();

            header.chave = new Byte[] { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07 };
            header.n     = 1;
            header.nop   = BitConverter.ToUInt16(header.chave, 0);
            Byte[] buffer = header.ToBytes();

            buffer = aut_encripta_buffer(buffer, buffer.Length, 0, chave);

            String tst = "0x" + BitConverter.ToString(buffer).Replace("-", ", 0x");


            aut_seta_n(header.n);

            //Envia chave se sessão
            iSock.Send(buffer, 0, buffer.Length, SocketFlags.None);

            //Separa chave, com a propria chave gerada anteriormente
            //Para criptografia posteriores
            chave = new chave_aut(header.chave);

            packet pkt = recebe_pacote(iSock);

            aut_seta_n(pkt.n);

            if (pkt.operacao == 5)
            {
                greeting = new ag_greeting(pkt.body);
            }
        }