第一、原理

端口扫描的原理很简单,就是建立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. JQuery操作checkbox、radio
  2. matlb中如何设置坐标轴的参数以及进行绘图的如何进行注释
  3. 『中级篇』Docker-Stack部署投票应用(50)
  4. 客户组网服务案列_山西seo关键词排名优化案列
  5. fastjson php,Fastjson 对象或数组转JSON
  6. word中插入emf,svg图像的注意事项
  7. LOJ #10130 点的距离
  8. XPath详解,总结
  9. mysql5.7.22.zip使用,mysql5.7.22 zip 版安装
  10. 用SPSS做数据分析时遇到的几个小问题——解决方法!
  11. WinRM(Windows远程管理)介绍,Python远程操作Windows
  12. 【算法学习笔记】4:贪心法,回溯法,分支限界法,解空间树剪枝
  13. 牛客小白月赛24 D.牛妹吃豆子
  14. oracle 12c新特性 FETCH FIRST、WITH TIES 关键字详解
  15. 参与openEuler社区不到1年,我成为了社区Maintainer……
  16. Designing an Encoder for StyleGAN Image Manipulation论文解读
  17. 数十年军旅,钢铁意志成就他的技术颠峰
  18. Python人脸识别——从入门到工程实践
  19. 北京航班延误_预测航班延误
  20. 千万别小瞧九宫格 一道题就能让候选人原形毕露!

热门文章

  1. mysql查询手机号199开头_使用199开头的号码是怎样的体验?
  2. rtx3090能组成超级计算机吗,惊人的核心怎么来的?RTX3090架构魔术揭秘
  3. MMI:全球前50大EMS厂商营收超3000亿美元
  4. 项目测试(学生宿舍管理系统)
  5. 自己动手制作更好用的markdown编辑器-01
  6. VMware NSX-T 3.0 Manager Install
  7. ie9此更新不适用于你的计算机,64位win7 sp1 安装ie9失败 先决条件Windows6.1-KB2454826-v2-x64这个补丁也装不上...
  8. java读取.properties配置文件的几种方法
  9. 生日祝福html_每周便当| 魔法便当盒里的生日蛋糕,祝佳佳八岁生日快乐!
  10. 怎么让更多的人填写问卷?