Code Monkey home page Code Monkey logo

ms-rdp-nat-traverse's Introduction

微软远程控制 内网穿透助手


说明

  • 一般来说,同在一个局域网下的两个Windows计算机可以正常使用微软的远程桌面实现远程登录。但是,当两台计算机网络环境相对复杂,尤其是不在同一局域网下,就需要使用别的手段来实现访问了;
  • 本方案就是使用SSH连接到远程代理服务器,建立SSH反向隧道的方式实现无论在何种网络环境下,只要代理服务器工作正常,并且双方均可以与服务器正常交互,便可借助本客户端实现轻松实现远程控制;
  • 应用开发分为客户端软件开发和服务器软件开发。

简要工作原理

  • 在客户端中选中要进行远程控制的目标主机,在连接后,目标主机会收到远程控制请求;目标主机会自动建立反向隧道,将远程桌面端口(默认3389)映射到远程服务器的随机端口中;
  • 由于使用了随机分配的隧道端口,并且,端口号不是常用的,相对比较安全(寡人是这么认为的);况且本地在完成控制后,目标主机也会自动断开隧道。

PC客户端软件

  • 客户端软件使用Visual C#开发,运行在.Net 4.5及以上平台的系统上,理论上支持Windows 7及以上系统,但是要确保.Net版本符合要求,否则无法运行本客户端;
  • 客户端实现中,借助于plink.exe(即putty.exe)的命令行版本实现免密码输入,建立反向SSH隧道的功能;
  • 客户端提供的功能说明:
    • 注册:客户端在启动后,点击"启动"按钮,客户端会自动尝试与代理服务器联系,并获取ID,同时在代理服务器上存储自身的信息;完成“注册”过程;
    • 远程列表: 在“远程”页面中,点击“更新”按钮,可以拿取目前在线注册的计算机列表,将提供计算机ID和名称的显示;
    • 连接/断开: 本机可以选择远程主机,点击“连接”按钮后申请远程控制;当完成控制后,可以点击“断开”按钮,要求远程主机关闭隧道。
  • 主要使用到的第三方库:Newtonsoft.json,有关该库的license请参见Licese目录。

Mac客户端软件

  • 客户端基于PyQt-5.5.1使用Python 3.5开发,经过测试,基本功能正常;
  • Mac客户端仅支持远程请求连接开放连接权限的主机;
  • Mac客户端不支持Windows下的被远程控制的功能,仅仅是为了配合Mac下的Microsoft Remote Desktop软件实现内网穿透访问其他远程计算机。

服务器软件

  • 服务器端采用了Python 3开发;
  • 新版本使用了Twisted 16框架重新编写部分代码,增强了服务器端的稳定性;
  • 服务器端程序会在启动后自动在指定端口(默认为9000)进行监听,并及时处理来自客户端的请求;
  • 服务器端在运行前,可以在配置文件中更改日志文件名称,以及输出日志的等级;默认日志等级为DEBUG。日志等级可以选择的项目包括:
    • DEBUG
    • INFO
    • ERROR
    • WARN

如何运行

服务器端程序

  1. 确保在服务器系统上(我使用的是Cent OS 7)已经成功安装了Python 3尽可能新的版本;
  2. 确保在服务器系统上为Python 3安装了Twisted 16.0相关模块,服务器程序依赖此库;
  3. ProxyServer的代码全部放置在某个目录下,如ProxyServer目录,使用python3 server.py即可运行;
  4. 可以在config文件中修改相关设置,根据需要修改。

PC客户端软件

  1. 请在这儿下载最新发布的Release版本,将RAR格式的压缩包下载到电脑上,并解压;
  2. 确保在Windows系统上安装了.Net 4.5及以上版本,双击即可运行软件;
  3. 在运行后,需要根据需要配置代理服务器以及本机的设置,然后才可以点击启动按钮启动相关服务。其他功能比较简单,很容易使用;
  4. 客户端运行截图:
    • 截图0
    • 截图1
    • 截图2
    • 截图3

Mac客户端软件

  1. 确保PyQt-5已经在Mac上安装成功;
  2. 确保Python 3在Mac上安装成功;
  3. 下载Mac版客户端代码,解压后在终端中进入解压后的目录,使用命令:python3 App.py即可运行;
  4. 请确保下载了微软远程桌面软件(Microsoft Remote Desktop),然后才能借助于客户端穿透内网访问其他远程计算机;
  5. 客户端运行截图:
    • 截图1
    • 截图2

贡献

  • WashingtonLiu等人在Windows客户端测试中给予了很多帮助,感激不尽!

许可

  • 本项目为个人业余项目,算不上专业,代码组织的也不是特别好,还在进一步学习改进中。所有本人编写的源码采用MIT LICENSE
  • Enjoy~

ms-rdp-nat-traverse's People

Watchers

Loker avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.