端口扫描程序实现原理

jackxiang 2010-3-21 23:47 | |
原创  端口扫描程序实现原理 收藏

以前看过很多网络相关方面的程式源码, 但时间长了都忘了怎么实现的了, 因此,想将以后看过的源码实现方式记录下来, 以免下次再得找资源!

其实端口扫描程式的原理很简单, 利用socket连接指定IP的端口, 根据其返回值就可以得知目标机器是否开启了这个端口,

实现步骤如下:

1. 创建socket

    c_socket = socket ( AF_INET, SOCK_STREAM, 0 );
    if ( c_socket == SOCKET_ERROR )
    {
         printf (" create socket fault!\n ");
         return -1;
    }
2. 连接目示机器

    struct sockaddr_in remoteaddr;
    struct hostent*    remotehost;
    remoteaddr.sin_family = AF_INET;
    remoteaddr.sin_addr.s_addr   = inet_addr ( Address );
    remoteaddr.sin_port          = htons ( cPort );

    //连接
    if  ( connect ( c_socket, (SOCKADDR*) &remoteaddr, sizeof ( struct sockaddr_in ) ) == SOCKET_ERROR )
    {
         printf ("< %3d >  connect port %5d  ...\n",ThreadID,cPort ) ;
         closesocket( c_socket);
         return -1;
    }
    closesocket( c_socket);

    printf ("< %3d >  connect port %5d  succeed\n",ThreadID,cPort ) ;

也可以利用多线程技术实现, 只要给每个线程分配好指定的扫描端口段就可以了

来源:
http://blog.csdn.net/study_live/archive/2009/09/28/4604673.aspx

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/2854/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]