论坛: 编程破解 标题: 对一个域上的主机的特定端口做扫描的程序 复制本贴地址    
作者: coolcall [coolcall]    论坛用户   登录
通过几天的对VC的学习,我东拼西凑地写了个程序有几个问题不解
#include <winsock2.h>
#include "stdio.h"
#pragma comment(lib,"ws2_32")
#include <stdlib.h>

#include <windows.h>
void main()
{
WSADATA ws;
SOCKET s;
struct sockaddr_in addr;
int RESULT;
long LRESULT;
char abcd[20]={"61.139.245.001"};
char *buf=&abcd[0];
int i,y,j=1,x=1;
printf("start\n");
for(y=1;y<256;y++)
{x++;
j++;
LRESULT=WSAStartup(0x0101,&ws);
s=socket(PF_INET,SOCK_STREAM,0);
addr.sin_family=PF_INET;

if(j==11){j=1;abcd[12]++;abcd[13]='0';}
    if(x==101){x=1;abcd[11]++;abcd[12]='0';}
addr.sin_addr.s_addr=inet_addr(buf);
addr.sin_port=htons(135);
if(s==INVALID_SOCKET)
break;
RESULT=connect(s,(struct sockaddr*)&addr,sizeof(addr));
if(RESULT!=0)
{printf("%s:135 inactive\n",buf);

}
else{
printf("%s:135 on\n",buf);
scanf("%d",&i);
}
abcd[13]++;
}
}


这是对一个域的主机开的135端口进行扫描;
请问这是什么意思?我在程序里去掉他不行#pragma comment(lib,"ws2_32");
为什么扫描得那么慢??
(先不说多线程)扫描器是这样做的吗?


地主 发表时间: 05/08 10:28

回复: 286 [unique]   版主   登录
1. 请问这是什么意思?我在程序里去掉他不行#pragma comment(lib,"ws2_32");
不行,必须有,否则将报编译错误.

2. 为什么扫描得那么慢??
因为当对方不开机时,对该IP的连接肯定连不上,这样要到时间溢出时,才结束,
所以慢.如果你扫的网段内所有IP主机都开着.就会快一些.

3.(先不说多线程)扫描器是这样做的吗?
是的.



#include <winsock2.h>
#include "stdio.h"
#pragma comment(lib,"ws2_32")
#include <stdlib.h>

#include <windows.h>
void main()
{
WSADATA ws;
long LRESULT;
LRESULT=WSAStartup(0x0101,&ws);//该句初始化用,一次就够了.

SOCKET s;
struct sockaddr_in addr;
int RESULT;
int a=61,b=139,c=245,d;
char buf[20];

printf("start.........\n");
s=socket(PF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
return;

addr.sin_family=PF_INET;
addr.sin_port=htons(135);

for(y=1;y<256;y++)
{
sprint(buf,"%d.%d.%d.%d",a,b,c,d);
addr.sin_addr.s_addr=inet_addr(buf);

RESULT=connect(s,(struct sockaddr*)&addr,sizeof(addr));
if(RESULT!=0)
printf("%s:135 inactive\n",buf);
else
printf("%s:135 on\n",buf);

}
closesocket(s);  //这个别忘了.
}




B1层 发表时间: 05/08 12:29

回复: coolcall [coolcall]   论坛用户   登录
1.
请问~~~~,Sprintf();这函数是那个库的??(好像见过,但想不起来了)它应该是流的一类吗?
2。
我想int a=61,b=139,c=245,d;中的d,不要了吧!因为有了个y。(程序还没能编译,我把想法先讲出来,不懂对不对)。
  

B2层 发表时间: 05/08 23:55

回复: 286 [unique]   版主   登录
1. 不好意思,打错了,应该是sprintf,我也记不清是哪个库的,我遇到不MSDN中有个例子,其例的头文件只有stdio.h,所以,我想可能有这个就行了.
2. 该程序我也没编译,那个y应该变成d吧.不然,扫描的只是一个IP的.
我只是就你问题而答.如果你想再改进他,可能要改的地方还有很多.
你的这个扫描器相当于段IP同一端口的扫描,该类扫描器作用一般意义不太大.一般这类段IP扫同一端口的扫描器都是扫服务的.即使是端口扫描器,一般要扫描多个端口.




B3层 发表时间: 05/09 09:07

论坛: 编程破解

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

粤ICP备05087286号