예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            string password   = txtPassword.Text.Trim();
            string secrectKey = txtSecrectKey.Text.Trim();

            if (string.IsNullOrWhiteSpace(password) || string.IsNullOrWhiteSpace(secrectKey))
            {
                MessageBox.Show("请输入登录密码和加密密钥!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            DateTime now            = DateTime.Now;
            var      initTime       = now.Ticks - openTime.Ticks;
            var      initTimeString = initTime.ToString();

            secrectKey = EncryptUtils.MD5Encrypt(secrectKey);
            var passSecrectKey  = EncryptUtils.GetSecrectKey(initTimeString, secrectKey);
            var encryptPassword = EncryptUtils.DES3Encrypt(password, passSecrectKey);

            RDSDataManager manager = new RDSDataManager();

            manager.SetSecrectKey(secrectKey);
            manager.SetInitTime(initTimeString);
            manager.SetPassword(encryptPassword);
            manager.EncryptServer();

            this.Hide();
            LoginForm loginForm = new LoginForm();

            loginForm.ShowDialog();
            this.Close();
        }
예제 #2
0
        /// <summary>
        /// 连接Windows远程桌面
        /// </summary>
        /// <param name="server"></param>
        private void ConnectWindowsDesktop(RDSServer server)
        {
            AxMSTSCLib.AxMsRdpClient9NotSafeForScripting rdp = null;

            // 如果Panel中包含子控件,则让远程桌面控件启动连接
            if (currentRDPanel.HasChildren)
            {
                rdp = (AxMSTSCLib.AxMsRdpClient9NotSafeForScripting)currentRDPanel.Controls[0];

                // About Connected https://msdn.microsoft.com/en-us/library/aa382835(v=vs.85).aspx
                if (rdp.Connected == 0)
                {
                    // 防止服务器相关参数变更
                    rdp.Tag    = server.ServerID.ToString();
                    rdp.Name   = "rdp_" + server.ServerID.ToString();
                    rdp.Server = server.ServerAddress;
                    rdp.AdvancedSettings9.RDPPort = server.ServerPort;
                    rdp.UserName = server.UserName;
                    rdp.AdvancedSettings9.ClearTextPassword = EncryptUtils.DecryptServerPassword(server);

                    rdp.Connect();
                }
            }

            // 如果远程桌面控件不存在,则创建
            if (rdp == null)
            {
                rdp        = new AxMSTSCLib.AxMsRdpClient9NotSafeForScripting();
                rdp.Width  = this.splitContainer1.Panel2.Width;
                rdp.Height = this.splitContainer1.Panel2.Height;
                rdp.Dock   = System.Windows.Forms.DockStyle.None;

                currentRDPanel.Controls.Add(rdp);

                rdp.Tag              = server.ServerID.ToString();
                rdp.Name             = "rdp_" + server.ServerID.ToString();
                rdp.Server           = server.ServerAddress;
                rdp.UserName         = server.UserName;
                rdp.CausesValidation = false;
                rdp.AdvancedSettings9.EnableCredSspSupport = true;
                rdp.AdvancedSettings9.RDPPort             = server.ServerPort;
                rdp.AdvancedSettings9.ClearTextPassword   = EncryptUtils.DecryptServerPassword(server);
                rdp.AdvancedSettings9.BandwidthDetection  = true;
                rdp.AdvancedSettings.allowBackgroundInput = 1;
                rdp.ColorDepth       = 32;
                rdp.ConnectingText   = "正在连接";
                rdp.DisconnectedText = "连接已断开";
                rdp.OnConnected     += Rdp_OnConnected;
                rdp.OnDisconnected  += Rdp_OnDisconnected;
                rdp.OnFatalError    += Rdp_OnFatalError;
                rdp.Connect();
            }
        }
예제 #3
0
        private void button2_Click(object sender, EventArgs e)
        {
            string password = txtPassword.Text.Trim();

            var secrectPassword = new RDSDataManager().GetPassword();
            var encryptPassword = EncryptUtils.EncryptPassword(password);

            if (encryptPassword != secrectPassword)
            {
                MessageBox.Show("密码不正确,请重新输入!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            this.Hide();
            MainForm mainForm = new MainForm();

            mainForm.ShowDialog();
            this.Close();
        }
예제 #4
0
        /// <summary>
        /// 递归解密全部密码
        /// </summary>
        /// <param name="dataManager"></param>
        /// <param name="parentNode"></param>
        private void DecryptPassword(RDSDataManager dataManager, RDSDataNode parentNode)
        {
            if (parentNode.Nodes == null && parentNode.Nodes.Count <= 0)
            {
                return;
            }

            // 恢复密码为明文
            foreach (RDSDataNode node in parentNode.Nodes)
            {
                if (node.NodeType == RDSDataNodeType.Server)
                {
                    var server = (RDSServer)node.RDSData;
                    server.Password = EncryptUtils.DecryptServerPassword(server);
                    dataManager.AddServer(server);
                }
                else
                {
                    DecryptPassword(dataManager, node);
                }
            }
        }
예제 #5
0
        private void button1_Click(object sender, EventArgs e)
        {
            Model.ServerID      = Model.ServerID == Guid.Empty ? Guid.NewGuid() : Model.ServerID;
            Model.ServerName    = txtServerName.Text.Trim();
            Model.ServerAddress = txtServerAddress.Text.Trim();
            Model.UserName      = txtUserName.Text.Trim();
            Model.Password      = txtPassword.Text.Trim();
            Model.OpType        = rbtnWindows.Checked ? rbtnWindows.Text : rbtnLinux.Text;
            Model.LinkType      = rbtnRD.Checked ? rbtnRD.Text : rbtnSSH.Text;

            int serverPort = 0;

            if (!int.TryParse(txtServerPort.Text.Trim(), out serverPort))
            {
                MessageBox.Show("端口号应该是一个数字!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            Model.ServerPort = serverPort;

            if (string.IsNullOrWhiteSpace(Model.ServerName) ||
                string.IsNullOrWhiteSpace(Model.ServerAddress) ||
                string.IsNullOrWhiteSpace(Model.UserName) ||
                string.IsNullOrWhiteSpace(Model.Password) ||
                string.IsNullOrWhiteSpace(Model.OpType) ||
                string.IsNullOrWhiteSpace(Model.LinkType))
            {
                MessageBox.Show("请首先填写所有项目!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            RDSDataManager dataManager = new RDSDataManager();

            Model.Password = EncryptUtils.EncryptServerPassword(Model);
            dataManager.AddServer(Model);

            this.DialogResult = DialogResult.OK;
        }