static void Main() { CryptEngine.Initialize(new Byte[] { 00 }); LoginPacket.InitializeCryptoService(new Byte[] { 00, 00, 00, 00, 00, 00, 00, 00 }); /* var server = new AAAuthServer(); * server.Start(IPAddress.Any, 2106);*/ /*var client = new AAAuthClient("admin", "test123"); * client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2106)); * * while (true) * { * client.Process(); * System.Threading.Thread.Sleep(1500); * }*/ /*var server = new TRAuthServer(); * server.Start(IPAddress.Any, 2106);*/ /*var client = new TRAuthClient("admin", "test123"); * client.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 2106)); * * while (true) * { * client.Process(); * System.Threading.Thread.Sleep(1500); * }*/ Console.ReadLine(); }
public Packet MakePacket(string publicKey = null) { if (publicKey == null) { publicKey = CryptEngine.serializedPublic; } if (IsCrypt && packet.PT != PType.PacketType.PublicKey) { packet.BData = CryptEngine.Encrypt(ConstructPacket(), publicKey); } else { packet.BData = ConstructPacket(); } if (packet.BData.Length > 0) { return(packet); } else { throw new Exception("Bytes Lenght was equals zero."); } }
private void sbCrypt_Click(object sender, EventArgs e) { if (!string.IsNullOrEmpty(mePlainText.Text)) { var cryptEngine = new CryptEngine(CryptEngine.AlgorithmType.Des); meCryptedText.Text = cryptEngine.Encrypt(mePlainText.Text); } }
private async Task MessageFraming_DataReceivedEvent(byte[] receivedData) { IPacket packet; using (var ms = new MemoryStream(await CryptEngine.DecompressAsync(receivedData))) packet = (IPacket)await LightRATUtils.Instance.packetSerializer.DeserializeAsync(ms); OnPacketReceive?.Invoke(this, new ReceivePacketArgs(packet)); }
public void Compress_Decompress__ReturnTheSameInput() { var sampleString = "Hello World"; var compressed = CryptEngine.Compress(Encoding.ASCII.GetBytes(sampleString)); var decompressed = Encoding.ASCII.GetString(CryptEngine.Decompress(compressed)); Assert.AreEqual(sampleString, decompressed); }
public string Decrypt(string connectionString) { if (string.IsNullOrEmpty(connectionString)) { throw new ArgumentNullException("connectionString"); } var cryptEngine = new CryptEngine(CryptEngine.AlgorithmType.Des); return(cryptEngine.Decrypt(connectionString)); }
public LoginProtocol(PacketHandleFactory handle) : base(handle) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown Rnd = new Random(); _key = new byte[16]; crypt = new CryptEngine(); Rnd.NextBytes(_key); crypt.updateKey(_key); }
public IAsyncResult BeginSend(Byte[] buffer, Int32 offset, Int32 size, AsyncCallback callback, Boolean needEncryption) { if (_closed) { return(null); } buffer = needEncryption ? CryptEngine.Encrypt(buffer, ref size) : buffer; var buff = new List <Byte>(buffer.Length + (Int32)_sizeHeaderLen); switch (_sizeHeaderLen) { case SizeType.None: break; case SizeType.Char: buff.Add((Byte)(buffer.Length + (_countSize ? 1 : 0))); break; case SizeType.Word: buff.AddRange(BitConverter.GetBytes((UInt16)(buffer.Length + (_countSize ? 2U : 0U)))); break; case SizeType.Dword: buff.AddRange(BitConverter.GetBytes((UInt32)(buffer.Length + (_countSize ? 4U : 0U)))); break; case SizeType.Qword: buff.AddRange(BitConverter.GetBytes((UInt64)(buffer.Length + (_countSize ? 8U : 0U)))); break; } buff.AddRange(buffer); try { return(_socket.BeginSend(buff.ToArray(), 0, buff.Count, SocketFlags.None, callback, null)); } catch { Close(); return(null); } }
public async Task SendPacket(IPacket packet) { byte[] buffer; using (var ms = new MemoryStream()) { await LightRATUtils.Instance.packetSerializer.SerializeAsync(ms, packet); buffer = ms.ToArray(); } var compressedData = await CryptEngine.CompressAsync(buffer); var framedData = await MessageFramingProtocol.FrameAsync(compressedData); ClientSocket.BeginSend(framedData, 0, framedData.Length, SocketFlags.None, SendCallback, null); }
public void SendPacket(SendBasePacket packet) { lock (this) { packet.Write(); byte[] pck = packet.ToByteArray(); byte PacketId = pck[0]; pck = CryptEngine.Crypt(pck, NetworkKey); List <Byte> FullPacket = new List <Byte>(); FullPacket.AddRange(BitConverter.GetBytes((short)(pck.Length + 2))); //+2 Packet Length FullPacket.AddRange(pck); try { _socket.Send(FullPacket.ToArray()); } catch { } settings.SendedPackets++; } }
public bool SendPacket(SendBasePacket packet) { lock (this) { try { packet.Write(); byte[] pck = CryptEngine.Crypt(packet.ToByteArray()); List <Byte> FullPacket = new List <Byte>(); FullPacket.AddRange(BitConverter.GetBytes((short)(pck.Length + 2))); //+2 Packet Length FullPacket.AddRange(pck); //Packet _client.Send(FullPacket.ToArray()); } catch { return(false); } return(true); } }
public void SendPacket(SendBasePacket packet) { lock (this) { packet.Write(); byte[] pck = CryptEngine.Crypt(packet.ToByteArray()); if (packet.Length > 60000) { return; } List <Byte> FullPacket = new List <Byte>(); FullPacket.AddRange(BitConverter.GetBytes((short)(pck.Length + 2))); //+2 Packet Length FullPacket.AddRange(pck); //Packet try { _client.Send(FullPacket.ToArray()); } catch {} } }
private void Client_BeginReceive(IAsyncResult ar) { try { if (_client.EndReceive(ar) > 0) { _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2]; if (_buffer.Length > 10000) //ignore packets that are bigger then 10kb { return; } if (_buffer.Length > 0) { _client.Receive(_buffer, 0, _buffer.Length, SocketFlags.Partial); _buffer = CryptEngine.Crypt(_buffer); //Process the packet. Type pck = ClientPacketProcessor.ProcessPacket(_buffer); if (pck != null) { ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer); rbp.Run(); } Read(); return; } } } catch { if (!_client.Connected) { TryToConnect(); } } }
public string Decrypt(string connectionString) { if (string.IsNullOrEmpty(connectionString)) throw new ArgumentNullException("connectionString"); var cryptEngine = new CryptEngine(CryptEngine.AlgorithmType.Des); return cryptEngine.Decrypt(connectionString); }
private void ReadCallbackStatic(IAsyncResult ar) { try { if (_socket.EndReceive(ar) > 1) { if (_FloodProtector.HandleFlood(_socket.RemoteEndPoint) == false) { Disconnect(); return; } //Get length from the buffer, convert to Int16 and read the rest of the packet. _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2]; //-2 for the length, we already read that :P if (_buffer.Length > 10000) //ignore packets that are bigger then 10kb { return; } if (_buffer.Length > 0) { _socket.Receive(_buffer, _buffer.Length, SocketFlags.Partial); _buffer = CryptEngine.Crypt(_buffer, NetworkKey); Type pck = ClientPacketProcessor.ProcessPacket(_buffer, _socket.RemoteEndPoint.ToString()); if (pck != null) { ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer); rbp.Run(); settings.ReceivedPackets++; } else { //unknown packet received Disconnect(); return; } Read(); return; } else { //Disconnect when no length is given... maybe flood? just disconnect :P Disconnect(); return; } } else { Disconnect(); return; } } catch { if (!_socket.Connected) { Disconnect(); } return; } }
private void ReadCallbackStatic(IAsyncResult ar) { try { if (_socket.EndReceive(ar) > 1) { if (_FloodProtector.HandleFlood(_socket.RemoteEndPoint) == false) { //Disconnect(); //return; } //Get length from the buffer, convert to Int16 and read the rest of the packet. if (_buffer[0] == 0 && _buffer[1] == 0) { Read(); return; } try { _buffer = new byte[BitConverter.ToInt16(_buffer, 0) - 2]; } catch { //Sometimes here is a error because the first 2 bytes are '0' //I really don't know how to fix that... so lets ignore it :P } if (_buffer.Length > 0) { settings.ReceivedPackets++; _socket.Receive(_buffer, _buffer.Length, SocketFlags.Partial); _buffer = CryptEngine.Crypt(_buffer, NetworkKey); Type pck = FileClientPacketProcessor.ProcessPacket(_buffer, _socket.RemoteEndPoint.ToString()); if (pck != null) { ReceiveBasePacket rbp = (ReceiveBasePacket)Activator.CreateInstance(pck, this, _buffer); rbp.Run(); } else { //unknown packet received //Disconnect(); Read(); return; } Read(); return; } else { //Disconnect when no length is given... maybe flood? just disconnect :P //Disconnect(); Read(); return; } } else { //Disconnect(); Read(); return; } } catch { //if(!_socket.Connected) // Disconnect(); Read(); return; } }
public Byte[] EndReceive(IAsyncResult result) { if (_closed) { return(null); } Int32 i; try { i = _socket.EndReceive(result); if (i <= (Int32)_sizeHeaderLen) { return(null); } } catch (Exception e) { Console.WriteLine("Unknown error at LengthedSocket::EndReceive! Exception: {0}", e); return(null); } var buffer = (Byte[])result.AsyncState; var len = 0UL; switch (_sizeHeaderLen) { case SizeType.None: len = (UInt64)i; break; case SizeType.Char: len = buffer[0]; break; case SizeType.Word: len = BitConverter.ToUInt16(buffer, 0); break; case SizeType.Dword: len = BitConverter.ToUInt32(buffer, 0); break; case SizeType.Qword: len = BitConverter.ToUInt64(buffer, 0); break; } var buff = new Byte[len - (Byte)(_countSize ? _sizeHeaderLen : 0)]; if (buff.Length == 0) { return(null); } Array.Copy(buffer, (Byte)(_countSize ? _sizeHeaderLen : 0), buff, 0, buff.Length); if (_needDecrypt) { CryptEngine.Decrypt(buff); } return(buff); }
public static Packet GetPacket(byte[] data) { Packet temp = new Packet(); string buffer = Encoding.Default.GetString(data); bool crypted = true; if (buffer.Contains('|')) { crypted = false; } if (crypted) { string message = CryptEngine.Decrypt(buffer); string[] array = message.Split('|'); temp.PT = (PType.PacketType)Enum.Parse(typeof(PType.PacketType), array[0]); if (temp.PT == PType.PacketType.Message) { temp.MPT = (PType.MessagePacketType)Enum.Parse(typeof(PType.MessagePacketType), array[1]); temp.SData = array[2] ?? null; } else if (temp.PT == PType.PacketType.Session) { temp.SPT = (PType.SessionPacketType)Enum.Parse(typeof(PType.SessionPacketType), array[1]); temp.SData = null; } } else { string[] array = buffer.Split('|'); try { temp.PT = (PType.PacketType)Enum.Parse(typeof(PType.PacketType), array[0]); } catch { if (array[1].Length == 172) { temp.PT = PType.PacketType.PublicKey; } } if (temp.PT == PType.PacketType.PublicKey) { string pkey_temp = "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" + "<RSAParameters xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" + "\t<Exponent>AQAB</Exponent>\n" + "\t<Modulus>" + array[1] + "</Modulus>\n" + "</RSAParameters>"; } else if (temp.PT == PType.PacketType.Message) { temp.MPT = (PType.MessagePacketType)Enum.Parse(typeof(PType.MessagePacketType), array[1]); temp.SData = array[2]; } else if (temp.PT == PType.PacketType.Session) { temp.SPT = (PType.SessionPacketType)Enum.Parse(typeof(PType.SessionPacketType), array[1]); temp.SData = null; } } return(temp); }
protected void btnMwsLogin_Click(object sender, EventArgs e) { string EmailID = txtEmailID.Value.Trim().SafeSqlLiteral(1); string Pwd = txtPassword.Value.Trim().SafeSqlLiteral(1); if (string.IsNullOrEmpty(EmailID) || string.IsNullOrEmpty(Pwd)) { //error divLoginErr.InnerHtml = UiMsg.Login.InvalidCredentials.ErrorWrap(); } else { Users obj = new Users(); DataSet ds = obj.GetUsrAuthDetails(EmailID); if (!DataUtils.IsDataSetNull(ds, 0)) { DataRow dr = ds.Tables[0].Rows[0]; if (dr["OpResult"].ToString() == "0") { // count is more than one divLoginErr.InnerHtml = UiMsg.Login.InvalidCredentials.ErrorWrap(); } else { string UserStatusID = dr["UserStatusID"].ToString(); if (UserStatusID == DbSettings.UserStatus.Active) { string Salt = dr["Salt"].ToString(); string SavedPwd = dr["Password"].ToString(); string UserID = dr["UserID"].ToString(); CryptEngine objCrypt = new CryptEngine(); if (objCrypt.VerifyHash(Pwd, Salt, SavedPwd)) { //auth success FormsAuthentication.RedirectFromLoginPage(UserID, false); //string[] url = Request.UrlReferrer.Query.Split(new string[] { "ReturnUrl=%2f" }, StringSplitOptions.None); //Response.Redirect(url[1]); } else { divLoginErr.InnerHtml = UiMsg.Login.InvalidCredentials.ErrorWrap(); } } else { //user is not allowed to login divLoginErr.InnerHtml = UiMsg.Login.NotAuthorized.ErrorWrap(); } } } //dataset not null else { divLoginErr.InnerHtml = UiMsg.Global.Error.ErrorWrap(); } } //valid mail & pwd } //btn login