[转帖(VB)]谈谈远程控制中关于搜索、控制计算机的功能
也不知道好不好!不管了!发上来先!
谈谈远程控制中关于搜索、控制计算机的功能
相信大家对“冰河”之类的软件一定都非常的感兴趣,这里我们一起来讨论一下“冰河”类软件中关于如何实现搜索、控制远端计算机(在局域网、或互联网上搜索那些中了木马的机器)的功能。
一、 编程原理
客户端程序:(控制远端计算机)
在 VB 中,我们可以通过 Winsock 控件的 TCP 协议,通过循环向指定的各个 IP 地地址的指定端口发送连接请示,然后分析返回值,已确定哪些机器是我们可以控制的。
服务器端程序:(也就是木马)
同样通过 Winsock 控件的 TCP 协议,通过监视指定的端口,取得相关的信息,分析信息是否为客房端程序发送过来的信息,然后进行一定的处理。
二、 基础知识
下面介绍一下 Winsock 控件的属性、方法、事件,这样大家对程序就会有更深的了解。
Winsock 控件的属性:
.LocalIP 属性 返回本地机器的 IP 地址,格式是 IP 地址加点字符串 (xxx.xxx.xxx.xxx)。在设计时是只读的,而且是不可用的。
.Protocol 属性 返回或设置 Winsock 控件所使用的协议— 或者是 TCP,或者是 UDP。
.RemotePort 属性 要连接的远程计算机的端口。
.RemoteHost 属性 要连接的远程计算机的名称,也可以是 IP 地址。
.LocalHostName 属性 返回本地机器名。在设计时是只读的,而且是不可用的。
.State 属性 返回控件的状态
State 属性的设置值是:
常数 值 描述
sckClosed 0 缺省的。关闭
sckOpen 1 打开
sckListening 2 侦听
sckConnectionPending 3 连接挂起
sckResolvingHost 4 识别主机
sckHostResolved 5 已识别主机
sckConnecting 6 正在连接
sckConnected 7 已连接
sckClosing 8 同级人员正在关闭连接
sckError 9 错误
Winsock 控件的方法
.Connect 方法 要求连接到远程计算机。
.Close 方法 对客户机和服务器应用程序关闭 TCP 连接或侦听套接字。
.Listen 方法 创建套接字并将其设置为侦听模式。该方法仅适用于 TCP 连接。
.GetData 方法 获取当前的数据块并将其存储在变体类型的变量中。
.Accept 方法 仅适用于 TCP 服务器应用程序。在处理 ConnectionRequest 事件时用这个方法接受新连接。
Winsock 控件的事件
.ConnectionRequest 事件 `当远程计算机请求连接时出现。仅适用于 TCP 服务器应用程序。
.DataArrival 事件 `当新数据到达时出现。
三、 编程实践
下面我们就以一个实例来说明,如何实现用控制程序(客户端的程序)在局域网或互联网上搜索运行了木马(服务端的程序)的计算机,并对其进行控制(让该计算机重新启动)。
(1)客户端程序:
1、新建一个 VB 工程,添加一个 Winsock 控件(用来实现远程连接);一个 ProgressBar 控件;一个 List 控件(显示可以控制的计算机的 IP 地址);一个 Frame 控件,其 Caption 为 “搜索范围”;七个 Label 控件,其 Name 都为默认值,Caption 分别为 “监听端口:”,“延迟时间:”,“毫秒”,“起始域:”,“起始地址:”,“终此地址:”,“搜索结果:”;二个 Command 控件,其 Name 都为默认值,Caption 分别为“开始搜索”,“程序结束”,一个 StatusBar 控件(其中涉及的几个非常规控件,请按下面的步骤加载:工程→部件→Micrsoft Windows Common Controls 5.0;Microsoft Winsock Control 6.0),程序设计界面如图1所示:(是不是和冰河 V2.2 版中搜索计算机的窗口非常相似呀)
2、现在切换到代码编辑窗口,依次写入以下代码:
注意:在下面程序中我所提到的“木马”,就是服务器端的程序
①全局变量的声名
Option Explicit
Dim myip As String `保存本地 IP 地址
Dim IsFind As Boolean `判断计算机是否可以控制
Dim temp_i, temp_j, temp_n, temp_o, sum_i As Long `5 个临时变量
②程序初始化设置
Private Sub Form_Load()
MSN:duckula007@hotmail.com