端口扫描器程序(VB6.0代码编写) 端口扫描器 QQ223857666勾月
1
========================================================= 端口扫描: 这是从网上找到的,我的基本思路就是以这个为基础的。 这个实现的是:只扫描一台机器的的端口是否开放 如扫描 127.0.0.1这台机器 端口范围是:20-80(或者是其他的如:20-8080等) 这是最简易的扫描器 ========================================================= 连续IP段扫描: 这也是在控制台环境下运行的比起端口扫描多了一些功能 1 可以实现批量ip的扫描 2 端口填写灵活如:20,21,23,25,80-3389|或者|20-3389|或者|20-80,3389 自己写了一个ip地址累加的类,只需输入起始ip和结束ip就可以了 另外还添加了一些小功能。
2024-04-11 16:56:25 122KB 端口扫描 portScan Scan Scanner
1
端口扫描软件,各类端口扫描,快速,方便
2024-04-11 16:55:55 1.24MB 端口扫描
1
IP段端口扫描.rar
2024-04-11 16:54:15 5KB IP段端口扫描.rar
1
端口扫描器,扫端口用的工具。小小的工具好用。
2024-04-11 16:37:39 42KB 端口扫描器
1
易语言IP段端口扫描源码,IP段端口扫描,扫描IP段,开始扫描,连接客户,等待延时,打开网页,PeekMessage
1
易语言多线程端口扫描源码,多线程端口扫描,开始扫描,连接客户1
1
易语言开放端口扫描源码,开放端口扫描,扫描,循环,皮肤加载
2024-01-14 09:57:10 108KB 开放端口扫描 皮肤加载
1
易语言端口扫描源码,端口扫描,检查IP合法性,检查端口合法性,分解IP地址,分解端口号,线程超时结束守护,任务分发守护,查找空闲线程,查找超时线程,TCP扫描线程,UDP扫描线程
1
扫描多IP之多端口 ////////////////////////////////////////////////////////////////////////// //FileName: PortScanner.cpp //Data: 2009-04-18 //Remark: 扫描核心代码 ////////////////////////////////////////////////////////////////////////// #pragma once #include "Header.h" #include "resource.h" ////////////////////////////////////////////////////////////////////////// //端口器扫描初始化 ////////////////////////////////////////////////////////////////////////// BOOL InitPortScan() { WSADATA WsaData; //构建socket版本信息 WORD WsaVersion=MAKEWORD(2,2); //初始化网络 if(WSAStartup(WsaVersion,&WsaData;)!=0) { MessageBoxA(NULL,"WSAStartup fail;",NULL,NULL); return FALSE; } return TRUE; } ////////////////////////////////////////////////////////////////////////// //connect线程函数 ////////////////////////////////////////////////////////////////////////// DWORD WINAPI PortScanthread(LPVOID LpParam) { ThreadParam Param; //将参数复制 MoveMemory(&Param;,LpParam,sizeof(Param)); //将hCopyOkEvent设为有信号状态来通知扫描主线程进行下一次循环 SetEvent(Param.hCopyOkEvent); SOCKET Sock; SOCKADDR_IN SockAddr = {0}; //创建socket Sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); if (Sock==INVALID_SOCKET) { MessageBoxA(NULL,"INVALID_SOCKET",NULL,NULL); } //填充IP地址及端口信息 SockAddr.sin_family = AF_INET; SockAddr.sin_addr.s_addr = htonl(Param.Ip); SockAddr.sin_port = htons(Param.Port); //将IP地址转换为字符串 char *IpChar = inet_ntoa(SockAddr.sin_addr); char str[200]; if(connect(Sock,(SOCKADDR *)&SockAddr;,sizeof(SockAddr))==0) { //连接成功, sprintf(str,"%s : %d 连接成功\n",IpChar,Param.Port); } else { //连接失败 sprintf(str,"%s : %d 连接失败\n",IpChar,Param.Port); } //添加显示信息 InsertInfo(str); //释放一个信号量计数 ReleaseSemaphore(Param.hThreadNum,1,NULL); //关闭socket closesocket(Sock); return 0; } ////////////////////////////////////////////////////////////////////////// //扫描主线程 ////////////////////////////////////////////////////////////////////////// DWORD WINAPI MainThread(LPVOID LpParam) { MainThreadParam Param; //将参数复制 MoveMemory(&Param;,LpParam,sizeof(Param)); //将Param.hCopyEvent设置为有信号状态 SetEvent(Param.hCopyEvent); ThreadParam threadparam = {0}; //创建子线程的“参数复制完成”事件对象,并作为参数传入PortScanthread() HANDLE hThreadCopyOkEvent = CreateEvent(NULL,TRUE,FALSE,NULL); threadparam.hCopyOkEvent=hThreadCopyOkEvent; //创建一个信号量对象来控制子线程的总数量PortScanthread() HANDLE hThreadNum = CreateSemaphore(NULL,256,256,NULL); threadparam.hThreadNum = hThreadNum; //循环connect for (DWORD Ip = Param.StartIp;Ip<=Param.EndIp;Ip++) { for (DWORD Port = Param.StartPort;Port<=Param.EndPort;Port++) { //等待hThreadNum发出信号(表示有可有线程) DWORD WaitRes =WaitForSingleObject(hThreadNum,200); if (WaitRes==WAIT_OBJECT_0) { threadparam.Ip=Ip; threadparam.Port=Port; CreateThread(NULL,0,PortScanthread,&threadparam;,0,NULL); //等待其子线程发出“参数复制完毕”的信号 WaitForSingleObject(threadparam.hCopyOkEvent,INFINITE); //重置threadparam.hCopyOkEvent为无信号状态 ResetEvent(threadparam.hCopyOkEvent); } else if(WaitRes==WAIT_TIMEOUT) { Port--; continue; } } } return 0; }
2023-12-11 08:02:58 4.09MB vc++
1