网络程序之端口扫描技术
2007-03-08 12:13
369 查看
网络程序之端口扫描技术
端口扫描是是网络安全软件中所必须有的一个功能.这个功能模块其实就是探测目地方主机已开放的端口.这样能检测一些漏洞,防止一些损失.其实探测对方主机端口有时我们用dos中自带的工具就可以.
你比如:进入cmd下.输入telnet www.sina.com.cn 80这个指令后,就能看到新浪的这个80端口是不是开放了.
具体到用高级语言如何实现这一功能呢?首先我们要理解它的原理.一台机器中它的端口如果开放,我们可以认为它正在侦听到来的连接,也就是说我们可以连接到它.网络库中提供了这么一个函数.connect().用这个函数我们来个循环探测从1到65535.分析其返回值.这样就能知道对方开放了几个端口.如果我们在创建套接字时也指定是UDP,那么我们也能探测UDP端口对方开了几个.但要注意UDP这个方式有一定的漏洞.因为UDP不是面向连接的.另外在这个编程中我们最好用到多线程方式,以便于操作.
下面是代码:
#include<winsock2.h>
#include<stdio.h>
#include <iostream.h>
void main()
{
WSADATA wsaData;
SOCKET sClient;
struct sockaddr_in server;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("加载套接字失败/n");
return ;
}
sClient=socket(AF_INET,SOCK_STREAM,0);
if(sClient==INVALID_SOCKET)
{
printf("创建套接字失败:%d/n",WSAGetLastError());
// return ;
}
for(int iPort = 1 ;iPort <82 ; iPort ++)
{
server.sin_family=AF_INET;
server.sin_port=htons(iPort);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(sClient,(struct sockaddr *)&server,sizeof(server))==INVALID_SOCKET)
{
printf("端口没有开放%d/n",iPort);
}
else
{
printf("端口开放%d/n",iPort);
}
}
}
当然不要忘了加载ws2_32.lib这个网络库
端口扫描是是网络安全软件中所必须有的一个功能.这个功能模块其实就是探测目地方主机已开放的端口.这样能检测一些漏洞,防止一些损失.其实探测对方主机端口有时我们用dos中自带的工具就可以.
你比如:进入cmd下.输入telnet www.sina.com.cn 80这个指令后,就能看到新浪的这个80端口是不是开放了.
具体到用高级语言如何实现这一功能呢?首先我们要理解它的原理.一台机器中它的端口如果开放,我们可以认为它正在侦听到来的连接,也就是说我们可以连接到它.网络库中提供了这么一个函数.connect().用这个函数我们来个循环探测从1到65535.分析其返回值.这样就能知道对方开放了几个端口.如果我们在创建套接字时也指定是UDP,那么我们也能探测UDP端口对方开了几个.但要注意UDP这个方式有一定的漏洞.因为UDP不是面向连接的.另外在这个编程中我们最好用到多线程方式,以便于操作.
下面是代码:
#include<winsock2.h>
#include<stdio.h>
#include <iostream.h>
void main()
{
WSADATA wsaData;
SOCKET sClient;
struct sockaddr_in server;
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0)
{
printf("加载套接字失败/n");
return ;
}
sClient=socket(AF_INET,SOCK_STREAM,0);
if(sClient==INVALID_SOCKET)
{
printf("创建套接字失败:%d/n",WSAGetLastError());
// return ;
}
for(int iPort = 1 ;iPort <82 ; iPort ++)
{
server.sin_family=AF_INET;
server.sin_port=htons(iPort);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
if(connect(sClient,(struct sockaddr *)&server,sizeof(server))==INVALID_SOCKET)
{
printf("端口没有开放%d/n",iPort);
}
else
{
printf("端口开放%d/n",iPort);
}
}
}
当然不要忘了加载ws2_32.lib这个网络库
相关文章推荐
- 网络端口扫描技术全攻略
- 【Linux技术】linux网络扫描程序开发
- 网络端口扫描技术全攻略
- 网络端口扫描技术详细介绍
- [原创]Nmap网络端口扫描工具介绍
- 今天把以前的端口扫描程序改了下,主要是易用性和界面部分
- linux下端口扫描程序(C)
- 端口扫描程序nmap使用手册
- 信息安全技术实验二 网络扫描实验+ARP攻击
- lesson 11:使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- 交换网络安全防范系列五之802.1x-基于端口的网络访问控制技术
- linux c 简单端口扫描程序
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- metasploit 情报搜集技术【4】网络漏洞扫描
- C#编写的多线程端口扫描程序!
- 端口扫描程序nmap使用详解
- 【Socket】linux网络扫描程序开发
- 端口扫描技术
- 用Python写的一个简单的端口扫描程序
- 网络扫描技术揭秘