鱼C论坛

 找回密码
 立即注册
查看: 4650|回复: 19

[技术交流] 【纯C多线程端口扫描器】

[复制链接]
发表于 2015-7-6 10:34:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 迷雾少年 于 2015-7-6 10:36 编辑

QQ截图20150706102309.png
线程数和端口扫描范围在源码里 自己修改即可
原理还是全连接  :mad:   半连接扫描搞起来太麻烦了
程序还有些BUG自己修改即可
程序中加了些延时 不然太吃CPU
默认线程是100
QQ截图20150706102814.png

代码很简单还望大牛别喷:hug:
分两个文件 Hander.h 和  Main..C
/*文件 Hander.h */
#include <stdio.h>
#include <WinSock2.h>
#include <Windows.h>


#define 线程数  100
#define 端口末尾 65500
/* 类型定义 */
typedef unsigned short int  USHORT;
typedef void*               LPVOID;
/* 类型定义 */



/* 函数定义 */
void Thread  (USHORT Port);       /* 线程函数 */
int  PortScan(USHORT Port);       /* 端口扫描 检测某个IP的端口是否正常*/
void Startup();                   /* 初始化SOCKET环境 */

void Endup  ();                   /* 全部线程完成 */
/* 函数定义 */



/* 文件 Main.C */

#include "Hander.h"
char IpAddress[100] = {0};
void Thread(USHORT Port)
{  
 
        char number[10]={0};
        char title[20] = {"title"};
        if(Port<=端口末尾) 
        {
                /* 检测端口 */
                itoa(Port,number,10);
                
                lstrcatA(title," ");
                lstrcatA(title,number);
                system(title);

                Sleep(30);
                if(PortScan(Port))
                printf("打开服务:%d\n",Port);
                //else printf("错误:%d\n",Port);
        }
        

        if((Port)>=端口末尾) 
    { 
                if(Port==端口末尾)
                {
                        Endup();
                        return;
                }
            return;
        }
        
        /* 启动下一条 */
        Sleep(500);
        CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Thread,(LPVOID)(Port+线程数),NULL,NULL);
        
        
}

int PortScan(USHORT Port)
{
        SOCKET socketClient = {0};
        SOCKADDR_IN addrClient = {0};


        


        socketClient = socket(AF_INET,SOCK_STREAM,0);
        if(socketClient ==  INVALID_SOCKET )  return -1;
        addrClient.sin_addr.S_un.S_addr = inet_addr(IpAddress);
        addrClient.sin_family = AF_INET;
        addrClient.sin_port = htons(Port);
        //printf("%d号线程开始连接\n",Port);
        if(!connect(socketClient,(        SOCKADDR *)&addrClient,sizeof(SOCKADDR_IN)))
        {
                closesocket(socketClient);

                
                return 1;
        }

        
        return 0;

        
        

}
void Startup()
{
        WSADATA wsadata = {0};
        
        WSAStartup(MAKEWORD(2,0),&wsadata);


}
void Endup  ()
{
        printf("全部线程完成\n");
        /* 等待 */
        Sleep(100);
        /* 清除 */
        WSACleanup();


}
int main(void)
{
        USHORT Loop = 1;
        
        /*设置标题*/
        system("title 端口扫描器");
        system("color 2");


    printf("请输入扫描的IP地址或域名:");
        scanf("%s",IpAddress);
        /* 检测IP正确否 +  转换域名 检测 */

        /* 省略 */
        
        printf("\n【说明 】1.默认线程是255*3 端口扫描 1 - 65535 请自己修改源码 2.请直接输入能ping通的ip,不要输入域名 这部分代码还没写(┬_┬)\n");

        /* 检测IP正确否 +  转换域名 检测 */
    Startup();
        
        printf("正在扫描%s以下为改服务器开放端口\n",IpAddress);
        for (; Loop <= 线程数; Loop++)
        {
            
                CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Thread,(LPVOID)Loop,NULL,NULL);
        }
        
        scanf("%d",0);
        return 0;
}

复制文件编译 是否
有如下提示
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _PortScan 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__connect@12,该符号在函数 _PortScan 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _PortScan 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 _PortScan 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 _PortScan 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _Startup 中被引用
1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__WSACleanup@0,该符号在函数 _Endup 中被引用

想知道怎么解决就回帖吧:lol:






游客,如果您要查看本帖隐藏内容请回复

游客,如果您要查看本帖隐藏内容请回复



完整文件下载:
游客,如果您要查看本帖隐藏内容请回复
QQ截图20150706103109.png

评分

参与人数 2荣誉 +8 鱼币 +8 贡献 +6 收起 理由
Victory_6226 + 3 + 3 + 1
小人 + 5 + 5 + 5 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-6 11:08:47 | 显示全部楼层
在头文件下面  加上 #pragma comment(lib,"ws2_32.lib")   就可以编译了  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-6 11:20:45 | 显示全部楼层
小人 发表于 2015-7-6 11:08
在头文件下面  加上 #pragma comment(lib,"ws2_32.lib")   就可以编译了

:huffy:别说出来呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-6 11:22:14 | 显示全部楼层

好吧 ,说错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-7-6 15:32:18 | 显示全部楼层
Thread的port是谁给的值呢,不懂呢socket编程
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-7-6 17:07:13 From FishC Mobile | 显示全部楼层
Victory_6226 发表于 2015-7-6 15:32
Thread的port是谁给的值呢,不懂呢socket编程

从1开始,main函数循环启动线程通把liop传递过去
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-7 15:28:52 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-10 21:42:15 | 显示全部楼层
哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-18 16:04:17 | 显示全部楼层
自己写扫描器,碰到了很多问题,那大神的参考一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-18 16:14:23 | 显示全部楼层
huifu
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-3-19 10:11:37 From FishC Mobile | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-11-14 20:52:40 | 显示全部楼层
lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-1-26 07:39:29 | 显示全部楼层
自己写扫描器,碰到了很多问题,那大神的参考一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 17:56:45 | 显示全部楼层
lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 16:19:57 | 显示全部楼层
端口扫描器如何才能增加代码量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 22:51:56 | 显示全部楼层
看不懂,6666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 22:55:27 | 显示全部楼层
看不懂,,,666,,,,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-22 19:58:21 | 显示全部楼层
求大神指教
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-2 20:38:03 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-10 23:54:04 | 显示全部楼层
0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-14 00:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表