鱼C论坛

 找回密码
 立即注册
查看: 4476|回复: 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
  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^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> 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, 2024-4-25 17:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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