c++ 端口扫描程序实现案例

2025-05-27 0 26

第一、原理

端口扫描的原理很简单,就是建立socket通信,切换不通端口,通过connect函数,如果成功则代表端口开发者,否则端口关闭。

所有需要多socket程序熟悉,本内容是在window环境下的

第二、单线程实现方式

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
// PortScanf.cpp : 定义控制台应用程序的入口点。

//

#define WIN32_LEAN_AND_MEAN

#include "stdafx.h"

#include <WinSock2.h>

#pragma comment(lib, "Ws2_32")

int scant(char *Ip, int StartPort, int EndPort)

{

WSADATA wsa;

SOCKET s;

struct sockaddr_in server;

int CurrPort; //当前端口

int ret;

WSAStartup(MAKEWORD(2, 2), &wsa); //使用winsock函数之前,必须用WSAStartup函数来装入并初始化动态连接库

server.sin_family = AF_INET; //指定地址格式,在winsock中只能使用AF_INET

server.sin_addr.s_addr = inet_addr(Ip); //指定被扫描的IP地址

for (CurrPort = StartPort; CurrPort <= EndPort; CurrPort++)

{

s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);

server.sin_port = htons(CurrPort); //指定被扫描IP地址的端口号

ret = connect(s, (struct sockaddr *)&server, sizeof(server)); //连接

if (0 == ret) //判断连接是否成功

{

printf("%s:%d Success O(∩_∩)O~~\\n", Ip, CurrPort);

closesocket(s);

}

else {

printf("%s:%d Failed\\n", Ip, CurrPort);

}

}

printf("Cost time:%f second\\n", CostTime); //输出扫描过程中耗费的时间

WSACleanup(); //释放动态连接库并释放被创建的套接字

return 1;

}

int main()

{

scant("127.0.0.1", 75, 100);

return 0;

}

c++ 端口扫描程序实现案例

第三、多线程实现方式

由于单线程执行速度有些慢,我们加入多线程运行,

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28
typedef struct _tagValue

{

int start;

int end;

}PortNums;

void _cdecl beginThreadFunc1(LPVOID lpParam) {

PortNums *pnInt = (PortNums*)lpParam;

scan("127.0.0.1", pnInt->start, pnInt->end);

}

int a()

{

PortNums m1;

m1.start = 70;

m1.end = 500;

PortNums m2;

m2.start = 501;

m2.end = 1000;

_beginthread(beginThreadFunc1, 0, &m1);

_beginthread(beginThreadFunc1, 0, &m2);

getchar();

return 0;

}

注意需要#include<process.h>

c++ 端口扫描程序实现案例

以上这篇c++ 端口扫描程序实现案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 c++ 端口扫描程序实现案例 https://www.kuaiidc.com/74172.html

相关文章

发表评论
暂无评论