|
![]() | 作者: 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号