C#开源项目:SiMay远程控制管理系统

C#开源项目:SiMay远程控制管理系统

Gitee仓库截图

下方基于原项目仓库readme

系统介绍

  • SiMay远程控制管理系统是一个Windows远程控制系统,底层基于IOCP的异步通信模型,能对海量客户端实时监控,目前功能已实现:逐行扫描远程桌面经典的文件管理、实时远程语音、实时摄像头、经典注册表管理、命令行终端、实时系统进程管理、用户桌面视图墙轮播等功能。并且可捕获UAC,WinLogon桌面。系统实现了中间会话服务器,可支持不同平台多主控端同时监控同一被控端。被控服务端支持绿色启动及以系统服务方式安装,项目完全采用C#.NET开发,代码仅供参考,项目不定时更新,欢迎关注点星星,fork。欢迎入群技术交流:905958449 :laughing:  :blush:

申明

  • 作为创作者,我对由此软件引起的任何行为和/或损害不承担任何责任。您对自己的行为承担全部责任,并承认此软件仅用于教育和研究目的。不得用于您不拥有或有权使用的任何系统。使用此软件,您自动同意上述内容,感谢支持。

背景

  • 本项目仅为个人项目,经过几次重构,系统相对比较成熟了,决定开源反馈开源社区,希望更多人能和我一起进步,欢迎吐槽改进。

主控界面
创建服务端
远程桌面
文件管理
语音传输
注册表管理

中间服务器

系统项目结构

SiMay.Core【公共核心功能】

  • SiMay.Basic --基础通用库

  • SiMay.Core.Standard --系统核心统一公共库【统一通讯指令丶共用组件丶通信数据实体等..】

  • SiMay.Serialize.Standard --轻量级高性能二进制序列化库【作用:系统通信数据实体化】

  • SiMay.ModelBinder --调用绑定器

SiMay.RemoteMonitor【主控制端】

  • SiMay.RemoteControls.Core --主控端核心库

  • SiMay.RemoteMonitor.Windows --Windows主控管理端

  • SiMay.RemoteMonitor.Web --Web主控端

  • SiMay.RemoteMonitorForWebSite --Web监控前端

SiMay.Platform【平台实现】

  • SiMay.Platform.Windows -- 基于Windows的功能实现

SiMay.RemoteService【远程被控服务端】

  • SiMay.RemoteService.Loader --内存加载Loader,实现远程内存载入被控端核心库

  • SiMay.ServiceCore --被控端核心库

SiMay.SessionProvider【会话提供层】

  • SiMay.Net.SessionProvider --会话提供库【作用:提供服务器监听模式或者中间会话代理协议】

  • SiMay.Net.SessionProvider.Core --代理协议统一公用库【作用:统一中间库和服务器的通信指令及序列化等】

  • SiMay.Net.SessionProviderServiceCore -- 中间服务核心库

  • SiMay.Net.SessionProviderService --中间会话代理服务器【作用:提供保持服务端会话保持丶数据转发功能,基于此实现多平台端监控】

SiMay.Sockets【通信层】

  • SiMay.Socket.Standard --轻量级通信引擎

  • SiMaySocketTestApp --通信引擎测试程序

编译

  • 1.Bin为编译目录,重新生成后,主控程序将编译到此目录,Bin->dat目录为被控服务端目录,被控服务端编译后在此。(没有目录新建一下)

运行

  • 1.局域网

主控端:打开位与Bin目录下的主控端程序SiMayRemoteMonitor.exe,确认系统设置服务器地址为0.0.0.0(监听本机所有网卡),端口默认5200,使用会话模式为=本地服务器,然后保存配置重启程序, 重启后日志输出监听成功,即主控端设置正确。

被控服务端创建:打开主控端-->创建客户-->地址输入本机物理地址(或127.0.0.1),端口设置为服务端监听端口(默认5200)-->点击连接测试检查配置是否正确-->创建服务端文件,服务端文件即为配置完成的被控端程序(如提示找不到文件,请检查被控服务程序是否存在[编译步骤是否正确]),双击运行被控服务程序即可在主控端看见服务在线信息,如主控端无在线信息,请检查上述步骤是否配置正确。

  • 2.广域网

条件:需要主控端处于公网环境(或者设置路由内网映射、使用内网映射工具[如花生壳,内网通]),并且开放主控端监听端口(注意检查端口是否开放、防火墙通行规则)。创建客户端-->被控服务端连接至主控端的公网地址,端口即可

  • 3.中间服务器部署

条件:需要中间服务器处于公网环境(建议部署在公网服务器,或者设置路由内网映射),并且开放中间服务器监听端口(默认522端口、注意检查端口是否开放、防火墙通行规则)。

主控端设置: 系统设置-->会话服务器地址 输入 中间服务器的公网地址,端口。-->设置会话模式为:中间会话模式-->确认AccessKey与中间服务器Accesskey一致。(中间会话服务器系统设置位于标题栏系统菜单右键)-->创建客户端并选择会话模式为中间会话模式,ip,端输入中间服务器的公网地址即可

  • 4.Web端监控 编译SiMay.RemoteMonitor.Web.exe,Web服务为控制台形式无系统设置界面,可直接使用Windows控制端保存的系统配置文件SiMayConfig.ini,会话模式可使用服务器模式或者中间会话模式启动,启动成功后控制台打印监听成功或初始化成功字样即设置正确(服务器模式为监听成功,中间会话模式为初始化成功 及 WebSocket端口监听成功),如有被控端连接成功,控制台会实时打印上线连接信息,Web服务设置完成。

上述Web服务设置完成后,下一步需要部署Web网站SiMay.WebRemoteMonitor,首先打开Index.html文件编辑WebSocket连接地址,指向Web服务的公网地址与端口即可。

使用浏览器,访问SiMay.WebRemoteMonitor网站,页面弹出Id,Key输入框即表示与Web服务连接成功,输入SiMay.RemoteMonitorFor.Web.exe配置的账号密码即可登录,连接成功后页面可看到被控服务端计算机桌面视图,长按视图可打开更多功能。

技术

  • 组件式系统架构设计

  • 远程同步调用

  • 实体消息传输协议

  • 应用多连接会话支持

  • 可视区域逐行扫描算法的远程桌面

  • 中间会话服务转发,支持多个主控端同时实时监控

  • HOOK技术

  • WebSocket Web端监控

  • IOCP异步Socket高性能通信模型

  • 基于Windows WaInXX系列实现的语音通讯

  • 基于Dx组件捕获摄像头

开发环境

  • 建议 Visual Studio 2019 企业版

参与贡献

  • Fork 本仓库

  • 新建 Feat_xxx 分支

  • 提交代码

  • 新建 Pull Request

未来构想

  • 移动Web监控端

  • 跨平台的系统管理监控

SiMay远程监控管理系统更新及更新计划说明

6.0更新

  1. 跨平台支持,重构中间会话服务器使其支持多主控端同步监控 --2020.2.15

  2. 二进制序列化器采用反射缓存,提高系统性能 -- 2020.1.25

  3. 屏幕视图轮播 --2020.1.15

  4. Web端主控端 --2020.5.15(预览)

  5. 远程核心库加载并行控制 --未完成

  6. 远程桌面,语音监听,摄像头监控支持录制功能 --2.26

  7. 远程核心库载入更新(可实现功能快速升级及逻辑调整) -- 6.7

  8. 框架升级调整(实现"应用"的开放封闭设计原则,减少"应用代码"对核心代码的影响) --11.10

  9. 远程被控端服务文件更新 --11.23 10.框架升级调整(应用模块实现远程同步调用) --11.13 11.框架升级调整(应用模块支持多应用服务独立连接并可断线重连、增强复用性) --7.20 12.增加下载管理模块 - 11.22

5.0更新

  1. 优化了通讯库,支持FULL丶PACK数据处理方式,实现了更友好的配置接口

  2. 新增中间会话转发服务,增加了SessionProvider层,控制端支持监听模式丶中间会话模式,在此基础上实现了Web监控服务,支持Web方式监控

  3. 增强了远程桌面模块,支持全屏监控的远程鼠标控制及多屏幕切换

  4. 重构代码结构,实现了组件化系统框架,屏蔽了系统底层实现细节,增强了可扩展性 --2019.5.19

  5. 远程桌面增加了可视区域扫描算法,仅扫描可视区域变化部分,优化了远程桌面模块,速度更加快了 --2019.4.2

  6. 增强系统管理模块,实现了进程实时监控 --8.28

  7. 语音监听,视频监控支持录制功能 --6.0已实现

  8. 被控服务实现了以服务方式安装,使用服务方式可实现Session隔离穿透捕获桌面(锁屏,UAC), --11.9

  9. 文件管理功文件夹传输重构优化 2019.7.13

  10. 系统传输数据消息实体化 -- 2019-6-4

  11. 二进制序列化器采用反射缓存,提高系统性能 --已实现

  12. 远程桌面增加画面质量调整,优化低速率网络下的控制体验,使画面更加流畅 -- 7.27

  13. 支持远程更新服务端 -- 7.27

  14. 增加列表排序功能 -- 7.27

  15. 注册表组件更新,支持二进制丶多种类型数据编辑 -- 9.6

  16. 重构主控端,主控端逻辑核心库与展示层彻底分离(如:基于核心库横向扩展Web主控端,实现多平台逻辑复用) - 11.2

4.0更新

  1. 重写了通讯层,解决网络环境极差时频繁断开连接的情况,实现了对象池,以更好的并发能力应对大规模的客户端数据交互

  2. 设计了更稳定的通讯层接口,通讯层彻底与逻辑层分离

  3. 优化了部分功能的通讯协议

  4. 优化了远程桌面模块

  5. 修复远程桌面在高分屏笔记本时显示不完全的问题

  6. 修复视频监控显示不完全的问题

  7. 增强了语音监听模块

  8. 优化了窗体上的设计,用户体验更好了

  9. 修复了系统管理


一些推荐

  1. 【开源Blazor控件库】点击浏览

  2. 【开源B/S项目】WTM

  3. 【开源WPF控件库】点击浏览

  4. 【开源WPF项目】点击浏览

  5. 【开源Xamarin项目】全球优秀Xamarin.Forms项目收集

  6. 【开源Winform控件库】HZHControls、SunnyUI

  7. 【开源Winform项目】SiMay远程控制管理系统

  8. 【开源Qt控件库】QWidgetDemo、Material风格的Qt控件

  9. 【开源Qt项目】点击浏览

  10. 【更多分享】点击浏览


资源分享

  • 回复数字【01】:获取DotNet技术资料

  • 回复数字【02】:获取Java技术资料

  • 回复数字【03】:获取Android技术资料

  • 回复数字【04】:获取C++技术资料

  • 回复数字【05】:获取Qt技术资料

  • 回复数字【06】:获取React资源

  • 添加号主微信号【dotnet9】:备注【入群】加入与大佬们的技术交流


时间如流水,只能流去不流回。

  • 公众号:Dotnet9

  • 号主微信号:dotnet9

  • 原文作者:dWwwang

  • 仓库地址:SiMay远程控制管理系统

  • 编辑:沙漠之尽头的狼

  • 日期:2020-12-04

微信公众号:Dotnet9

-好东西要转发,设为"星标"★抢先看-

点击阅读原文,关注Dotnet9更多好文。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306537.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法设计与分析——回溯法——01背包问题

//0-1背包问题 回溯法求解 #include<bits/stdc.h> #include <iostream>using namespace std; template<class Typew,class Typep> class Knap {public:Typep Bound(int i);void Backtrack(int i);Typew c; //背包容量int n; //物品数Typew *w; //物品重量数…

排列组合思维导图_排列组合——排列数专题

在上篇关于排列组合主要考点的介绍中&#xff0c;正男老师提到&#xff1a;排列组合考点通常可以拆分为排列数考点和组合数考点。排列数考点相关试题可以细分为2类&#xff0c;分别为&#xff1a;穷举问题和限制条件问题。本期正男老师就从近六年内的5道涉及排列数考点的真题入…

高级的说服,从不讲道理

大家好&#xff0c;我是Z哥。你会发现有一些人&#xff0c;他们好像说话从来都没有说服过别人&#xff0c;天天被别人牵着鼻子走。但有些人一说的话你就觉得特别对&#xff0c;就应该按照他说的办。很明显&#xff0c;我们都希望自己是后者。能不能说服人&#xff0c;不管在生活…

算法设计与分析——分支限界法——n皇后问题

一、问题描述 问题描述&#xff1a;在nn格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于在n*n的棋盘上放置n个皇后&#xff0c;任何2个皇后不放在同一行或同一列或同一斜线上。 …

IdentityServer4系列 | 授权码模式

一、前言在上一篇关于简化模式中&#xff0c;通过客户端以浏览器的形式请求「IdentityServer」服务获取访问令牌&#xff0c;从而请求获取受保护的资源&#xff0c;但由于token携带在url中&#xff0c;安全性方面不能保证。因此&#xff0c;我们可以考虑通过其他方式来解决这个…

算法设计与分析——算法思想总结

算法设计与分析 1、分治法 分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题&#xff0c;这些子问题相互独立且与原问题相同。递归的解这些子问题&#xff0c;然后将各子问题的解合并得到原问题的解。 分治法所能解决的问题一般具有以下几个特征&#xff1a…

pearson相关系数_Pearson(皮尔逊)相关系数

由于使用的统计相关系数比较频繁&#xff0c;所以这里就利用几篇文章简单介绍一下这些系数。相关系数&#xff1a;考察两个事物(在数据里我们称之为变量)之间的相关程度。如果有两个变量&#xff1a;X、Y&#xff0c;最终计算出的相关系数的含义可以有如下理解&#xff1a;(1)、…

聊一聊ABP vNext的模块化系统

官网&#xff1a;https://abp.io/开源&#xff1a;https://github.com/abpframework/abp EasyAbp&#xff1a;https://easyabp.io/Abp 模块&#xff1a;https://abp.io/packages模块化系统ABP vNext 的世界观在 Abp vNext 框架里面&#xff0c;模块系统是整个框架的基石&#x…

双离合档把上按钮作用_英特尔展示双屏幕概念笔记本:带有双铰链

本文转自&#xff1a;IT之家作者&#xff1a;嗜橙近日&#xff0c;英特尔在位于圣克拉拉总部深处的一个半秘密实验室里&#xff0c;公布了配备两个屏幕的概念笔记本电脑。在近日的台北电脑展上&#xff0c;华硕发布了双屏笔记本&#xff1b;不久之后&#xff0c;英特尔也公布了…

浏览器眼中的0

0作为一个特殊的符号&#xff0c;经常会跟浏览器打交道&#xff0c;在不同的场景下&#xff0c;0代表的意思不尽相同&#xff0c;因此浏览器眼中的0不一定就是符合人们感官上的认识&#xff0c;那究竟浏览器会怎么对待它呢&#xff0c;今天我们就来探究一下各种场景中0的含义及…

剑指offer——01二维数组中的查找.

class Solution { public:bool Find(int target, vector<vector<int> > array) {int m array.size();//得到该二维数组的行数if(m0) return false;//如果行数为0则直接退出int n array[0].size();//得到该二维数组的列数if(n0) return false;//如果列数为0则直接退…

GraphQL:验证与授权

GraphQL 既是一种用于 API 的查询语言也是一个满足你数据查询的运行时。GraphQL 对你的 API 中的数据提供了一套易于理解的完整描述&#xff0c;使得客户端能够准确地获得它需要的数据&#xff0c;而且没有任何冗余&#xff0c;也让 API 更容易地随着时间推移而演进&#xff0c…

python 创建目录_第二天:Python中目录及文件操作

Python创建目录使用os模块mkdir创建一级目录&#xff0c;但不会创建父级目录#创建test目录&#xff0c;成功 import os os.mkdir(E:test)##若无父级目录python,则创建test目录失败 import os os.mkdir(E:pythontest)makedirs可创建父级目录import os os.makedirs(E:pythontest)…

计算机科普小知识——U盘格式化

在格式化U盘的时候我们需要选择文件系统类型&#xff0c;分别有FAT32&#xff08;默认&#xff09;&#xff0c;NTFS和exFAT这三种格式 常见格式一&#xff1a;FAT32 FAT32是windows传统的文件格式&#xff0c;对每个分区只有4GB的容量&#xff0c;是任何一种usb存储设备都会预…

.NET 5干货来袭 嘉宾李杨桂素伟

Azure Show大家好&#xff0c;欢迎来到Azure Show第八期&#xff0c;好久不见&#xff01;因为工作的原因有两个月没和大家见面&#xff0c;但12月Azure Show回归&#xff0c;会有更多大家感兴趣的话题&#xff0c;也有更多嘉宾与大家见面。除了这一期&#xff0c;在12月我们还…

setnx和expire合成一条指令_Python 为什么只需一条语句“a,b=b,a”,就能直接交换两个变量?...

从接触 Python 时起&#xff0c;我就觉得 Python 的元组解包&#xff08;unpacking&#xff09;挺有意思&#xff0c;非常简洁好用。最显而易见的例子就是多重赋值&#xff0c;即在一条语句中同时给多个变量赋值&#xff1a;>>> x, y 1, 2 >>> print(x, y) …

计算机科普小知识——Win7系统32位与64位的区别,该如何选择?

Win7系统32位与64位的区别 首先我们要知道32位和64位指的是什么。其实这是根据CPU内的寄存器字长来确定的&#xff0c;计算机内部数据都是二进制来呈现的&#xff0c;32位的计算机CPU一次最多能处理32位的二进制数据&#xff0c;而64位的计算机CPU一次最多能处理64位的二进制数…

你知道这个C#开发跨平台APP的样例介绍开源项目吗?

站长英文太差就不翻译了&#xff0c;大家看效果图&#xff0c;都是使用Xamarin.Forms开发的开源移动App介绍&#xff0c;感兴趣的可以访问Github和Gitee仓库看看&#xff0c;下载对应的App项目研究。Github&#xff1a;https://github.com/jsuarezruiz/xamarin-forms-goodlooki…

mybatis plus 批量保存_mybatis源码分析

原理图&#xff1a;Configuration解析&#xff1a;Configuration表示配置&#xff0c;该对象中维护了很多mybatis的配置参数&#xff1b;大致可分为四部分&#xff1a;1.环境变量Environment 2.配置参数&#xff1b;3.缓存集合&#xff1b;4.插件及其他1.1环境变量EnvironmentE…

判断领导是在压榨你,还是在培养你?就看这5点!别被骗了!

职场&认知洞察 丨 作者 / findyi这是findyi公众号分享的第102篇原创文章前文写了职场PUA的文章&#xff0c;有读者问洋哥&#xff1a;我的领导有点像PUA&#xff0c;但又总是说要培养我&#xff0c;怎么破&#xff1f;读者问的问题并不是个案&#xff0c;前不久一个哥们挺郁…