论坛: 编程破解 标题: 谁能提供端口扫描源代码啊?我编不出来 复制本贴地址    
作者: cindyangel [cindyangel]    论坛用户   登录
我做扫描器,不要界面,一个exe文件,对端口进行扫描,返回值为打开得端口号,要用多种扫描方法。

比如有三种扫描的方法
第一种返回(25,110)
第二种返回(25,111)
第三种返回(25,110)
那么总的返回值为(25,110,111)
返回值为扫描到打开得端口号


地主 发表时间: 05/11 17:06

回复: temp2002 [temp2002]   论坛用户   登录
yuleibo@tytxy.com


有时间来 http://softdiy.com  来讨论编程问题。我们主要谈论编程。

B1层 发表时间: 05/12 07:20

回复: xuehu [xuehu]   论坛用户   登录
你是C编的吗,你可以给我代码吗?zhxf3000@yaho.com.cn

B2层 发表时间: 05/12 12:01

回复: cindyangel [cindyangel]   论坛用户   登录
#include <winsock.h>//头文件,如果是调用winsocke2的函数,应该包括winsock2.h
#include <stdio.h>
#pragma comment(lib,"ws2_32")
void main(int argc,char **argv)
{
WORD wVersionRequested;

WSADATA wsaData;

SOCKET sClntSock;//套接字

sockaddr_in addr;

TIMEVAL timeout;

int nSockErr;//错误代码号

int i_port;//对端口号循环的变量

wVersionRequested=MAKEWORD(1,1);//生成版本号
nSockErr=WSAStartup(wVersionRequested,&wsaData);
if(nSockErr!=0)
{
printf("Cound't find a .dll file!");
return;
}
//是否支持1.1版本
if(LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1)
{
printf(".dll cound't be used by user!");
WSACleanup();
return;
}



//测试端口是否打开
for(i_port=25;i_port<=111;i_port++)
{

//创建流式套接字
sClntSock=socket(AF_INET,SOCK_STREAM,0);
addr.sin_family=AF_INET;
addr.sin_addr.s_addr=htonl(INADDR_ANY);
addr.sin_port=htons(i_port);

if(connect(sClntSock,(LPSOCKADDR)&addr,sizeof(addr)))
{ //端口未打开
nSockErr=WSAGetLastError();
timeout.tv_sec=2;
timeout.tv_usec=0;
//printf("connect error:  %d\n",nSockErr);
}
else
{ //测到打开的端口
printf("\nThe Port---- %d  is opened!\n ",i_port);
timeout.tv_sec=2;
timeout.tv_usec=0;
}

//关闭套接字
int closesocket(sClntSock);
}


}

有个问题,为什么我这个程序只能扫描到一个端口??


B3层 发表时间: 05/13 21:45

回复: ranchuan [ranchuan]   版主   登录
好像你的套接口如果连接上一个端口,就不会连接下一个端口,所以你应该在扫描端口开放的时候,应该将套接口设为NULL

B4层 发表时间: 05/16 16:33

回复: ricky [ricky]   版主   登录
程序好像没有大的问题,不过好多机器从21到111就开了1个端口,你用SUPERSCAN做做看,和你的结果是否一致

B5层 发表时间: 05/16 16:50

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号