内网防火墙禁用了默认 Windows 远程桌面的 3389 端口,这强使所有 Windows 服务器都修改了默认端口。虽然安全性上得到了加强,但也为管理增加了麻烦。
因为服务器的端口修改都是分头进行的,只有责任工程师知道。就算知道服务器的用户名和密码,在不知道远程桌面端口的情况下也只能通过批量扫描端口来确认。这个操作与黑客入侵时的路径是一致的,自己人增加了复杂度,黑客也同样麻烦。
另一种访问系统桌面的方式是使用超融合自带的虚拟终端,它能跳过网络直接访问服务器的原始桌面。相当于是给虚拟机接了显示器,通过本地登录的方式访问系统桌面。
出于资产梳理的需要,还是要再次查询 Windows 系统的远程桌面端口。此时是在系统内部进行查询,可以通过命令行查询:
C:> reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v PortNumber
此时查到的是一个16进制数,需要转成10进制。可以使用 python 交互模式进行转换,相当于使用计算器了:
最终显示远程桌面的端口为 65000 ,以上步骤稍微显得多了一点。我们直接在 Python 中查询注册表并打印远程桌面端口:
import winreg
def read_registry_key(hive, subkey, value_name):
try:
# 打开注册表键
with winreg.OpenKey(hive, subkey) as key:
# 读取键的值
value, _ = winreg.QueryValueEx(key, value_name)
return value
except FileNotFoundError:
print(f"指定的注册表键 '{subkey}' 未找到。")
except Exception as e:
print(f"发生错误: {e}")
# 示例用法
# HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp
hive = winreg.HKEY_LOCAL_MACHINE # 可以使用其他根键,如 HKEY_CURRENT_USER
subkey = r"SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" # 替换为您要查询的注册表路径
value_name = "PortNumber" # 替换为您要查询的值的名称
result = read_registry_key(hive, subkey, value_name)
if result is not None:
print(f"远程桌面的端口: {result}")
else:
print(f"未找到注册表键 '{subkey}' 中的值 '{value_name}'。")
input()
为了能在服务器中单独使用,可以将其用 pyinstaller 打包成 EXE 文件,这样就可以直接双击查询了:
查端口的问题解决了,如果要修改远程桌面端口怎么做?
可以使用注册表的导入功能修改注册表,将以下文件保存为 p3389.reg
Windows Registry Editor Version 5.00
[ ]
"PortNumber"=dword:00000d3d
使用 notepad 编辑,保存时选择保存类型为所有文件,文件名后缀为 reg
保存编码选:ANSI
如果是早期的 Windows,notepad 是不能选编码的,默认就是 ANSI 编码。
双击导入即可:
如果格式错误会报以下错:
注意文件第一行不要留空行,不然会报错。
导入成功后会提示:
如果需要修改端口,比如把 3389 改为其它端口。可以使用计算器进行进制转换,或者在 python 解析器中进行进制转换:
查询到16进制后,将上述注册表文件中的端口修改成对应端口即可。修改远程桌面端口需要重启服务器才能生效。
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。
原文始发于微信公众号(生有可恋):查询 Windows 远程桌面端口
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论