第一、原理

端口扫描的原理很简单,就是建立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;

}

  

第三、多线程实现方式

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

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++ 实现端口扫描(转载)相关推荐

  1. linux系统端口扫描工具,[命令] Linux 端口扫描工具 nmap 的使用(转载)

    注意:在使用 nmap 命令之前要先安装 nmap 软件包 Nmap 简介 Nmap ("Network Mapper(网络映射器)") 是一款开放源代码的 网络探测和安全审核的工 ...

  2. portscaner 多线程、多协程并发端口扫描

    import socket,time,re,sys,os,threading import gevent from gevent import monkey monkey.patch_all()soc ...

  3. 黑客渗透入门教程 第一课:粗暴的端口扫描

    很多人想学黑客知识,却不知如何入门,网上的教程也太繁琐,小白看了也头疼,那还是我来写黑客系列入门教程吧,跟着我做,你能黑客入门的. 端口扫描是指发送一组扫描消息,了解其提供的计算机网络服务类型(这些网 ...

  4. Kali linux 2016.2(Rolling)中metasploit的端口扫描

    目前常见的端口扫描技术一般有如下几类: TCP  Connect.TCP SYN.TCP ACK.TCP FIN. Metasploit中的端口扫描器 Metasploit的辅助模块中提供了几款实用的 ...

  5. 端口扫描系统实践心得

    端口扫描系统实践心得 from:https://www.freebuf.com/articles/es/201210.html 端口扫描对任何一名网络安全从业者来说都不陌生,但作为一名小白,在甲方做扫 ...

  6. python 指定端口读取网站_Python实现局域网指定端口扫描

    Python实现局域网指定端口扫描 import socket import threading # 创建接收路由列表 routers = [] # 创建互斥锁 lock = threading.Lo ...

  7. Nmap——主机、端口扫描工具

    nmap 其基本功能有三个,一是探测一组主机是否在线:其次是扫描主机端口,嗅探所提供的网络服务:还可以推断主机所用的操作系统 . 这是百度给的介绍:http://baike.baidu.com/lin ...

  8. 7.python实现高效端口扫描器之nmap模块

    对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...

  9. Perl多线程ping加端口扫描

    加了一些注释,主要是为了复习一些包的使用.还有多线程的一些使用方法. #!/usr/bin/perl use Getopt::Long; #这个包使用来做选项用的 use threads; #这个是线 ...

最新文章

  1. Activity的启动模式总结
  2. Running Builds
  3. 文献记录(part4)--Sparse Biclustering of Transposable Data
  4. 正则表达式语法(转)
  5. 漫画:什么是优先队列
  6. 第二十二期:动画讲解TCP,再不懂请来打我
  7. ECharts 仪表盘的轴线宽度修改
  8. 青岛达内php培训多少钱_北京北京青岛椅群 多少钱
  9. 计算机组成原理(三)--存储器的层次结构
  10. 编译安装android7.0,android7.0 源码编译问题总结
  11. 机器学习技法2-Dual Support Vector Machine
  12. Centos7 安装solr及配置
  13. 郝斌java_郝斌Java自学教程全集打包
  14. GCA matting(2020, trimap)
  15. SVG进阶-sprite 雪碧图
  16. 黑产以及一般业务安全的应对思路
  17. opencv下载过慢的问题
  18. 数学建模--综合评价方法
  19. python识别火车票二维码_Python 实现火车票查询工具
  20. 北京拓保世纪:以硬技术为根本,用专业力量传递价值!

热门文章

  1. Java初学者作业——学生成绩等级流程图练习
  2. 企业级服务器内存位置,真相!企业级内存条到底牛在哪儿?
  3. Cmake 安装路径和install 命令解析
  4. 投ISTP收录论文要注意什么?
  5. 空风吹起满盘绿,四大品种创年内新低
  6. 没有立场的专业人士最容易背锅
  7. Vue3+Element-Plus 实现左侧菜单折叠与展开功能 二七
  8. Windows 10 安装PowerBuilder 9.0卡死解决方法
  9. 必学习的前后端交互框架ajax
  10. 基于自适应遗传算法的异构多无人机协同任务分配