远程桌面 Rdp文件的生成

2023-05-16

最近由于项目需要,需要做一个rdp文件上成,然后可以直接连远程桌面的功能,在度娘和谷叔搜索一番,所得甚少。闲话少说,来点干货:

看看系统给提供的是啥样的

我们要关心得是 用户名和密码,其他参数可以慢慢了解,可是这个密码是怎么加密的呢?

使用的是一个win32里面一个叫crypt32.dll的CryptProtectData方法,好了,关键的时候来咯~~~~

 


 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        internal struct DATA_BLOB
        {
            public int cbData;

            public IntPtr pbData;
        }

        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
        internal struct CRYPTPROTECT_PROMPTSTRUCT
        {
            public int cbSize;

            public int dwPromptFlags;

            public IntPtr hwndApp;

            public string szPrompt;
        }
        [DllImport("crypt32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
        private static extern bool CryptProtectData(ref DATA_BLOB pDataIn, string szDataDescr, ref DATA_BLOB pOptionalEntropy, IntPtr pvReserved, ref CRYPTPROTECT_PROMPTSTRUCT pPromptStruct, int dwFlags, ref DATA_BLOB pDataOut);  

 

引用一下win32程序为我们生成密码。


 1  private static string Encrypt(string password)
 2         {
 3             byte[] bytes = Encoding.Unicode.GetBytes(password);
 4             DATA_BLOB dATA_BLOB = default(DATA_BLOB);
 5             DATA_BLOB dATA_BLOB2 = default(DATA_BLOB);
 6             DATA_BLOB dATA_BLOB3 = default(DATA_BLOB);
 7             dATA_BLOB.cbData = bytes.Length;
 8             dATA_BLOB.pbData = Marshal.AllocHGlobal(bytes.Length);
 9             Marshal.Copy(bytes, 0, dATA_BLOB.pbData, bytes.Length);
10             dATA_BLOB3.cbData = 0;
11             dATA_BLOB3.pbData = IntPtr.Zero;
12             dATA_BLOB2.cbData = 0;
13             dATA_BLOB2.pbData = IntPtr.Zero;
14             CRYPTPROTECT_PROMPTSTRUCT cRYPTPROTECT_PROMPTSTRUCT = new CRYPTPROTECT_PROMPTSTRUCT
15             {
16                 cbSize = Marshal.SizeOf(typeof(CRYPTPROTECT_PROMPTSTRUCT)),
17                 dwPromptFlags = 0,
18                 hwndApp = IntPtr.Zero,
19                 szPrompt = null
20             };
21             if (CryptProtectData(ref dATA_BLOB, "psw", ref dATA_BLOB3, IntPtr.Zero, ref cRYPTPROTECT_PROMPTSTRUCT, 1, ref dATA_BLOB2))
22             {
23                 if (IntPtr.Zero != dATA_BLOB.pbData)
24                 {
25                     Marshal.FreeHGlobal(dATA_BLOB.pbData);
26                 }
27                 if (IntPtr.Zero != dATA_BLOB3.pbData)
28                 {
29                     Marshal.FreeHGlobal(dATA_BLOB3.pbData);
30                 }
31                 byte[] array = new byte[dATA_BLOB2.cbData];
32                 Marshal.Copy(dATA_BLOB2.pbData, array, 0, dATA_BLOB2.cbData);
33                 return BitConverter.ToString(array).Replace("-", string.Empty);
34             }
35             return string.Empty;
36 
37         }  

有密码了,替换掉开始另存为的文件里的密码,我们自己的rdp文件就有咯!

附一个文件内容方法


 private static void rdpProfile(string filename, string address, string username, string password, string colordepth)
        {
            if (File.Exists(filename))
            {
                File.Delete(filename);
            }
            using (StreamWriter streamWriter = new StreamWriter(filename, true))
            {
                streamWriter.WriteLine("screen mode id:i:2");
                streamWriter.WriteLine("desktopwidth:i:0");
                streamWriter.WriteLine("desktopheight:i:0");
                streamWriter.WriteLine("session bpp:i:" + colordepth);
                streamWriter.WriteLine("winposstr:s:0,1,0,0,1234,792");
                streamWriter.WriteLine("compression:i:1");
                streamWriter.WriteLine("keyboardhook:i:2");
                streamWriter.WriteLine("audiocapturemode:i:0");
                streamWriter.WriteLine("videoplaybackmode:i:1");
                streamWriter.WriteLine("connection type:i:6");
                streamWriter.WriteLine("displayconnectionbar:i:1");
                streamWriter.WriteLine("disable wallpaper:i:1");
                streamWriter.WriteLine("allow font smoothing:i:1");
                streamWriter.WriteLine("allow desktop composition:i:1");
                streamWriter.WriteLine("disable full window drag:i:1");
                streamWriter.WriteLine("disable menu anims:i:1");
                streamWriter.WriteLine("disable themes:i:1");
                streamWriter.WriteLine("disable cursor setting:i:0");
                streamWriter.WriteLine("bitmapcachepersistenable:i:0");
                streamWriter.WriteLine("full address:s:" + address);
                streamWriter.WriteLine("audiomode:i:0");
                streamWriter.WriteLine("redirectprinters:i:0");
                streamWriter.WriteLine("redirectcomports:i:0");
                streamWriter.WriteLine("redirectsmartcards:i:0");
                streamWriter.WriteLine("redirectclipboard:i:1");
                streamWriter.WriteLine("redirectposdevices:i:0");
                streamWriter.WriteLine("redirectdirectx:i:1");
                streamWriter.WriteLine("drivestoredirect:s:");
                streamWriter.WriteLine("autoreconnection enabled:i:1");
                streamWriter.WriteLine("authentication level:i:2");
                streamWriter.WriteLine("prompt for credentials:i:0");
                streamWriter.WriteLine("negotiate security layer:i:1");
                streamWriter.WriteLine("remoteapplicationmode:i:0");
                streamWriter.WriteLine("alternate shell:s:");
                streamWriter.WriteLine("shell working directory:s:");
                streamWriter.WriteLine("gatewayhostname:s:");
                streamWriter.WriteLine("gatewayusagemethod:i:4");
                streamWriter.WriteLine("gatewaycredentialssource:i:4");
                streamWriter.WriteLine("gatewayprofileusagemethod:i:0");
                streamWriter.WriteLine("promptcredentialonce:i:1");
                streamWriter.WriteLine("use redirection server name:i:0");
                streamWriter.WriteLine("use multimon:i:0");
                if (!string.IsNullOrEmpty(username))
                {
                    streamWriter.WriteLine("username:s:" + username);
                }
                if (!string.IsNullOrEmpty(password))
                {
                    streamWriter.WriteLine("password 51:b:" + password);
                }
            }
        }  
View Code

 

转载于:https://www.cnblogs.com/ypyhy/p/6113358.html

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

远程桌面 Rdp文件的生成 的相关文章

  • win10远程桌面AlmaLinux9.1,用xrdp

    win10远程桌面AlmaLinux9 1 用xrdp 默认 yum 和 dnf 都下载不到 xrdp 要先 install epel release 安装EPEL源 span class token function sudo span
  • Rocky9.1安装xrdp远程桌面 230315

    Rocky9 1安装xrdp远程桌面 230315 要先 install epel release 安装EPEL源 span class token function sudo span yum span class token funct
  • Ubuntu18.04.4 安装xrdp 远程桌面

    一 系统要求 ubuntu18的桌面版系统 二 开启远程ssh服务 sudo apt get install openssh server y sudo systemctl start sshd 查看服务是否启动 netstat lnp g
  • 远程桌面--某些设置由你的组织管理

    解决某些设置由你的组织管理 在cmd的运行里输入 gpedit msc 选择 计算机配置 gt 选择 管理模块 gt 选择 Windows组件 gt 选择 远程桌面服务 gt 选择 远程 桌面会话主机 gt 选择 连接 gt 右击 允许用户
  • 【vnc远程桌面】未联网状态下使用离线包配置vnc

    系统为ubuntu18 04 amd64版本 本教程使用vino配置远程服务器 首先 xff0c 离线安装vino包后远程传输给待控制服务器 xff1a sudo apt update sudo apt get download apt c
  • 开启rdp_远程桌面协议服务(RDP)

    远程桌面开启并使用步骤 xff1a 1 首先将配置网络 xff0c 并实现客户机与服务器可以互通 客户机与服务器可以ping通 2 服务器开启允许被远程控制 xff1a 桌面右键属性 远程设置 选择允许 确定 开启RDP 开启后 xff0c
  • Linux服务配置 配置VNC远程桌面

    一 VNC简介 VNC Virtual Network Console 是虚拟网络控制台的缩写 它 是一款优秀的远程控制工具软件 xff0c 由著名的 AT amp T 的欧洲研究实验室开发的 VNC 是在基于 UNIX 和 Linux 操
  • 【服务器】远程连接选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 想法更
  • 树莓派4B安装Ubuntu18.04 + vnc远程桌面

    在实验室对写程序的欲望越来越低下的时候 xff0c 学长给了一个树莓派4B xff0c 让我研究一下 xff0c 因为机器人的上位机就靠它运行 一说新东西我就来劲了 xff0c 可惜实验室里没有SD卡 xff08 旧的断掉了 xff09 x
  • 树莓派4B +远程SSH+远程桌面

    一 有线SSH连接树莓派 我的实验环境是笔记本电脑 43 树莓派4B 具体步骤为 xff1a 1 电脑连接上无线网络 xff0c 将电脑网线连接树莓派 2 打开如下界面 3 双击WLAN gt gt 点击属性 gt gt 再点击共享 选择以
  • TX2 NX核心板-VNC远程桌面

    文章目录 前言一 前期准备二 TX2端安装VNC1 安装vino2 使能VNC服务3 编辑org gnome4 设置为Gnome编译模式5 设置VNC 登录密码6 配置本地网络地址为静态7 开机自启VNC 二 WINDOWS端安装VNC参考
  • MobaXterm通过SSH隧道配置RDP端口转发

    MobaXterm通过SSH隧道配置RDP端口转发 2019年9月29日星期日 版本1 0 目的 解决校园网跨网段 不能远程访问 微软RDP协议 客户端mstsc 默认端口 3389 服务器的问题 1 首先在服务器 Ubuntu 16 04
  • 南溪的远程桌面软件使用笔记

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

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 Ubuntu 18 04 上安装和配置
  • 神州网信政府版win10远程

    今天去客户公司部署系统 本来想着开好远程后马上回来远程操作 哪知道客户服务器安装的是 神州网信政府版win10远程 遇到一堆问题 处理了半天 记录下 1 参考 Windows10神州网信版的远程桌面开启 神州网信 远程桌面 dawn的博客
  • 如何在 CentOS 8 上安装 Xrdp 服务器(远程桌面)

    Xrdp 是 Microsoft 远程桌面协议 RDP 的开源实现 允许您以图形方式控制远程系统 使用 RDP 您可以登录到远程计算机并创建真实的桌面会话 就像登录到本地计算机一样 本教程介绍如何在 CentOS 8 上安装和配置 Xrdp
  • 如何在Linux主机上运行Windows docker容器?

    我们可以在 Linux 主机上运行 Windows docker 容器吗 还可以从同一网络中的其他 Windows 计算机通过 RDP 访问 Linux 上托管的 Windows docker 容器吗 今天 这显然是可能的 我最近使用 QE
  • 使用 Python 实现 RDP 连接自动化

    我们可以使用 python 脚本自动化远程桌面连接吗 作为工作的一部分 我需要手动打开许多 RDP 连接 从 IP 列表中 代码为列表中的每个 IP 打开 RDP 会话 None
  • 通过 RDP 的 Azure VM 仅显示黑屏和 cmd

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

随机推荐

  • 流程审批设计

    这是我的项目中使用的一套关于工作流和审批流的配置 xff0c 算是比较简单的 xff0c 这里只写其中比较核心的思路 xff0c 算是对之前工作的一个技术总结吧 以下是数据库设计 xff1b 后面再跟据实例分析每个表的作用 首先是流程配置表
  • 文件流写到ftp服务器,采用ftpclient.storeFile(String, Inputstream)将流写到服务器,没报错但服务器上没有文件,这是怎么回事...

    满意答案 qingjixiaolan 推荐于 2018 04 27 创建一个FtpClient对象 FTPClient ftpClient 61 new FTPClient 上传文件 读取本地文件 file xff1a 需要上传的文件地址
  • TSA not available (for R version 3.6.3) 解决方法

    安装包 全部安装包路径 xff1a https cran r project org src contrib Archive TSA下载路径 xff1a https cran r project org src contrib Archiv
  • android banner设置图片比例,Banner基本使用 2.1.0

    Step 1 依赖banner Gradle dependencies compile 39 com youth banner banner 2 1 0 39 Step 2 添加权限到你的 AndroidManifest xml Step
  • int,bool,字符串知识总结

    一 xff1a int整数类型 bool类型 一 xff1a int类型 xff0c 整数 1 xff0c bit length 返回一个数的二进制长度 a 61 5 0 1 10 11 100 101 print a bit length
  • postgresql从库搭建

    1 复制类型 PostgreSQL支持物理复制 xff08 流复制 xff09 及逻辑复制2种 通过流复制技术 xff0c 可以从实例级复制出一个与主库一模一样的实例级的从库 流复制同步方式有同步 异步两种 另一种复制方式为逻辑复制 xff
  • NotePad 快捷键

    转载于 https www cnblogs com pxzbky p 11567346 html
  • 网络通信原理和过程

    当时查http协议的时候了解的一些网络底层的知识 xff0c 感觉挺有意思的 xff0c 就把多位博主的资料整料梳理出来整理到一堆 xff0c 就当是一篇科普文吧 一 网络的五层模型 如何分层有不同的模型 xff0c 有的模型分七层 xff
  • Springboot读取本地图片并显示

    在application xml中配置url访问路径和本地图片路径 xff1a 配置 url中访问路径 xff0c 这里为 xff1a localhost 8080 image 配置 本地图片保存的路径 xff0c image会根据D up
  • vue路由跳转到指定页面

    1 this router push name 39 Home 39 2 this router push path 39 view 39 3 this router replace name 39 Home 39 4 this route
  • Post方式提交,通过上下文HttpContext,Request[""]获取

    问题场景如下 xff1a 在项目的一般处理程序中 xff0c 所有方法都是通过 context Request 34 参数名 34 ToString 来获取参数的值 如果我直接将参数追加到URL后面 xff0c 直接Post xff0c 后
  • maven项目添加mysql的链接驱动

    Maven项目中添加JDBC驱动 在pom xml配置文件中添加 lt dependency gt lt groupId gt mysql lt groupId gt lt artifactId gt mysql connector jav
  • 2.5年, 从0到阿里

    从来没有想到自己的求职之路会这么顺利 第一次投阿里就拿到了offer 以前一直都是做好被刷的准备的 3月31号晚上收到了来自阿里的正式offer 签下录取意向书 粗略算了一下 从2012年9月份正式入学进入计算机系到2015年3月签下阿里o
  • 我的2013—弃金融IT,从SAP业务

    我的2013 xff0c 是动荡的一年 xff1b 这一年 xff0c 我跳巢了 xff1b 这一年 xff0c 我换行业了 xff1b 这一年 xff0c 我离开了生活5年的长春 xff0c 来到成都 xff1b 这一年 xff0c 我放
  • [转载]LazyWriter(惰性写入器) 进程的作用

    Q What Does the LazyWriter Process Do The LazyWriter process is a periodic process that checks the status of BPool buffe
  • Python——爬取百度百科关键词1000个相关网页

    Python简单爬虫 爬取百度百科关键词1000个相关网页 标题和简介 网站爬虫由浅入深 xff1a 慢慢来 分析 xff1a 链接的URL分析 xff1a 数据格式 xff1a 爬虫基本架构模型 xff1a 本爬虫架构 xff1a 源代码
  • python2:TypeError: must be string without null bytes, not str

    Stack Overflow QuestionsDeveloper JobsTagsUsers Log In Sign Up Join Stack Overflow to learn share knowledge and build yo
  • 读书笔记之二—大泥球和顶级的设计

    大泥球 世界上最常用的软件体系结构 xff0c 一个经久不衰的传奇 大泥球是一件很神奇的事情 xff0c 阅读文章里列举了大泥球出现的一系列原因 xff0c 但是我们貌似很少在其他的领域看到这么不专业的专业行为 xff0c 从这个角度看看
  • 类的命名规则

    类定义的命名规则 xff0c 是命名空间 xff08 应用程序名称 xff09 指向应用程序的app文件夹 xff0c 而类名除了命名空间和类名中最后部分之外 xff0c 其他的都是文件夹的名称 类名的最后部分加上 js就是类的文件名 xf
  • 远程桌面 Rdp文件的生成

    最近由于项目需要 xff0c 需要做一个rdp文件上成 xff0c 然后可以直接连远程桌面的功能 xff0c 在度娘和谷叔搜索一番 xff0c 所得甚少 闲话少说 xff0c 来点干货 xff1a 看看系统给提供的是啥样的 我们要关心得是