网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
网络扫描器的设计与实现
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
,将文件的扩展名修改为NFS,由NFS的调用模块调用执行,编写的插件源代码包括如下两个数据结构:  
  
struct RECORD   
  
{ char classname[50]; //插件所属的类型名  
  
char ID; //标名插件的类及成员关系  
  
char membername[50]; //插件的成员名称  
  
char filename[50]; //插件对应的文件名(不含路径)  
  
char risk; //标名风险的等级  
  
char description[300]; //该插件对应的文字描述  
  
char advice[300]; //该插件提供的一些建议  
  
bool mark; //标识该插件是否被某一模板选中  
  
}record; //建立信息说明数据库,内容包括插件所属的类型名、插件的类及成员关系、插件对应的文件名、风险的等级、提供的建议等。优点是主调模块可自动加载插件文字说明部分,存储到数据库中,便于主程序快速调用,易于开发人员的管理和配置。  
  
struct HOST   
  
{ char ip[15]; //目标主机的IP地址  
  
int mark; //标示buff的类别  
  
char buff[200]; //动态返回信息  
  
int timeout; //超时控制变量  
  
}host; //指定了插件运行的参数,包括目标主机IP地址、动态返回信息及标示类别与超时控制变量,主机IP和超时控制参数由主调模块传递。优点是使插件富有灵活性和扩展性。两个标准函数:extern"C" __declspec( dllexport )BOOL InitFunc(struct RECORD *record)   
  
和extern "C" __declspec( dllexport ) BOOL ApplFunc(struct HOST *host) 前者便于插件管理和使用,后者根据不同参数实现相关功能。  
  
3.3 编程示例  
  
在设计方案中依照扫描内容将插件分为20多类,这里对具有普遍性和代表性的例子加以分析说明(篇幅所限仅列出插件中主要函数部分代码)。  
  
(1)检测Microsoft SQL Server 是否有DDoS漏洞  
  
extern "C" __declspec( dllexport ) BOOL InitFunc(struct RECORD *record)   
  
{ strcpy(record->advice,"过滤发向端口1433的数据包。"); //建议  
  
strcpy(record->classname,"DDoS"); //类型  
  
strcpy(record->description,"SQL server接收连续0信号TCP包时被非法关闭");   
  
strcpy(record->filename,"mssqlserver_dos.nfs");   
  
strcpy(record->ID,"6XX"); //编号  
  
strcpy(record->membername,"mssqlserver_dos");   
  
strcpy(record->risk,"严重"); //等级   
  
record->mark=true;   
  
return true;}   
  
extern "C" __declspec( dllexport ) BOOL ApplFunc(struct HOST *host)   
  
{ struct sockaddr_in sad; //structure to hold server''s address   
  
struct hostent *ptrh; //pointer to host entry   
  
SOCKET sd; char buf; memset(buf,0,6);   
  
memset((char *)&sad,0,sizeof(sad)); //clear sockaddr structure   
  
ptrh=NULL;   
  
sad.sin_port=htons(1433); // SQL通信端口号1433   
  
sad.sin_addr.s_addr=inet_addr(host->ip);   
  
sad.sin_family=AF_INET;   
  
sd=socket(PF_INET,SOCK_STREAM,0); // TCP连接  
  
if (sd<0) {return FALSE;}   
  
if (connect(sd,(struct sockaddr *)&sad,sizeof(sad))<0)   
  
{closesocket(sd); return FALSE;}   
  
buf[0]=0x00; buf=0x00; buf=0x00;   
  
buf=0x00; buf=0x00; buf=0x00;   
  
send(sd,buf,sizeof(buf),0);   
  
closesocket(sd); Sleep(2000); //等待  
  
sd=socket(PF_INET,SOC
  • 上一篇资讯: VC命名管道通信的实现
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号