远程控制代码

合集下载

JMX远程控制

JMX远程控制

JMX远程控制问题背景讨论:在JAVA运行时,对JVM系统的检测、管理是开发同学一直期望的,目前有一些开源产品开源针对JVM进行监控,例如javamelody等等,这样框架虽然好,但是如果使用会带来一些问题。

第一:由于javamelody入口是一个filter,所以会带来性能问题、第二:如果应用服务器很多,会缺乏统一管理,此外安全性、爬虫等等问题略过不提JDK自带了故障检测工具Jconsole和1.6出来的Jvisualvm都可以远程对服务器进行监控,后者甚是提供可以在线得到ThreadDump和HeapDump文件,更是提供了可扩展插件功能(虽然可能会影响jvm服务器性能)但现状很多公司都有自己的运维团队,未必会把线上服务器的权限交给我们开发同学,所以有必要了解JAVA远程管理方面的知识,假设如果在后台有一套系统,可以管理、监控我们线上所有java服务器,如果出现问题不需要对每个服务器进行排查而是直接从列表中获取、定位到信息,岂不是一件很幸福的事情~ 书归正文,分享下近几天在JMX方面的知识,JDK的API中翻译过来对javax.management的描述提供Java Management Extensions 的核心类。

Java Management Extensions (JMXTM) API 是一个用于管理和监视的标准API。

典型用途包括:1)查询并更改应用程序配置2)累积有关应用程序行为的统计数据并使其可用3)通知状态更改及错误状况。

4)JMX API 还可以作为解决方案的一部分来管理系统、网络等。

5)API 包括远程访问,远程管理程序可以基于这些目的与正在运行的应用程序进行交互。

JMX核心类为Mbean。

MBean 是表示资源的指定管理对象。

它有一个管理接口,该接口包括以下内容:1)可以读取和/或写入的指定名称和类型的属性2)可以调用的指定名称和类型的操作3)可以由MBean 发送的指定类型的通知。

用VC编写网络远程控制程序

用VC编写网络远程控制程序

用VC编写网络远程控制程序基于网络的远程控制是网络管理员和黑客都非常关注的网络技术。

在美好的网络化社会中远程控制是技术核心,比如将来可以一边坐在办公室里工作,一边通过网络打开家里的电饭锅做饭。

简单的说,网络远程控制技术就是可以由一台联网(互联网或局域网)的主机来操纵联网的另一台或多台主机。

网络管理员用它来实现网络的远程管理,黑客用它来占用别人的主机资源。

网络远程控制实现的基础就是基于网络技术开发的客户端(client)/服务器(server)程序,程序执行后,由客户端来操作服务器完成客户端的请求。

一、服务器程序在VC下新建一个基于对话框的工程MiniTrojDlg,要选择支持Winsock,然后在工程中加入自己从Csocket 派生的两个类CLisenSocket和CClientSocket,CLisenSocket类用于建立监听的Socket,CClientSocket 类用于建立通信的Socket。

CLisenSocket类对虚函数OnAccept()进行重载。

CClientSocket类对虚函数OnReceive()进行重载。

在程序中建立一个用于监听指定端口的Socket,当有客户端请求到达后,再新建一个用于通信的Socket与客户端Socket建立连接,处理客户端请求。

如果客户端请求为发送消息,则通过MessageBox函数显示该消息;如果客户端请求为执行命令,则调用WinExec函数执行相应命令;如果客户端请求为截取屏幕,则获取桌面窗口DC并用DIBAPI中函数获取图象并存为DIB对象,通过与客户端建立的连接将此DIB对象发送到客户端显示。

相关核心代码如下,详细代码请参见源程序。

ClisenSocket.h代码如下:class CMiniTrojDlg;// LisenSocket command targetclass LisenSocket : public CSocket{// Attributespublic:// Operationspublic:LisenSocket(CWnd *pWnd);virtual ~LisenSocket();// Overridespublic:// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(LisenSocket)public:virtual void OnAccept(int nErrorCode);//}}AFX_VIRTUAL// Generated message map functions//{{AFX_MSG(LisenSocket)// NOTE - the ClassWizard will add and remove member functions here.//}}AFX_MSG// Implementationprotected:private:CMiniTrojDlg *m_pWnd;};ClisenSocket.cpp代码如下:LisenSocket::LisenSocket(CWnd *pWnd){m_pWnd=(CMiniTrojDlg *)pWnd;}LisenSocket::~LisenSocket(){}// Do not edit the following lines, which are needed by ClassWizard.#if 0BEGIN_MESSAGE_MAP(LisenSocket, CSocket)//{{AFX_MSG_MAP(LisenSocket)//}}AFX_MSG_MAPEND_MESSAGE_MAP()#endif // 0// LisenSocket member functionsvoid LisenSocket::OnAccept(int nErrorCode){m_pWnd->ProcessPendingAccept();CSocket::OnAccept(nErrorCode);}CclientSocket.h代码如下:class CMiniTrojDlg;// CClientSocket command targetclass CClientSocket : public CSocket{// Attributespublic:// Operationspublic:CClientSocket(CWnd *pWnd);virtual ~CClientSocket();// Overridespublic:// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CClientSocket)public:virtual void OnReceive(int nErrorCode);//}}AFX_VIRTUAL// Generated message map functions//{{AFX_MSG(CClientSocket)// NOTE - the ClassWizard will add and remove member functions here. //}}AFX_MSG// Implementationprotected:private:CMiniTrojDlg *m_pWnd;};CclientSocket.cpp代码如下:CClientSocket::CClientSocket(CWnd *pWnd){m_pWnd=(CMiniTrojDlg *)pWnd;}CClientSocket::~CClientSocket(){}// Do not edit the following lines, which are needed by ClassWizard.#if 0BEGIN_MESSAGE_MAP(CClientSocket, CSocket)//{{AFX_MSG_MAP(CClientSocket)//}}AFX_MSG_MAPEND_MESSAGE_MAP()#endif // 0// CClientSocket member functionsvoid CClientSocket::OnReceive(int nErrorCode){m_pWnd->ProcessPendingRead();CSocket::OnReceive(nErrorCode);}在CminiTrojDlg.cpp中添加以下代码:BOOL CMiniTrojDlg::OnInitDialog(){ // 系统初始化CDialog::OnInitDialog();SetIcon(m_hIcon, TRUE);SetIcon(m_hIcon, FALSE);m_nPort=886;pLisen=new LisenSocket(this);if(!pLisen->Create(m_nPort)){AfxMessageBox(IDS_CREATEFAILED);}else if(!pLisen->Listen()){AfxMessageBox(IDS_LISTENFAILED);}elsereturn TRUE;//Ok,服务器正在帧听...arIn=NULL;arOut=NULL;return TRUE;}// -- 在此函数接收客户程序的连接请求--void CMiniTrojDlg::ProcessPendingAccept() {pClient=new CClientSocket(this);if(pLisen->Accept(*pClient)){Socketfile=new CSocketFile(pClient);arIn=new CArchive(Socketfile,CArchive::load); arOut=new CArchive(Socketfile,CArchive::store); }else{delete pClient;pClient=NULL;}}// -- 在此函数接收客户程序发送的数据--void CMiniTrojDlg::ProcessPendingRead(){CString TempReceive;if(arIn->IsBufferEmpty()){*arIn>>TempReceive;if(TempReceive.Left(1)=='m'){ //接收的是消息TempReceive.Delete(0,2);MessageBox(TempReceive,"提示信息",MB_OK); }else if(TempReceive.Left(1)=='c'){ //接收的是命令TempReceive.Delete(0,2);WinExec(TempReceive,NULL);}else if(TempReceive.Left(1)=='g'){ //接收的是关机命令::ExitWindowsEx(EWX_POWEROFF,0);}else if(TempReceive.Left(1)=='r'){ //接收的是注销命令::ExitWindowsEx(EWX_REBOOT,0);}else{ //接收的是捕获屏幕命令CWnd * m_pWnd=GetForegroundWindow();ASSERT(m_pWnd!=NULL);CDC * pdc_Showed=m_pWnd->GetDC();CRect rect;m_pWnd->GetClientRect(rect);int height,width,i,j;height=rect.Height();width=rect.Width();LPSTR lpDIBCopy;HDIB m_CopyDIB=CreateDIB(width,height,8);lpDIBCopy=(LPSTR) ::GlobalLock((HGLOBAL)m_CopyDIB);BITMAPINFO * bminfo=(BITMAPINFO *)lpDIBCopy;for(i=0;i<=255;i++){bminfo->bmiColors.rgbBlue=i;bminfo->bmiColors.rgbRed=i;bminfo->bmiColors.rgbGreen=i;bminfo->bmiColors.rgbReserved=0;}LPSTR lpDIBCopyBits=::FindDIBBits(lpDIBCopy);int tWidthBytes=WIDTHBYTES(width*8);COLORREF bmpdat;unsigned char pixel;for(i=0;i<height;i++){for(j=0;j<width;j++){bmpdat=pdc_Showed->GetPixel(j,height-i);pixel=(unsignedchar)((float)GetBValue(bmpdat)*0.299+(float)GetGValue(bmpdat)*0.587+(float)GetRValue(bmpdat)*0.11 4);lpDIBCopyBits[i*tWidthBytes+j]=pixel;}}*arOut<<height;*arOut<<width;arOut->Write(lpDIBCopy,(54+256*4+height*width));arOut->Flush();}}}二、客户端程序在VC下新建一个基于对话框的工程CTrojClient,也要选择支持WinSock,然后在工程中加入自己从Csocket派生的类CClientSocket,此类与服务器程序中建立的CclientSocket类相同。

Java实现的cmd远程控制程序

Java实现的cmd远程控制程序

java不能调用Win_Api,所以直接用Win_Api就行不通了。

但是我们可以借助DLL 来实现。

以下就是cmdDLL的实现过程:首先,用在cmd命令提示符下执行javac Server.java (接下来它将调用cmdDLL.dll的函数 CMD)生成一个Server.class文件,接下来就是用这个Server.class文件生成Server.h文件(执行javah Server.h)。

其次,先写一个.cpp文件,在这个.cpp程序中我们将先前已经弄好的Server.h 要包含在这个cmdDLL.cpp文件中,因为Server.h文件是接下来Server.java中要调用的CMD者个函数的声明。

cmdDLL.cpp文件如下://begin#include "Server.h"#include <stdlib.h>#include <string.h>JNIEXPORT void JNICALL Java_Server_CMD (JNIEnv * env, jclass,jstring a ){const char* str = env->GetStringUTFChars(a,0);char str_1[100] = {0};strncpy(str_1,str,strlen(str)-1);char str_2[100] = " > out.txt";strcat(str_1,str_2);system(str_1);}//end执行以下命令(需要vc环境):cl/c cmdDLL.cpplink cmdDLL.obj /dll以生成一个cmdDLL.Dll文件。

cmdDLL.Dll中的void CMD(String args)这个函数的功能:(1)接受上层的一个string args 然后将其类型转换后得到一个const char* str。

如何防范计算机病通过远程代码执行攻击

如何防范计算机病通过远程代码执行攻击

如何防范计算机病通过远程代码执行攻击近年来,随着计算机技术的不断发展和普及,计算机病毒成为了严重威胁我们计算机安全的问题之一。

远程代码执行攻击(Remote Code Execution,简称RCE)作为一种常见的计算机病毒攻击手段,给我们的计算机安全带来了巨大的风险。

为了保护我们的计算机不受远程代码执行攻击的威胁,我们应该采取一些必要的防范措施。

本文将介绍一些常见的远程代码执行攻击的方式,并提供一些有效的解决方案来防范这类威胁。

1. 远程代码执行攻击的类型远程代码执行攻击是指攻击者通过注入恶意代码,远程执行恶意代码或者利用已存在的漏洞来控制目标计算机,实现对系统的控制权。

以下是一些常见的远程代码执行攻击的类型:1.1 SQL注入攻击SQL注入攻击是指攻击者通过在输入框中注入恶意SQL语句来获取数据库中的敏感信息或者执行非法操作的攻击方式。

为了防范SQL 注入攻击,我们应该使用参数化查询和输入验证来过滤用户输入的数据,同时限制数据库用户的权限,确保系统的安全性。

1.2 文件包含漏洞文件包含漏洞是指攻击者通过利用应用程序中未能正确过滤用户输入的漏洞来执行远程代码的攻击方式。

为了防范文件包含漏洞,我们应该避免直接包含用户输入的文件,同时使用白名单机制来过滤用户输入的文件路径,确保系统的安全性。

1.3 远程文件执行漏洞远程文件执行漏洞是指攻击者通过远程加载、执行恶意文件来控制目标系统的攻击方式。

为了防范远程文件执行漏洞,我们应该对远程文件的来源进行验证,并限制可执行文件的权限,确保系统的安全性。

2. 防范远程代码执行攻击的解决方案针对不同类型的远程代码执行攻击,我们可以采取一些防范措施来保护我们的计算机系统。

以下是一些有效的解决方案:2.1 输入验证与过滤为了防范SQL注入攻击和文件包含漏洞,我们应该对用户的输入进行验证和过滤。

可以使用正则表达式、特殊字符过滤和长度限制等方法对用户输入进行限制,确保恶意代码无法通过输入进入系统。

用C++Builder+6.0实现远程控制

用C++Builder+6.0实现远程控制

FormCjose(T0bJect 。Sender,
图1客户端设计窗体图
fI cs一>Actlve==true) cs >Act【ve=false cs~>C ose(), }
●在(:0nnrrIBtn的‘J}u州,l ln8pPcIt·r“0 h㈨l面皈双击
燃 万方数据
凌蕊辫嚣羧瑟篱黪羚
吣戮脑螭程嚣主护
喜麓季袭篙譬≯善嚣慧羔
属性值为“发送警告信鲁”。
挣件名髂
Ⅳ?

表2控件事件表
掭加事竹
在0nch自·事什中捺加rrnmlchse匾敬,尉于在直用
程序退出时停止当前连接。
在oncu吐事什中黍加c—tcuck函彀.用干下进
洼接搜置指争。
在0Ⅱchc★事件中1蠡古u nsc…们·A面教,用于下
造断¨莲接指夸。
在0--a·rk事件中僚加N2a—rk函数用于执行消隐 桌自指争。
在0ucKd事件巾掭加N3ckk函敦.用于执行恢复 桌面指夸
在0口cⅡrL事件中添加J4c姒西教,用于执行消臆
工肄条指夸。
存0nairk事件中舔打H5d-“止数,用于执行恢复 工具条指争。
在OncⅡ畦事什中螽加晰cl她函蕺,用于执行删腺 墙纸指夸.
件上单贵鼠标右链,在弹出的菜单中 选择Hpw Bu帅n项,俄扶舔加c¨Ⅱ.
】"c出tⅡDl……tBm
工具条上的按钮控件
属于no仙umⅢ粪
上具夺}的按钮控件:
属T nmumn类
主黉盟衍什捧件
属于1砌ⅡMe删樊
土菜单中子菜单项R: 属丁1MeⅡdlrm娄
用丁下达莲接远程主机指令,凸口-uu 属性设为“连接。。
在0Dc删事件中器加(:sc。mM
。在c…-t时触发的消息。

开源远程控制RealVNC源代码中的通讯协议RFB

开源远程控制RealVNC源代码中的通讯协议RFB

开源远程控制RealVNC源代码中的通讯协议RFB(远程帧缓冲)----- 一分类:远程控制业余研究开源软件2014-05-27 18:04 2040人阅读评论(1) 收藏举报在网上流传的gh0st3.6源代码中,远程桌面总是存在CPU占用率高和画面更新不及时等问题。

于是想到了著名的开源远程控制RealVNC 它采用了远程帧缓存的协议(Remote Frame buffer)在网上找到的一段关于RFB的描述RFB 是真正意义上的“瘦客机”协议。

RFB协议设计的重点在于减少对客户端的硬件需求。

这样客户端就可以运行在许多不同的硬件上,客户机的任务实现上就会尽量的简单。

RFB协议对于客户端是无状态的。

也就是说:如果客户端从服务器端断开,那么如果它重新连接相同的服务器,客户端的状态会被保存。

甚至,一个不同的客户端可以用来连接相同的RFB服务器。

而在新的客户端已经能够获得与前一个客户端相同的用户状态。

因此,用户的应用接口变的非常便捷。

只要合适的网络连接存在,那么用户就可以使用自己的应用程序,并且这些应用会一直保存,即使在不同的接入点也不会变化。

这样无论在哪,系统都会给用户提供一个熟悉、独特的计算环境。

显示协议显示协议是建立在“把像素数据放在一个由x,y定位的方框内”这单一图形基础之上的。

乍一看上去,把这么多的用户接口组件绘制出来是非常低效的方法。

但是,允许不同的像素数据编码方式,使得我们在处理不同的参数(如:网络带宽,客户端的绘制速度,服务器处理速度)有了很大程度的灵活性。

通过矩形的序列来完成帧缓存的更新。

一次更新代表着从一个可用帧缓存状态转换到另一个可用,因此有点和视频的桢类似。

尽管矩形的更新一般是分开的,但是并不是必须的。

显示协议的更新部分是由客户端通过命令驱动的。

也就是说,更新只是在服务器端响应客户端的请求时发生的。

这样就让协议更新质量是可变的。

客户端/网络越慢,更新速度也就越慢。

对于一些应用来说,相同区域的更新是连续不断的。

让别人电脑关机的代码

让别人电脑关机的代码

让别人电脑关机的代码如何以代码让别人的电脑关机电脑关机是我们日常使用电脑时必不可少的一项操作,但有时我们可能想通过代码的方式远程控制他人的电脑关机,以达到一些特定的目的。

本文将介绍如何以代码的方式实现远程关机,但强调的是在任何情况下,我们都应该遵循法律和道德准则,不滥用这些技术。

首先,要远程控制他人的电脑关机,我们需要确保我们对目标电脑拥有足够的权限。

这意味着我们需要事先获取目标电脑的访问权限或合法授权,否则我们的行为将被视为非法入侵和侵犯他人隐私。

一旦我们获得了目标电脑的访问权限,我们可以使用多种编程语言来实现远程关机的功能。

下面以Python为例,为了保证安全性和可靠性,我们将使用一个简单的客户端-服务器架构,其中服务器为我们提供了关机功能,而客户端则发送关机请求。

首先,在服务器上运行以下代码:pythonimport socketimport osdef shutdown():os.system("shutdown -s")def start_server():server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)server_socket.bind(("0.0.0.0", 12345))server_socket.listen(1)print("服务器已经启动,等待客户端连接...")while True:client_socket, client_address = server_socket.accept()print(f"来自{client_address} 的连接已建立.")request = client_socket.recv(1024).decode('utf8')if request == "shutdown":shutdown()client_socket.send("关机请求已收到,电脑将在一分钟内关机.".encode('utf8'))client_socket.close()if __name__ == "__main__":start_server()在该代码中,我们首先导入了socket模块和os模块。

Python远程视频监控程序的实例代码

Python远程视频监控程序的实例代码

Python远程视频监控程序的实例代码⽼板由于事务繁忙⽆法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少⼈。

o(>﹏<)o|||最初我的想法是直接去⽹上下个软件,可是找来找去不是有毒就是收费,⽆奈技术不到家⽆法破解,只得另寻他法。

正当没有办法的时候,我看到⼀篇博⽂,看完茅塞顿开,觉得完全可以⾃⼰写⼀个,在此感谢作者詹姆斯。

这个程序包括⼀个服务器和⼀个客户端。

需要的库有 VideoCapture 和 pygame,⼀个⽤来得到摄像头的视频,⼀个⽤来显⽰。

Python库可以点这⾥下载:。

进去后ctrl+F找到相应的库,然后选择相应的版本即可,这⾥还有很多其他的库可提供下载。

我想到的解决⽅案是,在教研室开⼀台电脑,接⼀个USB摄像头,然后开启⼀个服务器程序,等待着⽼板使⽤客户端连接,由于是实时视频传输,使⽤UDP协议。

(主要传输部分采⽤詹姆斯的代码)。

服务器端代码如下:# -*- coding: UTF-8 -*-import socketimport timeimport tracebackfrom VideoCapture import Deviceimport threading# 全局变量is_sending = Falsecli_address = ('', 0)# 主机地址和端⼝host = ''port = 10218# 初始化UDP socketser_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)ser_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)ser_socket.bind((host, port))# 接收线程类,⽤于接收客户端发送的消息class UdpReceiver(threading.Thread):def __init__(self):threading.Thread.__init__(self)self.thread_stop = Falsedef run(self):while not self.thread_stop:# 声明全局变量,接收消息后更改global cli_addressglobal is_sendingtry:message, address = ser_socket.recvfrom(2048)except:traceback.print_exc()continue# print message,cli_addresscli_address = addressif message == 'startCam':print 'start camera',is_sending = Trueser_socket.sendto('startRcv', cli_address)if message == 'quitCam':is_sending = Falseprint 'quit camera',def stop(self):self.thread_stop = True# 创建接收线程receiveThread = UdpReceiver()receiveThread.setDaemon(True) # 该选项设置后使得主线程退出后⼦线程同时退出receiveThread.start()# 初始化摄像头cam = Device()cam.setResolution(320,240)# 主线程循环,发送视频数据while 1:if is_sending:img = cam.getImage().resize((160,120))data = img.tostring()ser_socket.sendto(data, cli_address)time.sleep(0.05)else:time.sleep(1)receiveThread.stop()ser_socket.close()服务器启动⼀个⼦线程,来监听客户端发送的消息。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

命令实现Win7远程桌面关机和重启
关机 shutdown -s -t 0
重启 shutdown -r -t 0
打开运行框(Win+R键),输入上述命令即可,后面的数字表示关机/重启延迟的时间
at 12:00 shutdown -s
在运行里输入这个然后敲回车
他就会在12点种的时候关机
用法: shutdown [-i | -l | -s | -r | -a] [-f] [-m \computername] [-t xx] [-c "comment"] [-d up:xx:yy]没有参数显示此消息(与 ? 相同)
-i 显示 GUI 界面,必须是第一个选项
-l 注销(不能与选项 -m 一起使用)
-s 关闭此计算机
-r 关闭并重启动此计算机
-a 放弃系统关机
-m \computername 远程计算机关机/重启动/放弃
-t xx 设置关闭的超时为 xx 秒
-c "别开bt了谢谢" 关闭注释(最大 127 个字符)
-f 强制运行的应用程序关闭而没有警告
-d [p]:xx:yy 关闭原因代码
u 是用户代码
p 是一个计划的关闭代码
xx 是一个主要原因代码(小于 256 的正整数)
yy 是一个次要原因代码(小于 65536 的正整数)
-f:强行关闭应用程序
-m \计算机名:控制远程计算机
-i:显示图形用户界面,但必须是Shutdown的第一个选项
-l:注销当前用户
-r:关机并重启
-t时间:设置关机倒计时
-c "消息内容":输入关机对话框中的消息内容(不能超127个字符
2、举例:
关闭计算机 shutdown –s (方法:”开始”->”运行”->”shutdown -s”->”确定”)
延迟3秒关闭计算机 shutdown –s –t 3(方法:”开始”->”运行”->”shutdown –s –t 3”->”确定”)
取消关闭计算机 shutdown –a (方法:”开始”->”运行”->”shutdown –a”->”确定”)
3、应用:
(1)您如果想在1小时后自动关闭计算机,比如:您正在下载一个软件或一部电影,而您有急事要去丽水,您会怎么办?停止下载?太可惜了!继续?下载完后电脑怎么关闭?不用愁!您可以使用该命令解决:
shutdown –s –t 3600 (系统在3600秒后关闭计算机,时间自定)
您就放心地去丽水了,而不用担心您的计算机长期开着了。

(2)出现RPC漏洞而导致倒计时自动关机,使用该命令取消倒计时自动关机:
shutdown –a (方法:”开始”->”运行”->”shutdown –a”->”确定”)。

相关文档
最新文档