怎样监控(操作)远程计算机

xianghai 2003-05-09 10:22:57
在实际运用中,遇到了此问题。
就是我是网吧的收银员,想通过远程操作来控制客户端的机器,想知道客户在干什么。
是不是登陆了非法网站。这个问题我直没找到好方法,希望各位高手指教。谢谢!
...全文
25 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xianghai 2003-05-14
非常感谢你们的答复。
但是我想通过服务器完全来操作客户机,就是说我服务器端在干什么,客户机就跟着干,比如:我在服务器端浏览IE那客户端也只能浏览IE,不能转到其它操作,除非我不控制它,它才可以操作其它的东西,我不知道这方面的是用什么技术,希望大家指教一下。再次谢谢你们的帮助。
回复
叶帆 2003-05-09
现在的木马都可以。灰鸽子子木马注册费要100¥呢
回复
bydisplay 2003-05-09
被共享端(即服务器端)的任务是:自动捕获本机的当前显示画面,并将之传给共享端(即客户端)。
1. 服务器端程序(frmServer.frm)
这里有三点需要重点说明:一是自动捕获画面问题。为了模拟“捕获屏幕键”被按下的动作,程序里使用了 API调用 keybd_event。虽然VB的SendKeys语句也有类似功能,但它不如 keybd_event稳定和可靠。二是画面粘贴和压缩存储问题。为了能把已经被捕获到系统剪贴板中的图像粘贴下来并存储到文件,程序里使用了 ImgEdit控件。该控件强大的功能远非PictureBox控件或 Image控件可比。ImgEdit 不仅支持多种压缩图像格式(如 JPG、TIFF等),而且它对画面进行操纵和编辑的功能也非常强大(如图像旋转、缩放、嵌入等)。ImgEdit 还能对剪贴板进行Copy、Cut、Paste等操作。使用 Ctrl+T 或菜单(工程->部件)来添加 Windows标准的 ImgEdit控件(参见图一)。三是文件传输问题。用 ImgEdit存储的压缩文件一般只有 40 KB左右,使用 Winsock控件可以一次传输出去。但由于接收方的 Winsock控件一般是4K至8K调用一次 DataArrival子程,故程序使用主动分块进行传输,接收方确认后再发下一块。


服务器端源程序如下:
'====================== frmServer.frm
Option Explicit
Const FileName = "C:\sys1.tmp", BlockSize = 3072 ' 传送包大小
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Sub Form_Load()
tcpServer.LocalPort = 1001 ' 设置监听端口号
tcpServer.Listen ' 开始监听
End Sub

Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then tcpServer.Close
tcpServer.Accept requestID
tcpServer.SendData "SH" ' 成功连接后,发送“握手”信息
End Sub

Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
Static FileID As Integer, Cur_Pos As Long, FileLen As Long
Dim strData As String, j
Dim Buf() As Byte ' 定义一个可变大小的数组,用于传送二进制图像包
tcpServer.GetData strData
Select Case strData
Case "Close" ' 接到“Disconnect”命令后,关闭当前连接,并继续监听
tcpServer.Close
ImgEdit1.ClearDisplay
tcpServer.LocalPort = 1001
tcpServer.Listen
Case "Save Picture"
Call keybd_event(vbKeySnapshot, 1, 0, 0) ' 模拟按键操作
j = DoEvents()
If Dir$(FileName) <> "" Then Kill FileName
If ImgEdit1.IsClipboardDataAvailable Then ' 当剪贴板上有数据时
ImgEdit1.ClearDisplay
ImgEdit1.DisplayBlankImage Screen.Width / _
Screen.TwipsPerPixelX, Screen.Height / _
Screen.TwipsPerPixelY, , , 6
ImgEdit1.ClipboardPaste ' 从剪贴板粘贴图像
ImgEdit1.BurnInAnnotations 0, 2
ImgEdit1.SaveAs FileName, 1, 6, 6, 256 ' 另存图像。参数说明如下:
' “FileName”:文件名
' 参数“1”:TIFF 型文件;
' 第一个“6”:RGB24类型;
' 第二个“6”:JPEG压缩类型
' 参数“256”:最大压缩比
Clipboard.Clear
tcpServer.SendData "PS" ' 发送“图像文件就绪”信息
End If
Case "Get Picture"
If Dir$(FileName) <> "" Then
FileID = FreeFile
Open FileName For Binary As #FileID ' 打开文件并发送第一块数据
FileLen = LOF(FileID)
ReDim Buf(1 To BlockSize) As Byte
Get #FileID, , Buf
tcpServer.SendData Buf
Cur_Pos = BlockSize
End If
Case "Next Block"
If Cur_Pos = FileLen Then
tcpServer.SendData "EF" ' 文件传送完毕后,发送“完成”信息
Close FileID
Exit Sub
End If
j = Cur_Pos + BlockSize
If j > FileLen Then
j = FileLen - Cur_Pos
Else
j = BlockSize
End If
ReDim Buf(1 To j) As Byte ' 动态确定数组大小
Get #FileID, , Buf
tcpServer.SendData Buf ' 发送后续包
Cur_Pos = Cur_Pos + j
End Select
End Sub

2. 客户端程序(frmClient.frm)
在窗体上建六个控件:一个名为 tcpClient的 Winsock控件用于通讯;一个名为txtIP 的 TextBox控件用于填写服务器的IP地址;一个名为ImgEdit1的 ImgEdit控件用于显示服务器传来的图像;三个CommandButton控件( cmdConnect、cmdGet_Pic和cmdDisconnect) 分别用于执行连接、取回图像和断开连接(见图二)。


客户端源代码如下:
'====================== frmClient.frm
Option Explicit
Const FileName = "C:\sys1.tmp"
Private Sub cmdConnect_Click()
If tcpClient.State <> sckClosed Then tcpClient.Close
tcpClient.RemoteHost = txtIP.Text
tcpClient.RemotePort = 1001
tcpClient.Connect ' 进行连接
End Sub

Private Sub cmdDisconnect_Click()
tcpClient.SendData "Close" ' 断开连接
cmdConnect.Enabled = True
cmdGet_Pic.Enabled = False
cmdDisconnect.Enabled = False
End Sub

Private Sub cmdGet_Pic_Click()
tcpClient.SendData "Save Picture" ' 请求图像返回
frmClient.MousePointer = 11
End Sub

Private Sub Form_Resize() ' 使 ImgEdit1 的大小随窗体的变化而变化
ImgEdit1.Height = frmClient.Height - 825
ImgEdit1.Width = frmClient.Width - 225
End Sub

Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)
Static FileID As Integer, FileLen As Long
Dim Buf() As Byte
Dim j As Integer
ReDim Buf(bytesTotal) As Byte ' 根据到达数据的字节数确定接收数组的大小
tcpClient.GetData Buf
' 收到连接完成的“握手”信息
If bytesTotal = 2 And Chr(Buf(0)) = "S" And Chr(Buf(1)) = "H" Then
cmdConnect.Enabled = False
cmdGet_Pic.Enabled = True
cmdDisconnect.Enabled = True
Exit Sub
End If
' 收到图像就绪的信息
If bytesTotal = 2 And Chr(Buf(0)) = "P" And Chr(Buf(1)) = "S" Then
If Dir$(FileName) <> "" Then Kill FileName
FileID = FreeFile
Open FileName For Binary As #FileID ' 打开文件,准备存储图像
FileLen = 0
tcpClient.SendData "Get Picture"
Exit Sub
End If
' 收到图像发送完毕的信息
If bytesTotal = 2 And Chr(Buf(0)) = "E" And Chr(Buf(1)) = "F" Then
Close #FileID ' 关闭文件
j = DoEvents()
ImgEdit1.Image = FileName
ImgEdit1.Display ' 显示收到的图像
ImgEdit1.BurnInAnnotations 0, 2
frmClient.MousePointer = 0
Exit Sub
End If
' 收到一块二进制图像信息
Put #FileID, , Buf ' 将当前数据块存盘
tcpClient.SendData "Next Block" ' 申请下一块
FileLen = FileLen + bytesTotal
frmClient.Caption = "TCP Client " + Trim(Str(FileLen)) + _
" Bytes Received." ' 显示当前收到的字节数
End Sub

客户端成功共享服务器端显示画面后的外观如图三所示。


回复
xianghai 2003-05-09
而不是下载别的软件,我想自己写一个软件,不知道他们那样的软件是通过什么技术做的,请指点一下,谢谢。
回复
xianghai 2003-05-09
我想通过用VB程序来实现,请提供我一些资料。
回复
oscar0013 2003-05-09
这个找点软件装一下就可以了啊!到网上随便找找就有了啊!黑客网站上这样的软件更多啊!
回复
chutianqi 2003-05-09
对, 这种管理软件网上有好多。。
回复
lihonggen0 2003-05-09
pcanywhere

netmeeting
回复
bydisplay 2003-05-09
可用pcanywhere软件
回复
enjoyeagle 2003-05-09
前几天刚看了这方面的,推荐一本中国青年出版社的由台湾人黄嘉辉写的《Internet Programming互联网与TCP/IP进阶程序设计》,用vb写的,感觉很简单。里面就有这方面的。
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7490

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-09 10:22
社区公告
暂无公告