端口扫描器制作入门练习

试验目的:学会制作端口扫描器

端口扫面是网络安全或网络管理中必不可少的.想必大家经常也看到过不少功能强大的扫描器了,比如 流光,Nessus,Nmap,X-Scan等等.这些扫描器聚集了相当强大的功能,网络管理员有了他们能很方便的检测到系统运行状态,以便管理,当然也有的人用他来嗅探别人的主机企图入侵.但是不管哪种,想要更好的运用工具唯一的方法就是熟悉工具.理解他的工作原理.以下列举几点网络扫描的重要性:

  • 扫描器能够暴露网络上潜在的脆弱性
  • 无论扫描器被管理员利用,或者被黑客利用,都有助于加强系统的安全性.
    它能使得漏洞被及早发现,而漏洞迟早会被发现的.
  • 发现系统存活情况,以及哪些服务在运行;
    用已知的漏洞测试这些系统;
    对一批机器进行测试,简单的迭代过程;
    有进一步的功能,包括操作系统辨识、应用系统识别.
  • 当然,他还能满足很多人的好奇心.
下面开始介绍端口扫描器的入门制作.
试验环境:VC++6.0
 
端口主要有两个参数.一个是string类型ip,一个是int类型port.因此我们先来添加两个变量,如下(本来打算帖图,但是怎么也贴不上去:
控制变量                            类型                         成员变量
IDC_IPADDRESS            CString             m_ip
IDC_PORT                 UINT                m_port
然后,我们建立一个TestConnection函数实现扫描过程.
函数主要是通过建立一个Socket,然后通过Connect方法测试端口是否打开.因此测试的结果是True or False, 所以这个TestConnection应该是返回一个bool值的函数.
bool CScanner1Dlg::TestConnection(CString IP , UINT nPort)
{
   //注意TestConnection里面的2个参数;
     CSocket* pSocket;
     pSocket = new CSocket;
     ASSERT ( pSocket );
     if(!pSocket -> Create())
  {
        delete pSocket;
        pSocket = NULL;
        return false;
  }
     while(! pSocket->Connect(IP,nPort))
  {
     //这里调用了Connect方法测试端口状态;
        delete pSocket ;
        pSocket = NULL ;
        return false ;
  }
     pSocket ->Close();
     delete pSocket ;
     return true ;
}
端口扫描就完成了,下面就是生成报告了. 生成报告这里用一个listbox,listbox中用一个InsertString()函数来完成报告显示.
void CScanner1Dlg::OnButton1()
{
 // Button1就是扫描按钮. 这里面主要是几个参数传递;
    UpdateData(true);
    CString strResult;
    if (TestConnection(m_ip,m_port))
 {
     strResult.Format("端口%d开放!",m_port);
  //   MessageBox(strResult);
  m_list.InsertString(-1,strResult);
 }
    else
 {
     strResult.Format("端口%d没开放!",m_port);
  //   MessageBox(strResult);
  m_list.InsertString(-1,strResult);
 }
}
检测端口状态就这么点.怎么样,是否觉得不可思议的简单呢??当然这个扫描器可不能上面列举的扫面器相比,因为我们这个扫描器只能一次扫描一个ip地址的一个端口.这当然不能用来实用.更不能用他来管理网络了.因为他的速度实在太慢了. 我们需要的是一次能扫描几十个甚至几百个IP并且要满足每个ip的所有端口都能一次扫描到,而且不影响其他程序运行.这就需要用到线程. 好了,今天就介绍到这里,下次我们要学会把线程的概念带到我们的程序中.  88!
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值