利用Delphi实现网络监控系统利用
Delphi实现网络监控系统
摘要
本文详细阐述了如何用DELPHI开发网络实时监控系统,该系统可使网络管理员随时监控到网络中任何一台计算机的操作状态,若该机有违规行为,可通过本系统采取措施禁止其操作,还实现了程序的隐藏、托盘图标、加入注册表自动启动项等技术。
关键词 网络 WINSOCKET TCP/IP 控件
一、问题提出
现在拥有校园网和
网络教室的越来越多,网络管理和控制成了
问题,当然有许多软件可以实现,但那是要钱的,并且不便宜,至少是买一台电脑的钱,而且许多功能教育界用不到。有意思的是:许多黑客软件可以完成网络监控任务,如:"冰河",并且不要钱,但不幸的是:用了黑客程序你不就不能上因特网了。所以,自己动手设计网络监控
系统是一个不错的选择,因为现在有了许多功能强大的可视化开发工具。
我用DELPHI完成了一个监控系统("大眼睛"),经过实验,效果不错,并且完成了托盘图标、驻留端
程序隐藏、修改
注册表使程序自动启动等技术。系统的两个可执行文件经过pecompact处理,只有150K大小,也无需什么动态连接库。下图是
软件运行效果图,下面就把
设计思路介绍给您。
二、实现的原理
WINSOCK是一组API,用于在INTERNET上传输数据和交换信息。用它编程本来是很麻烦的,但在DELPHHI中并不需要直接与WINSOCK的API打交道,因为TclientSocket和TserverSocket元件封装了它的大部分API,使得对WINSOCK的访问大大简化。
SOCKET是网络通信的基本构件,是可以被命名和寻址的通信端点,使用中的第一个SOCKET都有其类型和一个与之相连的进程。SOCKET存在于通信区域中,
通信区域也叫地址族,是一个抽象概念,主要用于将通过SOCKET通信线程的共有特性综合在一起。SOCKET通常只与同一区域中的SOCKET交换数据,也有可能跨区域通信,但这只是在执行了某种转换进程后才能实现。
要通过网络传输数据,至少需要一对SOCKET。其中,一个SOCKET在客户端,另一个SOCKET在服务器端。一旦客户端和服务器端都接通了SOCKET,它们之间就可以相互通信,其连接是建立在TCP/IP协议基础上的,同时也支持其他相关协议,如XNS、DEC
NET及IPX/SPX等。
本系统就是基于上述原理的,它由两部分组成:驻留端和控制端。
驻留端放在需要监控的机器上,WINDOWS启动时自动运行,并且要很好的隐藏起来:不出现的任务栏上,当用户按下CTRL+ALT+DEL时,也不能从任务列表中发现。
控制端放在管理员的机器上,管理员通过指令可以观察或控制被监控的机器。指令有五个:
截取屏幕:可以观察到被控机的当前屏幕,看操作员在
干什么。
远程关机:可以关闭被控的计算机。
远程重启:可以重新启动被控的计算机。
锁定机器:封锁被控机的操作,键盘、鼠标操作都无效。
机器解锁:解除对被控机的封锁。
三、代码编写
1、 控制端
主窗体设计如效果图,各控件名称如下表:
名称 控件类型 标题 用途
HscrollB TScrollBar; 滚动图像
VScrollB TscrollBar 滚动图像
Label1 Tlabel 显示文字
Ipbox TcomboBox 显示IP地址
列表 RadioGroup1 TRadioGroup 美化界面
Cuts TradioButton 截屏选择
Cloma TradioButton 关机选择
Restart TradioButton 启动选择
Lock TradioButton 锁定选择
Unlock TradioButton 解锁选择
Button1 Tbutton 添加IP地址
Button2 Tbutton 执行指令
Button3 Tbutton 关闭界面
Button4 Tbutton 连接监控端
ImPanel TPanel 美化界面
Image Timage 显示图像
Panel1 TPanel 显示状态
Kz TclientSocket 建立连接
tccd TPopupMenu 弹出菜单
控制端代码不太复杂,主要在为了显示从被监控机器传过来的数据时有点复杂,下面单独说明一下:
procedure TForm1.kzRead(Sender: TObject; Socket: TCustomWinSocket);
var buf:a