Exemplo n.º 1
0
        private void start_Click(object sender, EventArgs e)
        {
            try
            {
                var runningProcs = from proc in Process.GetProcesses(".") orderby proc.Id select proc;
                if (runningProcs.Count(p => p.ProcessName.Contains("Dayz" + name)) > 0)
                {
                    Button button = (Button)sender;
                    button.Enabled = false;
                    MessageBox.Show("Ошибка: Вы пытаетесь запустить приложение повторно!", "Error: You try to start the application repeatedly!",
                                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                }
                else
                {
                    string startgame = StartParams.Text;
                    string Arguments = " -beta=Expansion\\beta\\Expansion" + " -mod=" + mod + " -connect=" + serverip + " -port=" + serverport + " " + startgame; //
                    string pathFile  = "Expansion/beta/arma2oa.exe";
                    string pathRun   = "Expansion/beta/Dayz" + name + ".exe";
                    if (File.Exists(pathFile))
                    {
                        if (File.Exists(pathRun))
                        {
                            message = auth;
                            message = string.Format("{0}: {1}", ip, message);
                            message = AESEncryption.Encrypt(message, Pass, Salt);
                            // преобразуем сообщение в массив байтов
                            byte[] data = Encoding.Unicode.GetBytes(message);
                            // отправка сообщения
                            stream.Write(data, 0, data.Length);

                            // получаем ответ
                            data = new byte[64]; // буфер для получаемых данных
                            StringBuilder builder = new StringBuilder();
                            int           bytes   = 0;
                            do
                            {
                                bytes = stream.Read(data, 0, data.Length);
                                builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                            }while (stream.DataAvailable);

                            message = builder.ToString();
                            message = AESEncryption.Decrypt(message, Pass, Salt);
                            if (message == "OK")
                            {
                                try
                                {
                                    string md5 = ComputeMD5Checksum("Expansion\\beta\\Dayz" + name + ".exe");
                                    if (md5 == md5client)
                                    {
                                        Process.Start("Expansion\\beta\\Dayz" + name + ".exe", Arguments);
                                        this.WindowState = FormWindowState.Minimized;
                                        int isarmarun = 0, kill = 0;
                                        while (isarmarun != 1)
                                        {
                                            System.Threading.Thread.Sleep(5000);
                                            md5 = ComputeMD5Checksum("Expansion\\beta\\Dayz" + name + ".exe");
                                            if (md5 != md5client)
                                            {
                                                kill = 1;
                                            }
                                            var runningProcswhile = from proc in Process.GetProcesses(".") orderby proc.Id select proc;
                                            if (runningProcswhile.Count(p => p.ProcessName.Contains("Wireshark")) > 0)
                                            {
                                                kill = 1;
                                            }
                                            if (runningProcswhile.Count(p => p.ProcessName.Contains("skriptexecuter2")) > 0)
                                            {
                                                kill = 1;
                                            }
                                            if (runningProcswhile.Count(p => p.ProcessName.Contains("WpePro")) > 0)
                                            {
                                                kill = 1;
                                            }
                                            if (runningProcswhile.Count(p => p.ProcessName.Contains("ArmA2OA")) > 0)
                                            {
                                                kill = 1;
                                            }
                                            if (runningProcswhile.Count(p => p.ProcessName.Contains("Dayz" + name)) > 1)
                                            {
                                                kill = 1;
                                            }
                                            message = ping;
                                            message = String.Format("{0}: {1}", ip, message);
                                            message = AESEncryption.Encrypt(message, Pass, Salt);
                                            // преобразуем сообщение в массив байтов
                                            data = Encoding.Unicode.GetBytes(message);
                                            // отправка сообщения
                                            stream.Write(data, 0, data.Length);

                                            // получаем ответ
                                            data    = new byte[64]; // буфер для получаемых данных
                                            builder = new StringBuilder();
                                            bytes   = 0;
                                            do
                                            {
                                                bytes = stream.Read(data, 0, data.Length);
                                                builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                                            }while (stream.DataAvailable);

                                            message = builder.ToString();
                                            message = AESEncryption.Decrypt(message, Pass, Salt);
                                            if (message != "OK")
                                            {
                                                kill = 1;
                                            }
                                            string    target_name = "Dayz" + name;
                                            Process[] local_procs = Process.GetProcesses();
                                            try
                                            {
                                                Process target_proc = local_procs.First(p => p.ProcessName == target_name);
                                                if (kill == 1)
                                                {
                                                    target_proc.Kill();
                                                }
                                            }
                                            catch (InvalidOperationException)
                                            {
                                                isarmarun        = 1;
                                                this.WindowState = FormWindowState.Normal;
                                            }
                                        }
                                        if (message != "OK")
                                        {
                                            MessageBox.Show("Ошибка: Не получен ответ от сервера.", "Ошибка",
                                                            MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                                        }
                                        message = deauth;
                                        message = String.Format("{0}: {1}", ip, message);
                                        message = AESEncryption.Encrypt(message, Pass, Salt);
                                        // преобразуем сообщение в массив байтов
                                        data = Encoding.Unicode.GetBytes(message);
                                        // отправка сообщения
                                        stream.Write(data, 0, data.Length);

                                        // получаем ответ
                                        data    = new byte[64]; // буфер для получаемых данных
                                        builder = new StringBuilder();
                                        bytes   = 0;
                                        do
                                        {
                                            bytes = stream.Read(data, 0, data.Length);
                                            builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                                        }while (stream.DataAvailable);

                                        message = builder.ToString();
                                        message = AESEncryption.Decrypt(message, Pass, Salt);
                                        if (message != "OK")
                                        {
                                            MessageBox.Show("Ошибка: Не получен ответ от сервера.", "Ошибка",
                                                            MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                                        }
                                    }
                                    else
                                    {
                                        try
                                        {
                                            File.Delete("Expansion\\beta\\Dayz" + name + ".exe");
                                            WebClient webClient = new WebClient();
                                            webClient.DownloadFile(secure + "://" + siteaddr + "/Dayz" + name + ".exe", @"Expansion\\beta\\Dayz" + name + ".exe");
                                            MessageBox.Show("Ошибка: Клиент не присутствовал и был закачен. Запустите игру заново.", "Ошибка",
                                                            MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                                        }
                                        catch (Exception) { }
                                    }
                                }
                                catch (Exception) { }
                            }
                            else
                            {
                                MessageBox.Show("Ошибка: Ошибка аунтификации.", "Ошибка",
                                                MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                            }
                        }
                        else
                        {
                            try
                            {
                                WebClient webClient = new WebClient();
                                webClient.DownloadFile(secure + "://" + siteaddr + "/Dayz" + name + ".exe", @"Expansion\\beta\\Dayz" + name + ".exe");
                                MessageBox.Show("Ошибка: Клиент не присутствовал и был закачен. Запустите игру заново.", "Ошибка",
                                                MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                            }
                            catch (Exception) { }
                        }
                    }
                    else
                    {
                        MessageBox.Show("/Expansion/beta/arma2oa.exe не найден. Убедитесь что лаунчер лежит в папке с игрой.", "The file isn't found",
                                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                    }
                }
            }
            catch (Exception) { }
        }
Exemplo n.º 2
0
        private void Form1_Load(object sender, EventArgs e)
        {
            {
                try
                {
                    StartParams.Text = Properties.Settings.Default.StartParams;
                    labelServer.Text = servernames;
                }
                catch (Exception) { }
                try
                {
                    var runningProcs = from proc in Process.GetProcesses(".") orderby proc.Id select proc; // Проверяем что запущен только один лаунчер
                    if (runningProcs.Count(p => p.ProcessName.Contains(name)) > 1)
                    {
                        if (runningProcs.Count(p => p.ProcessName.Contains("Launcher.vshost")) > 1)
                        {
                        }
                        else
                        {
                            Close();
                        }
                    }// если лаунчер запущен отменяем запуск дубликата
                    if (runningProcs.Count(p => p.ProcessName.Contains("Wireshark")) > 0)
                    {
                        Close();
                    }                                                                                 // если Wireshark запущен отменяем запуск
                    if (runningProcs.Count(p => p.ProcessName.Contains("skriptexecuter2")) > 0)
                    {
                        Close();
                    }
                }
                catch (Exception) { }
                try
                {
                    if (File.Exists("Update.exe"))
                    {
                        try
                        {
                            File.Delete("Update.exe");
                        }
                        catch (Exception) { }
                    }
                    string    line    = ver;
                    WebClient clientt = new WebClient();
                    Stream    streamm = clientt.OpenRead(secure + "://" + siteaddr + "/ver.php");

                    StreamReader sr = new StreamReader(streamm);
                    line = sr.ReadLine();
                    streamm.Close();
                    streamm = clientt.OpenRead(secure + "://" + siteaddr + "/ip.php");
                    sr      = new StreamReader(streamm);
                    ip      = sr.ReadLine();
                    streamm.Close();
                    int result = string.Compare(line, ver);
                    if (result != 0)
                    {
                        try
                        {
                            WebClient webUpdate = new WebClient();
                            webUpdate.DownloadFile(secure + "://" + siteaddr + "/Update.exe", @"Update.exe");
                            Process.Start("Update.exe");
                        }
                        catch (Exception) { }
                        Close();
                    }
                }
                catch (Exception) {
                    MessageBox.Show("Не удалось подключится к серверу.", "Проверьте подключение к интернету.",
                                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                    Close();
                }
                try
                {
                    client  = new TcpClient(address, port);
                    stream  = client.GetStream();
                    message = ping;
                    message = string.Format("{0}: {1}", ip, message);
                    message = AESEncryption.Encrypt(message, Pass, Salt);
                    byte[] data = Encoding.Unicode.GetBytes(message);
                    stream.Write(data, 0, data.Length);
                    // получаем ответ
                    data = new byte[64]; // буфер для получаемых данных
                    StringBuilder builder = new StringBuilder();
                    int           bytes   = 0;
                    do
                    {
                        bytes = stream.Read(data, 0, data.Length);
                        builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                    }while (stream.DataAvailable);

                    message = builder.ToString();
                    message = AESEncryption.Decrypt(message, Pass, Salt);
                    Console.WriteLine("Сервер: {0}", message);
                    if (message == reply)
                    {
                    }
                    else
                    {
                        MessageBox.Show("Некорректный ответ сервера", "Проверьте подключение к интернету.",
                                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                        Close();
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Не удалось подключится к серверу. Проверьте подключение к интернету или время на компьютере.", "Ошибка",
                                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
                    Close();
                }
            }
        }