mstsc保存用户名和密码,实现自动登录远程桌面
mstsc保存用户名和密码,实现自动登录远程桌面
https://blog.csdn.net/qq_23587541/article/details/82942365
MSTSC参数说明
首先可以使用mstsc /?来查看关于mstsc的参数说明
根据上述的命令说明,我这里实现的bat文件为
mstsc C:/a.rdp /console /v: xxx.xxx.xxx.xxx:3389
rdp文件生成方法
(下面转载出自https://www.cnblogs.com/ypyhy/p/6113358.html)
最近由于项目需要,需要做一个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程序为我们生成密码。
private static string Encrypt(string password)
{
byte[] bytes = Encoding.Unicode.GetBytes(password);
DATA_BLOB dATA_BLOB = default(DATA_BLOB);
DATA_BLOB dATA_BLOB2 = default(DATA_BLOB);
DATA_BLOB dATA_BLOB3 = default(DATA_BLOB);
dATA_BLOB.cbData = bytes.Length;
dATA_BLOB.pbData = Marshal.AllocHGlobal(bytes.Length);
Marshal.Copy(bytes, 0, dATA_BLOB.pbData, bytes.Length);
dATA_BLOB3.cbData = 0;
dATA_BLOB3.pbData = IntPtr.Zero;
dATA_BLOB2.cbData = 0;
dATA_BLOB2.pbData = IntPtr.Zero;
CRYPTPROTECT_PROMPTSTRUCT cRYPTPROTECT_PROMPTSTRUCT = new CRYPTPROTECT_PROMPTSTRUCT
{
cbSize = Marshal.SizeOf(typeof(CRYPTPROTECT_PROMPTSTRUCT)),
dwPromptFlags = 0,
hwndApp = IntPtr.Zero,
szPrompt = null
};
if (CryptProtectData(ref dATA_BLOB, "psw", ref dATA_BLOB3, IntPtr.Zero, ref cRYPTPROTECT_PROMPTSTRUCT, 1, ref dATA_BLOB2))
{
if (IntPtr.Zero != dATA_BLOB.pbData)
{
Marshal.FreeHGlobal(dATA_BLOB.pbData);
}
if (IntPtr.Zero != dATA_BLOB3.pbData)
{
Marshal.FreeHGlobal(dATA_BLOB3.pbData);
}
byte[] array = new byte[dATA_BLOB2.cbData];
Marshal.Copy(dATA_BLOB2.pbData, array, 0, dATA_BLOB2.cbData);
return BitConverter.ToString(array).Replace("-", string.Empty);
}
return string.Empty;
}
有密码了,替换掉开始另存为的文件里的密码,我们自己的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);
}
}
}
————————————————————————————————————————————————————————————————————————————————————————————————————————————————
更改mstsc远程端口方法
Windows 系统中的远程终端服务是一项功能非常强大的服务,同时也成了入侵者长驻主机的通道,入侵者可以利用一些手段得到管理员账号和密码并入侵主机。下面,我们来看看如何通过修改默认端口,防范黑客入侵。
众所周知,远程终端服务基于端口3389。入侵者一般先扫描主机开放端口,一旦发现其开放了3389端口,就会进行下一步的入侵,所以我们只需要修改该务默认端口就可以避开大多数入侵者的耳目。
步骤:
1、打开“开始→运行”,输入“regedit”,打开注册表,进入以下路径:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp,看见PortNamber值了吗?其默认值是3389,修改成所希望的端口即可,例如6111。
2、再打开
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentContro1Set\Control\Tenninal Server\WinStations\RDP\Tcp,将PortNumber的值(默认是3389)修改成端口6111。
3、修改完毕,重新启动电脑,以后远程登录的时候使用端口6111就可以了。
mstsc保存用户名和密码,实现自动登录远程桌面相关推荐
- WinXP登录时不用输入用户名和密码,自动登录系统
WinXP登录时不用输入用户名和密码,自动登录系统 单击"开始""运行",输入"rundll32 netplwiz.dll,UsersRunDll ...
- putty保存用户名和密码_使用PuTTY远程登录软件登录 Linux 实例
本文以 PuTTY 软件为例,介绍如何在 Windows 系统的本地电脑中使用远程登录软件登录 Linux 实例. 使用密码登录 下载 Windows 远程登录软件,即 PuTTY. PuTTY 的获 ...
- iOS中Keychain保存用户名和密码
摘要: 有用户就用用户名和密码,而现在的应用都少不了一个保存用户名和密码用于自动登录的功能,本文介绍使用iOS自带的Keychain方法保存用户名和密码. 说到保存用户名和密码,以前有用过本地的数据库 ...
- iOS 开发 -- 使用KeyChain保存用户名、密码并实现自动登录
一.前言 我的话,只是写了个keychain使用的工具类,让我们使用的时候可以直接调用接口,以求方便. 但是关于keychain的一些概念还有一些官方API我都不打算说的,当然你要看下面一些东西的话可 ...
- Web项目,要求:保存用户名和密码在Cookie中,下次登录不再重新输入
设计一个实现登录功能的Web项目,要求:保存用户名和密码在Cookie中,下次登录不再重新输入 var cookie = {};//设置 cookie.SetCookies=function(name ...
- 业务系统实现记住密码和自动登录功能
业务系统实现记住密码和自动登录功能 公司的业务系统本来是受域控的,用户不需要登录可以直接访问系统.当然,虽然不用人工登录,系统本身会读取电脑的用户名为登录标识,对系统操作权限和记录也是以电脑名.近段时 ...
- Android复习05【网络编程---WebView获取文章信息、保存用户名与密码、设置菜单样式、收藏文章列表】
2020-04-02-星期四[源码可私聊我,QQ:386335886] 写篇文章不容易,点个赞再走吧,求求了~ 目 录 网络访问-思维导图 玩Android网站---查看登录Cookie 适配器 ...
- Cookie实现用户登录记住密码,实现自动登录
什么是Cookie 在java是一个类,一对键和值组成,键值都是字符串类型,每个cookie只能保存一对键和值.每个cookie只能保存最大4K的数据 案列应用 保存用户名和密码在浏览器端,Cooki ...
- vue 记住密码下次自动登录
<span><input type="checkBox" name="adviceCheck" id="adviceCheck&qu ...
最新文章
- aida64内存稳定性测试_250元就能买到16GB内存 这背后究竟是道德的沦丧还是人性的扭曲?...
- 就业模拟试题_Net(答案)
- java 模板实现原理,Java Web 模板代码生成器的设计与实现详解
- 云服务器带宽如何计算,云服务器怎么选择带宽
- python io多路复用框架_python之IO多路复用
- php函数查询sprintf,PHPsprintf函数用例解析
- expdp 简单例子
- 卡巴斯基发现ATM病毒Skimmer改进版
- java项目启动失败的解决方案
- Datalogic得利捷发布Android企业级前沿应用程序——OEMConfig, 并推出2019中国零售博览会展品系列
- emu8086:如何把数组里的值全部变为FFFF
- 用优盘装系统看不到计算机本身的硬盘,如果U盘安装系统找不到硬盘怎么办
- 机器学习虾扯淡之线性回归No.39
- WPF—TimeLine类
- 根据从数据库中获取到的值控制按钮被选中
- 好看的个人网站源码_新手想建个人网站,都要注意哪些关于自助建站源码的坑?...
- 去除眼袋(画笔涂抹法)
- 视频剪辑的实用技巧快速分享
- 管理小故事精髓 100例(转) 1
- UWB室内定位技术有什么风险呢?