如题,用delphi语言设计一个公司局域网的监控系统,可以实现一台主机控制整个公司局域网,限制聊天工具(QQ和MSN)的使用和下载工具的使用(迅雷、BT)。我现在的设想是监控可以用winPcap实现,一台主机控制整个局域网用ARP欺骗技术实现。请各个高手能不吝赐教。我邮箱[email protected] ,QQ576681554.
解决方案 »
- 请问那里跟踪进程软件下载?
- [Pascal Fatal Error] E2202 Required package 'visualclx' not found
- 怎判断机器是否连互联网
- 只不过 由String 变为WideString 就错误拉,奇怪????
- ADO+SQL SERVER在多线程环境下的使用
- 请问怎编写播放DVD碟的程序
- ★挑战CSDN高手★DELPHI中的线程使用!
- 如何复制另一数据库(A)中的表a到本数据库B?
- 如何使应用程序中的窗口改变样式,比如像‘WINXP’中的窗口,比如像‘东方音都’的窗口!!
- 急救:关于TCustomWinSocket
- Exe程序如何加nop空操作指令?
- 请教高手关于多媒体问题!
给你个思路,Winpcap可行,网上有专为Delphi设计的头文件,不过如果局域网有人绑定了ARP或者有防火墙,那也没戏了
你需要的这些功能,用同步专家网吧版就可以了。免费的软件。
winPcap 里面有个 iphlpapi.dll 动态连接库 没有网站上自己下个 我是新建个unit2 把要调用动态连接库的函数都写到这里 放在FROM上 麻烦 而且代码很难看 Function SendARP(ipaddr:ulong;temp:dword;ulmacaddr:pointer;
ulmacaddrleng:pointer) : DWord;stdcall; far external 'Iphlpapi.dll' ;//获取MAC 函数
在from 窗体上引用 use unit2,WinSock;
Function GetMac(IPADD:string):string;//根据IP地址 获取MAC地址(不要告诉我连网卡地址都不懂)
var
Curip:ulong;
CurMac:array[0..5] of byte;
CurMaclength:ulong;
ErrNo:integer;
begin
Curip := inet_addr(PChar(IPADD));
CurMaclength := length(CurMac);
ErrNo := sendarp(Curip,0,@CurMac,@CurMaclength);//获取的主机MAC函数 在动态连接库上的方法
if ErrNo = 0 then
result := format('%2.2x:%2.2x:%2.2x:%2.2x:%2.2x:%2.2x',[CurMac[0],CurMac[1],
CurMac[2],CurMac[3],CurMac[4],CurMac[5]])//格式话 主机的MAC地址
else result := '我日主机没开机或者网络不通';
end;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,WinSock, StdCtrls,unit2, Grids, ValEdit, ExtCtrls, ComCtrls;
From单元的引用 我已经测试过了 可以用
1、网络行为的识别:
可以用winpcap进行包捕获、解包、分析IM(qq/msn等)、p2p(迅雷/BT等)包特征进行匹配,识别到的进一步处理。2、对识别到的包,给回应一个tcpreset、或其他的icmp网络不可达报文达到阻断效果,或直接禁用不需要的应用端口。
http://www.jcb168.com