资源简介
一个端口就是一个潜在的通信通道,也就是一个入侵通道。本程序用c语言是实现端口扫描
代码片段和文件信息
#include
#include //printf函数要用的头文件
#pragma comment(lib“ws2_32.lib“)
void Help(); //申明帮助函数
int main(int argc char* argv[])
{
//申明变量
WORD wVersion = MAKEWORD(20); //socket的版本
WSADATA wsaData;
//sockaddr_in结构
struct sockaddr_in sin;
int iFromPort; //开始端口
int iToPort; //结束端口
int iNowPort; //正在扫描的端口
char* cHost; //要扫描的主机
SOCKET s; //保存创建socket时的返回值
int iOpenPort; //开放端口个数
iOpenPort = 0;
//如果命令行下参数不是4个(包括portscan.exe本身),提示正确的用法
if(argc != 4)
{
// Help(); //给出帮助
return -1;
}
//保存用户输入的要扫描的起始端口和结束端口
//由于用户输入的是char型,所以要先转成int型
iFromPort = atoi(argv[2]);
iToPort = atoi(argv[3]);
cHost = argv[1];
//对用户输入的端口进行判断
if(iFromPort > iToPort || iFromPort < 0 || iFromPort >65535 || iToPort <0 || iToPort >65535)
{
printf(“起始端口不能大于结束端口,且范围为:1-65535!\n“);
return 0;
}
if (WSAStartup(wVersion &wsaData))
{
printf(“初始化失败!“);
return -1;
}
printf(“======= 开始扫描 =======\n“);
//循环连结端口,以判断端口是否开放
for(iNowPort = iFromPort; iNowPort <= iToPort; iNowPort++)
{
s = socket(AF_INETSOCK_STREAM0);
if(s == INVALID_SOCKET)
{
printf(“创建socket()失败!\n“);
WSACleanup();
}
//给结构成员赋值
sin.sin_family = AF_INET;
sin.sin_port = htons(iNowPort);
sin.sin_addr.S_un.S_addr = inet_addr(cHost);
//建立连结
if(connect(s(struct sockaddr*)&sinsizeof(sin)) == SOCKET_ERROR)
{
printf(“%s -> %d:未开放\n“cHostiNowPort);
closesocket(s);
}
else
{
printf(“%s -> %d:开放\n“cHostiNowPort);
iOpenPort ++;
closesocket(s);
}
}
printf(“======= 扫描结果 =======\n“);
printf(“主机:%s 扫描到%d个端口开放“cHostiOpenPort);
//关闭socket
closesocket(s);
WSACleanup();
return 0;
}
/*
//以下为帮助函数内容
void Help()
{
printf(“\nPortScan V1.0 by:∮明天去要饭\n“);
printf(“Usage:\n“);
printf(“ PortScan.exe \n“);
printf(“Example:\n“);
printf(“ PortScan.exe 127.0.0.1 135 445\n“);
}
*/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-06-04 10:54 端口扫描\
文件 2250 2011-05-29 16:42 端口扫描\port_scan.cpp
文件 3437 2011-05-29 16:37 端口扫描\port_scan.dsp
文件 543 2011-05-29 16:42 端口扫描\port_scan.dsw
文件 33792 2011-05-29 16:42 端口扫描\port_scan.ncb
文件 48640 2011-05-29 16:42 端口扫描\port_scan.opt
文件 769 2011-05-29 16:42 端口扫描\port_scan.plg
文件 2468 2011-05-29 16:50 端口扫描\port_scan2.cpp
文件 3449 2011-05-29 16:50 端口扫描\port_scan2.dsp
文件 545 2011-05-29 16:50 端口扫描\port_scan2.dsw
文件 41984 2011-05-29 16:50 端口扫描\port_scan2.ncb
文件 48640 2011-05-29 16:50 端口扫描\port_scan2.opt
文件 838 2011-05-29 16:50 端口扫描\port_scan2.plg
文件 1295 2011-05-29 17:02 端口扫描\port_scan3.cpp
文件 3449 2011-05-29 16:59 端口扫描\port_scan3.dsp
文件 545 2011-05-29 17:22 端口扫描\port_scan3.dsw
文件 41984 2011-05-29 17:22 端口扫描\port_scan3.ncb
文件 48640 2011-05-29 17:22 端口扫描\port_scan3.opt
文件 842 2011-05-29 17:02 端口扫描\port_scan3.plg
- 上一篇:C++控制播放/插入PPT等操作
- 下一篇:C++ 带接口类动态链接库开发
相关资源
- AES加密算法c语言实现代码
- C语言编在VC环境下带界面的计算器
- 键盘控制步进电机正反转和调速c语言
- 毕业设计图书管理系统C语言源代码,
- C语言版BM3D算法
- BayesShrink阈值图像小波去噪 c语言
- 用C语言对图像加高斯噪声
- 旅行商问题 C语言解法
- 二叉树的C语言实现,实现二叉树基本
- C语言马踏棋盘_实验报告+源代码
- 应用C语言编写ADAMS用户自定义函数的
- 模拟时钟转动程序
- C语言最小二乘法多项式拟合
- C语言FIR滤波器
- c语言课程设计之网络购物系统
- 大津法C语言实现方法
- 算术编码C语言程序编码解码,非自适
- 用C语言实现文件的模糊查找.pdf
- C语言中文分词源代码
- C语言大作业 菜单驱动的学生成绩管理
- apriori算法的c语言实现
- 编译原理课程设计广工C语言
- websocket编程C语言源码
- C语言解析IP数据包程序
- SHA HMAC 和SHA3基于Keccak加密算法测试代
- 霍夫曼编码的C语言实现
- 实验室设备管理系统c++代码
- dos图形界面例程c语言
- c语言万年历的课程设计及源码
- C语言 机房收费管理系统
评论
共有 条评论