远程桌面,RDP文件密码加密、解密算法(C#)

2023-05-16

背景:由于项目需要,使用RDP文件来远程登录,需要实现点击rdp文件就可以自动连接远程桌面,并且实现自动登录功能!自动登录!自动登录!


自动登录:密码需要经过加密,本文的核心!!!废话少说,看代码!


1、首先添加引用是必须的!

      using System;
      using System.Security.Cryptography;


2、核心算法

    using System;
    using System.Security.Cryptography;
     static byte[] s_aditionalEntropy = null;         //附加的加密因子,自定义

        private void test()
        {
            string plainText = "qweR+-*yuioP0";
            byte[] secret = Encoding.Unicode.GetBytes(plainText);
            byte[] encryptedSecret = Protect(secret);
            Console.WriteLine("The encrypted byte array is:");
            string res = string.Empty;
            foreach(byte b in encryptedSecret)
            {
                res += b.ToString("X2");                          //炒鸡坑爹的,转换16进制的一定要用2位,不然就像我一样被坑了半个多月
            }
            
            Console.WriteLine("加密之后的密码:" + res);
            PrintValues(encryptedSecret);


            // Decrypt the data and store in a byte array.
            byte[] originalData = Unprotect(encryptedSecret);
            Console.WriteLine("{0}The original data is:", Environment.NewLine);
            string str = Encoding.Default.GetString(originalData);
            Console.WriteLine("解密之后的密码: " + str);
            PrintValues(originalData);
        }

        //加密方法
        public static byte[] Protect(byte[] data)
        {
            try
            {
                // Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
                //  only by the same current user.
                return ProtectedData.Protect(data, s_aditionalEntropy, DataProtectionScope.LocalMachine);
            }
            catch (CryptographicException e)
            {
                Console.WriteLine("Data was not encrypted. An error occurred.");
                Console.WriteLine(e.ToString());
                return null;
            }
        }

        //解密方法
        public static byte[] Unprotect(byte[] data)
        {
            try
            {
                //Decrypt the data using DataProtectionScope.CurrentUser.
                return ProtectedData.Unprotect(data, s_aditionalEntropy, DataProtectionScope.LocalMachine);
            }
            catch (CryptographicException e)
            {
                Console.WriteLine("Data was not decrypted. An error occurred.");
                Console.WriteLine(e.ToString());
                return null;
            }
        }


        public static void PrintValues(Byte[] myArr)
        {
            foreach (Byte i in myArr)
            {
                Console.Write("\t{0}", i);
            }
            Console.WriteLine();
        }

3、总结!

     生成的字节数组直接转换成16进制输出,添加到rdp文件的密码里面就会解析不出来。

     坑爹的转换成16进制时需要占位2位,不然就出错,弄了N久才搞定,发文共勉!转载请注明出处,谢谢!


4、附RDP文件的一些注释(转)

screen mode id:i:1
desktopwidth:i:1280
desktopheight:i:750
session bpp:i:24
winposstr:s:2,3,188,8,1062,721
full address:s:MyServer   //服务器地址 一般填IP地址
compression:i:1
keyboardhook:i:2
audiomode:i:0
redirectdrives:i:0
redirectprinters:i:0
redirectcomports:i:0
redirectsmartcards:i:0
displayconnectionbar:i:1
autoreconnection enabled:i:1 
username:s:MyUserName  //用户名
domain:s:MyDomain   //域名 可以不填。
alternate shell:s:
shell working directory:s:
password 51:b:01000000D08C9DDF0115D1118C7A00C04FC297EB0100000052A9E191EA75A948B359790578C9371A0000000008000000700073007700000003660000A8000000100000000A1DCCD2E50775CA25EC3857164B34DC0000000004800000A000000010000000FCE1A645B9B61AA450946BB6F955058108020000D83591CA47562D6DDAA689F050AE145039EBE22E00D1D3AEAA98373C7B63C3E8E7149072DF989EA43EFCE20513AD3D27B11BE7F17066A688E1DCE828AF85460AAC327B38E90776DB962888E4393D19637578984B19A187AAD95F6D2726ADE7DD315FF56C15FF5B3031014EDDCC3C24D1B81779AFDB006EE575F5BEFB8D2D2138D9D9D642BBB251CC5ED7226968764856EC660A646BACE748A13D6002A9A537AA70710615650B9387EED66DE28BD57B304BBDD7B581B943DA628EB0289E30A8BA784B76F7885BECCAB4FEF7820E97EE3C6E036EEAF6EAA669288DF2FCACC9BEC045C907EBBDE87AFB8CC6B07A600BD63AC891B61D95C2265DD9FD5E635D61BFBF5EDC28311375066611C610FB533D64515B643C82F57D9B183B05C156D91BC0974D38E546022B139E82452E6F1EDF76E52F732C3904E5E433F8F3D488DB0698427DBB0791A9F207F8CB6654CB8410BAF4A59C4F9E821E589ABC1E6E6E1D432181B690408F6884FE1007895A4D26D4A5A2C7458EE747DA35D44AC9FB08AB5477EA3E7CCDB3E37EE20FAFD0D0CF9584E420598B7003B347943AC28048F45E0FD21AD08148FFADCE0E7877219259A7BE722FFAE845A429BA2CF0A71F2D19EA7495530FABDB5106E8D404A38A7E6394C38457640EA7398C5D55F0C4D342CC6A39C77E10A2A5145AEA40B14F5C7C3760334D83C9BE748383FADE231248537353817D51F7B44F61B406ABC61400000071C354139F458B02D978015F785B97F7F6B307380   //这么一长串就是密码了,“password 51:b:”后面改为你自己生成的密码串
disable wallpaper:i:1
disable full window drag:i:1
disable menu anims:i:1
disable themes:i:0
disable cursor setting:i:0
bitmapcachepersistenable:i:1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

远程桌面,RDP文件密码加密、解密算法(C#) 的相关文章

  • Windows远程连接Ubuntu (远程桌面和XDMCP)

    从 RHEL CentOS 转过来 xff0c 几乎所有的编码都在 windows 下 xff0c 不习惯原生 linux 开发 总结了远程连接的两种方式 xff0c 一种用 Windows 自带的 rdp 协议 xff0c 另外一种用 x
  • 远程桌面--某些设置由你的组织管理

    解决某些设置由你的组织管理 在cmd的运行里输入 gpedit msc 选择 计算机配置 gt 选择 管理模块 gt 选择 Windows组件 gt 选择 远程桌面服务 gt 选择 远程 桌面会话主机 gt 选择 连接 gt 右击 允许用户
  • 树莓派4B +远程SSH+远程桌面

    一 有线SSH连接树莓派 我的实验环境是笔记本电脑 43 树莓派4B 具体步骤为 xff1a 1 电脑连接上无线网络 xff0c 将电脑网线连接树莓派 2 打开如下界面 3 双击WLAN gt gt 点击属性 gt gt 再点击共享 选择以
  • 开启rdp_远程桌面协议服务(RDP)

    远程桌面开启并使用步骤 xff1a 1 首先将配置网络 xff0c 并实现客户机与服务器可以互通 客户机与服务器可以ping通 2 服务器开启允许被远程控制 xff1a 桌面右键属性 远程设置 选择允许 确定 开启RDP 开启后 xff0c
  • 【服务器】远程连接选SSH(PUTTY、Finalshell、WinSCP) 还是 远程桌面(RDP、VNC、Xmanager)

    如果你手上没有实体服务器 xff0c 那就可能需要租用服务器提供商的各种类型的服务器 当租用服务器时 xff0c 不可避免的一个问题就是服务器的远程连接 通常 我们会使用SSH协议进行连接 xff0c 对应的软件有Finalshell PU
  • ubuntu远程桌面

    最近一直在用putty 43 pagent远程登录ubuntu xff0c 用命令行来操作和配置Ubuntu系统 不过老是觉得缺少了什么 xff0c 觉得图形界面也不错 xff0c 特别是安装了ubuntu joES以后 xff0c 想法更
  • 打造基于 VNC 的 Ubuntu 20.04 的远程桌面

    VNC server B站视频 打造基于 VNC 的Ubuntu 20 04远程桌面 https www bilibili com video BV1nV41147dt spm id from 61 333 999 0 0 1 安装 VNC
  • VMware下,私有云平台的配置(CentOS 7系统,含桌面)

    文章目录 实验环境 Windows系统 VMWare 15 1 0 CentOS 7 x86 64 Minimal 1810 iso映像文件 1 安装CentOS系统 2 实现远程桌面连接 实验环境 Windows系统 VMWare 15
  • 远程计算机已加入AAD凭据不工作

    解决方法 计算机需要加入AAD Azure Active Directory 设置 账户 其他用户 连接工作或学校用户 连接 在下方的 替代操作 中选择 将此设备加入 Azure Active Directory 输入用户名和密码 点击加入
  • Windows10访问Ubuntu子系统(WSL)的桌面环境

    Windows10访问Ubuntu子系统 WSL 的桌面环境 文章目录 Windows10访问Ubuntu子系统 WSL 的桌面环境 Why Linux Why WSL 开启WSL Ubuntu换源 更新与升级 安装桌面环境xubuntu
  • win10远程桌面连接服务器接示内部错误。

    搜出来的解决方案大多是让重置远程设置 这也是微软官方的解决方 案 如下 搜索框中输入 CMD 右键点击命令提示符 选择以管理员身份运行 在管理员运行的命令提示符窗口中执行以下的命令 netsh winsoc reset 奇怪的是我的电脑 重
  • win10 远程桌面服务不见了解决办法

    由于员工操作错误 导致某杀毒软件把remote desktop services服务整个搞不见了 其他服务什么的都在 应该开的都开了 查了N多网上CTRL V后 发现注册表中termservice消失了 然后把其他版本相同的win10的te
  • 南溪的远程桌面软件使用笔记

    1 介绍 远程桌面软件可以让我们远程操作另一个主机的用户界面 Note TeamViewer付费一次后 就会强制自动续费一年 如果取消订阅需要提前续订日期前至少28天 28天的提前期实在太长了 TeamViewer这个公司十分黑心 以后注意
  • winserver2008 服务器添加新用户及设置远程桌面管理

    winserver2008 服务器添加新用户及设置远程桌面管理 1 点击 开始 管理工具 计算机管理 本地用户和组 2 右击 用户 执行 新用户 命令 如图 输人用户信息 在 新用户 对话框中 输人相应信息 3 单击 创建 按钮完成创建 而
  • RDPSession ConnectToClient 意外终止

    我已经成功创建了一个桌面共享解决方案 其中 RDPViewer 连接到 RDPSession 这一切都很顺利 然而 现在我正在尝试相反的方法 使用 RDPViewer 的 StartReverseConnectListener 方法和 RD
  • 确定 Java 应用程序是否正在通过 RDP 会话运行?

    如何检测我的 Swing 应用程序是否正在从 Windows RDP 会话运行 仅使用 Java 的解决方案是首选 但该应用程序保证可以在 Windows 上运行 所以我可以接受 我认为您必须调用本机 Windows 库才能实现此目的 尝试
  • 使用 Python 的 P2P RDP

    我想用 Python 编写一个简单的 P2P RDP 客户端和服务器 这就是我绘制草图的方式 短时间截屏 压缩它们并发送到服务器应用程序 从服务器应用程序获取键盘 鼠标事件 将它们序列化并发送给客户端 客户端将反序列化它们并使用 SendI
  • 生成 RDP 配置文件问题

    edit弄清楚了 我没有尝试通过 mstsc exe file rdp 启动它 而是启动 file rdp 并且它工作得很好 end edit 好的 我正在开发一个 C 程序 其中一部分是生成自己的 rdp 文件 该文件将自动连接生成时提供
  • 通过 RDP 的 Azure VM 仅显示黑屏和 cmd

    我有一个 Azure 虚拟机 当我通过 RDP 登录时 我只能看到黑屏 并且 CMD 控制台已打开 难道没有探索者吗 VM OS spec Operating system Windows Publisher MicrosoftWindow
  • 通过 RDP 使用 WPF 的 Direct2d

    我正在开发一个 C 应用程序 它使用 SharpDx 通过 Direct2d 渲染地图 该地图与 D3DImage 一起显示在 WPF 主机上 在本地计算机上 一切正常 但当我尝试通过远程桌面连接时 D3DImage 会丢失其后备缓冲区 并

随机推荐

  • 100个python算法超详细讲解:统计学生成绩

    完整版下载 超详细Python算法案例讲解100例 zip Python文档类资源 CSDN下载 1 xff0e 问题描述 有5个学生 xff0c 每个学生有三门课程的成绩需要统计 要求从键盘输入学生的学号 姓名以及三门课程 的成绩 xff
  • apt update、apt upgrade 和 apt dist-upgrade 的区别

    1 root 64 kali apt update apt update 的作用是从 etc apt sources list文件中定义的源中获取的最新的软件包列表 即运行 apt update 并没有更新软件 xff0c 而是相当 win
  • C++服务器开发100个知识要点C++RAII惯用法

    最初的写法 在笔者刚学习服务器开发的时候 xff0c 公司给笔者安排了一个练习 xff1a 在 Windows 系统上写一个 C 43 43 程序 xff0c 用该程序实现一个简单的服务 xff0c 在客户端连接上来时 xff0c 给客户端
  • 人工智能知识全面讲解: 人脸识别技术

    早在40年前 xff0c 图像识别领域就有很多关于人脸识别的研究 但是在当时 xff0c 传统算法在普通图像识别中已经很难取得良好的识别效果 xff0c 更何况还要从人脸 中提取更加细微的特征 在很长一段时间里 xff0c 人脸识别主要存在
  • Redis入门完整教程:缓存的收益和成本

    图11 1左侧为客户端直接调用存储层的架构 xff0c 右侧为比较典型的缓存层 43 存储层架构 xff0c 下面分析一下缓存加入后带来的收益和成本 收益如下 xff1a 加速读写 xff1a 因为缓存通常都是全内存的 xff08 例如Re
  • Linux命令+shell脚本大全:vim 基础

    免费教程推荐 xff1a python C 43 43 Java JS Rust Go语言入门完全手册 xff08 6合1 xff09 zip Python文档类资源 CSDN下载 vim编辑器在内存缓冲区中处理数据 只要键入 vim 命令
  • Python数据结构+算法全面讲解:Python 基础

    Python 基础 本节将复习 Python 并且为前一节提到的思想提供更详细的例子 如果你刚开始学习 Python 或者觉得自己需要更多的信息 建议你查看本书结尾列出的 Python 资源 本节的目标是帮助你 复习 Python并且强化一
  • Python数据结构+算法全面讲解:定义函数、定义类

    之前的过程抽象例子调用了 Python数学模块中的 sqrt 函数来计算平方根 通常来说 可以 通过定义函数来隐藏任何计算的细节 函数的定义需要一个函数名 一系列参数以及一个函数体 函数也可以显式地返回一个值 例如 下面定义的简单函数会返回
  • 操作系统-进程

    进程是操作系统中资源分配和调度的基本单位 xff0c 而线程是进程的组成部分 xff0c 它代表了一条顺序的执行流 1 进程的出现 目的 xff1a 为了使多个程序能并发执行 xff0c 以提高资源的利用率和系统的吞吐量 2 进程组成 进程
  • ubuntu系统中查看本机cpu和内存信息的命令和用法(分色排版)

    https zhidao baidu com question 192966322 html 写出ubuntu linux系统中查看本机cpu和内存信息的命令和用法 以及如何解读这些命令 ubuntu系统中查看本机cpu和内存信息的命令和用
  • 面试题:单片机裸机和RTOS开发过程中,如何保证全局变量在中断和主循环中读写的正确性

    这个面试题时考察的关键字volatile 临界区 xff0c 原子操作和锁的概念 xff0c 因此首先需要搞清楚这几个知识点以及使用方法 1 关键字volatile 关键字volatile时告诉编译器 xff0c 被关键字volatile修
  • 丰润达为天津艺洲彭泽大酒店打造酒店安防监控改造项目

    衡量一个酒店是否安全的一个很重要的标准 xff0c 就是酒店的各个角落是否都布有监控设备 要知道 xff0c 很多受害人被侵害 xff0c 都是发生在监控看不到的角落 可以说监控就像是一双锐利的眼睛 xff0c 时时注视着坏蛋 xff0c
  • 对不起,这个官司我不服!数据隐私保护是阿里云的生命线

    摘要 xff1a 对阿里云来说 xff0c 保护用户数据隐私一直是我们坚守的生命线 在这次事件处理中 xff0c 保护数据隐私是我们的第一原则 阿里云认为 xff0c 作为云服务器提供商 xff0c 阿里云无权审查任何用户数据 只有收到司法
  • CentOS中添加Swap

    1 检查 Swap 空间在设置 Swap 文件之前 xff0c 有必要先检查一下系统里有没有既存的 Swap 文件 运行以下命令 xff1a 1 swapon s 如果返回的信息概要是空的 xff0c 则表示 Swap 文件不存在 2 检查
  • 优秀程序员的故事

    A君默默的工作了3年 xff0c 从项目初立 xff0c 到遍地开花 工作不忙 xff0c 工资没长 新领导来了 xff0c 下个版本重新开发 xff0c A君继续维护老版本 新招了一批人 xff0c 加班加点干了半年多 直到版本发布 xf
  • android studio 控制台输出乱码

    问题 android studio 控制台输出乱码 详细问题 解决方案 双击Shift 全局查找快捷键 xff0c 输入vmoption xff0c 选择Edit Custom CM Options 即 如果之前没有配置过 xff0c 会弹
  • Linux下使用VSCode,GCC,OpenOCD实现STM32一键编译烧录调试(CMake篇)

    Linux下使用VSCode开发STM32 xff08 二 xff09 一 开发工具安装二 测试工程简介三 CMake工具1 CMakeLists txt2 生成Makefile3 make编译 四 json脚本实现一键编译烧录调试1 la
  • CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:85 (list)

    Ubuntu 18 4 安装opencv 2 4 10时遇到如下问题 xff1a CMake Error at cmake OpenCVDetectCXXCompiler cmake 85 list list GET given empty
  • Camera-IMU标定工具Kalibr的编译

    关于catkin make过程中下载suitesparse过久甚至失败的问题 xff1a 在安装kalibr时的suitesprse库时 xff0c 对应的cmakelists中会通过wget 下载压缩包 xff0c 若无法下载则整个kal
  • 远程桌面,RDP文件密码加密、解密算法(C#)

    背景 xff1a 由于项目需要 xff0c 使用RDP文件来远程登录 xff0c 需要实现点击rdp文件就可以自动连接远程桌面 xff0c 并且实现自动登录功能 xff01 自动登录 xff01 自动登录 xff01 自动登录 xff1a