QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

资深鱼友Ⅰ

Rank: 8Rank: 8Rank: 8Rank: 8

积分
1129
查看: 1099|回复: 11

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

[复制链接]
最佳答案
0 
累计签到:235 天
连续签到:1 天
迷雾少年 发表于 2015-7-6 10:34:02 109911 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

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

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

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

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


  5. #define 线程数  100
  6. #define 端口末尾 65500
  7. /* 类型定义 */
  8. typedef unsigned short int  USHORT;
  9. typedef void*               LPVOID;
  10. /* 类型定义 */



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

  15. void Endup  ();                   /* 全部线程完成 */
  16. /* 函数定义 */
复制代码




  1. /* 文件 Main.C */

  2. #include "Hander.h"
  3. char IpAddress[100] = {0};
  4. void Thread(USHORT Port)
  5. {  

  6.         char number[10]={0};
  7.         char title[20] = {"title"};
  8.         if(Port<=端口末尾)
  9.         {
  10.                 /* 检测端口 */
  11.                 itoa(Port,number,10);
  12.                
  13.                 lstrcatA(title," ");
  14.                 lstrcatA(title,number);
  15.                 system(title);

  16.                 Sleep(30);
  17.                 if(PortScan(Port))
  18.                 printf("打开服务:%d\n",Port);
  19.                 //else printf("错误:%d\n",Port);
  20.         }
  21.        

  22.         if((Port)>=端口末尾)
  23.     {
  24.                 if(Port==端口末尾)
  25.                 {
  26.                         Endup();
  27.                         return;
  28.                 }
  29.             return;
  30.         }
  31.        
  32.         /* 启动下一条 */
  33.         Sleep(500);
  34.         CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Thread,(LPVOID)(Port+线程数),NULL,NULL);
  35.        
  36.        
  37. }

  38. int PortScan(USHORT Port)
  39. {
  40.         SOCKET socketClient = {0};
  41.         SOCKADDR_IN addrClient = {0};


  42.        


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

  52.                
  53.                 return 1;
  54.         }

  55.        
  56.         return 0;

  57.        
  58.        

  59. }
  60. void Startup()
  61. {
  62.         WSADATA wsadata = {0};
  63.        
  64.         WSAStartup(MAKEWORD(2,0),&wsadata);


  65. }
  66. void Endup  ()
  67. {
  68.         printf("全部线程完成\n");
  69.         /* 等待 */
  70.         Sleep(100);
  71.         /* 清除 */
  72.         WSACleanup();


  73. }
  74. int main(void)
  75. {
  76.         USHORT Loop = 1;
  77.        
  78.         /*设置标题*/
  79.         system("title 端口扫描器");
  80.         system("color 2");


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

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

  87.         /* 检测IP正确否 +  转换域名 检测 */
  88.     Startup();
  89.        
  90.         printf("正在扫描%s以下为改服务器开放端口\n",IpAddress);
  91.         for (; Loop <= 线程数; Loop++)
  92.         {
  93.             
  94.                 CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)Thread,(LPVOID)Loop,NULL,NULL);
  95.         }
  96.        
  97.         scanf("%d",0);
  98.         return 0;
  99. }
复制代码


复制文件编译 是否
有如下提示
  1. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__closesocket@4,该符号在函数 _PortScan 中被引用
  2. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__connect@12,该符号在函数 _PortScan 中被引用
  3. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__htons@4,该符号在函数 _PortScan 中被引用
  4. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__inet_addr@4,该符号在函数 _PortScan 中被引用
  5. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__socket@12,该符号在函数 _PortScan 中被引用
  6. 1>Main.obj : error LNK2019: 无法解析的外部符号 __imp__WSAStartup@8,该符号在函数 _Startup 中被引用
  7. 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^_^

查看全部评分

楼层
跳转到指定楼层
最佳答案
6 
累计签到:632 天
连续签到:2 天
小人 发表于 2015-7-6 11:08:47 | 显示全部楼层
在头文件下面  加上 #pragma comment(lib,"ws2_32.lib")   就可以编译了  
最佳答案
0 
累计签到:235 天
连续签到:1 天
迷雾少年  楼主| 发表于 2015-7-6 11:20:45 | 显示全部楼层
小人 发表于 2015-7-6 11:08
在头文件下面  加上 #pragma comment(lib,"ws2_32.lib")   就可以编译了

:huffy:别说出来呀
最佳答案
6 
累计签到:632 天
连续签到:2 天
小人 发表于 2015-7-6 11:22:14 | 显示全部楼层

好吧 ,说错了
最佳答案
1 
累计签到:90 天
连续签到:1 天
Victory_6226 发表于 2015-7-6 15:32:18 | 显示全部楼层
Thread的port是谁给的值呢,不懂呢socket编程
最佳答案
0 
累计签到:235 天
连续签到:1 天
迷雾少年  楼主| 发表于 2015-7-6 17:07:13 From FishC Mobile | 显示全部楼层
Victory_6226 发表于 2015-7-6 15:32
Thread的port是谁给的值呢,不懂呢socket编程

从1开始,main函数循环启动线程通把liop传递过去
最佳答案
0 
累计签到:9 天
连续签到:1 天
99101553@qq.com 发表于 2016-9-7 15:28:52 | 显示全部楼层
最佳答案
0 

尚未签到

15172480523 发表于 2016-11-10 21:42:15 | 显示全部楼层
哈哈
最佳答案
0 
累计签到:12 天
连续签到:1 天
天再旦 发表于 2017-3-18 16:04:17 | 显示全部楼层
自己写扫描器,碰到了很多问题,那大神的参考一下
最佳答案
0 
累计签到:12 天
连续签到:1 天
天再旦 发表于 2017-3-18 16:14:23 | 显示全部楼层
huifu
最佳答案
1 
累计签到:79 天
连续签到:1 天
jdp7385 发表于 2017-3-19 10:11:37 From FishC Mobile | 显示全部楼层
谢谢
最佳答案
0 

尚未签到

cylance 发表于 2017-11-14 20:52:40 | 显示全部楼层
lol

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.1 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2017-11-25 06:20

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