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(); }
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); } }