⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpps.cpp

📁 dosattack完成的功能:ip隐藏dos攻击 攻击使用流程: 1.运行可执行文件
💻 CPP
字号:
#pragma pack (4)
#pragma comment (lib, "Ws2_32.lib")

#include <stdio.h>
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdlib.h>
#include <iostream.h>

#define STATUS_FAILED  0xFFFF             //错误码
unsigned long serverIP;                   //扫描的服务器地址
long MaxThread = 200;                     //最大允许的扫描线程数
long ThreadCount = 0;                     //当前正在扫描的线程数
long *aa=&ThreadCount;

DWORD WINAPI ScanPort(LPVOID lpParam);    //扫描端口的线程

void main (int argc, char *argv[])
{
        if(argc!=2)
        {
                cout<<"usage: tcpportscan ScanUsePort serverip "<<endl;
                return;
        }
        WSADATA WSAData;
        if(WSAStartup(MAKEWORD(2,2),&WSAData) != 0)    //开始使用Ws2_32.dll
        {
                cout<<"WSAStartup failed: "<<GetLastError()<<endl;
                ExitProcess(STATUS_FAILED);
        }

        serverIP=inet_addr(argv[1]);
        cout<<"使用中的端口号: "<<endl;

        for(int i=1;i<1024;i++)
        {
                while (ThreadCount >= MaxThread)             //超过最大允许线程数,等待
                {
                        Sleep(10);
                }
                DWORD ThreadID;
                //创建线程,扫描端口
                CreateThread(NULL,0,ScanPort,(LPVOID)new short(i),0,&ThreadID);
        }

        while (ThreadCount > 0)                         //还有未完成的线程,等待
        {
                Sleep(50);
        }
        WSACleanup();     //调用WSACleanup函数来解除与Socket库绑定并且释放Socket库所站用的系统资源
}

//扫描断口的线程
DWORD WINAPI ScanPort(LPVOID lpParam)
{
        short Port = *(short*)  lpParam;
        InterlockedIncrement(aa);                     //线程数目+1

        SOCKET sock=socket(AF_INET, SOCK_STREAM, 0);   //创建原始套接字

        if(sock == INVALID_SOCKET)
        {
                cout<<"创建套接字失败!"<<endl;
                return 0;
        }
        else
        {
                sockaddr_in severAddr;                    //搜索的服务器IP
                severAddr.sin_family = AF_INET;
                severAddr.sin_port = htons(Port);         //端口地址
                severAddr.sin_addr.S_un.S_addr=serverIP;  //IP地址
                //判断此端口是否打开
                connect(sock, (sockaddr*)&severAddr, sizeof(severAddr));

                struct fd_set write;                      //写socket集合
                FD_ZERO(&write);
                FD_SET(sock, &write);

                struct timeval timeout;                   //超时
                timeout.tv_sec = 100/1000;
                timeout.tv_usec = 0;

                //设置超时时间
                if(select (0,NULL,&write,NULL,&timeout) > 0)
                {
                        cout<<Port<<endl;
                }
                closesocket(sock);                 //关闭socket
        }
        InterlockedDecrement(aa);             //进程数-1
        return 0;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -