端口快速扫描程序(c#版 一次可发起1000个连接)
前言 为了探测本机或对方开放了哪些端口,需要用到端口扫描程序。扫描端口的原理很简单:就是尝试连接对方;如果成功,对方就开放了此端口。扫描程序的关键是速度,如果一次只能发起几个连接,显然速度太慢。如果对方的端口没开放,发起一次连接到知道连接失败通常需要几秒的时间。
本程序可以实现一次性发起1000个连接(这个连接数可以设定),如果这1000个连接,有某个连接知道了结果,就会继续发起连接。总之,程序正在尝试的连接保持在1000个。这样扫描的速度就会大大增加。
注:一次性发起的连接数可以远超1000个,但是这样可能会导致程序占用资源太多;再者,对方服务器发现大量有正在尝试的连接,可能会拒绝服务:即使有些端口开放了,也探测失败。
下载地址:端口快速扫描程序。
实现原理
iocp是Windows下最高效的处理socket方式。iocp不仅可以作为服务端,也可以作为客户端发起连接,实现原理基本一样。如果客户端发起1000个连接,程序并不会启用1000个线程,而是充分利用了iocp底层处理机制。具体实现原理本文不多述。
程序使用

设置好ip和端口,点击添加,程序会开始扫描。扫描结果列表显示。可以将列表结果复制到剪切板。
后记:程序的难点就是实现iocp封装。端口扫描只是iocp的一个小小的应用。本人多年前就开始接触iocp编程,对iocp实现了很好的封装;封装库非常易于使用,扫描程序就是使用此封装库实现的。只用短短的半天就开发完成。
端口快速扫描程序(c#版 一次可发起1000个连接)的更多相关文章
- PJzhang:端口快速扫描工具masscan
猫宁!!! 参考:https://www.freebuf.com/sectool/112583.html github地址: https://github.com/robertdavidgraham/ ...
- 端口扫描程序nmap使用手册
其实还是建议看英文的man,对以后学习其他东西很有帮助的:) 摘要 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等 ...
- python 端口扫描程序
#! /usr/bin/env python3 #-*- coding:utf-8 -*- import socket import threading OPEN_COUNT = 0 lock = t ...
- golang快速扫描
利用golang的并发优势快速扫描端口 Scanner startIp [endIp] port thread package main import ( "flag" " ...
- C# Winform 通过FlowLayoutPanel及自定义的编辑控件,实现快速构建C/S版的编辑表单页面
个人理解,开发应用程序的目的,不论是B/S或是C/S结构类型,无非就是实现可供用户进行查.增.改.删,其中查询用到最多,开发设计的场景也最为复杂,包括但不限于:表格记录查询.报表查询.导出文件查询等等 ...
- 基本完成了一个SEGY扫描程序
利用Seismic.NET编写了一个SEG-Y文件的扫描程序,可以自动判断道头字中主测线号.横测线号.X坐标和Y坐标的位置,自动快速扫描地震数据体中的拐点坐标.10GB多的数据体几十秒全部扫描完成! ...
- Windows中根据端口定位持有者程序
之前被一个问题所困扰, 电脑过一段时间就无法上网, 查询netstat, 会有大量的端口被占用, 但是看不出来是哪个程序开启的 ( 最终定位到是ADSafe搞得鬼 ) . 后来发现几个命令可以根据端口 ...
- 【Socket】linux网络扫描程序开发
1.mystery引入 1)系统入侵步骤:系统发现->漏洞探测->漏洞利用->痕迹清除 2)扫描器分类:主机与网络扫描器:端口服务扫描器:服务漏洞扫描器 3)T ...
- 12种开源Web安全扫描程序
转自:https://blog.csdn.net/wh211212/article/details/78620963 赛门铁克的一个有趣的报告显示,76%的被扫描网站有恶意软件 如果您使用的是Word ...
随机推荐
- 解决java导入project出现红叉
1.右击,import,选择需要导入的文件组. D:\softwar\seeyon\A8\ApacheJetspeed\webapps\seeyon\WEB-INF\lib 全选,打开,finish ...
- 字体图标引入到HTML---复制用代码
第一步:在样式里面声明字体: 告诉别人我们自己定义的字体 ps: font-family的名字可以自己起 src是引入了4种字体,不用修改的 @font-face { font-family: 'ic ...
- printf打印字节调试
void print(BYTE *data, INT len) { INT x = 0; INT y = 0; if(data == NULL) { return; } for(x = 0; x &l ...
- Android App自动更新解决方案(DownloadManager)
一开始,我们先向服务器请求数据获取版本 public ObservableField<VersionBean> appVersion = new ObservableField<&g ...
- python中Socket的使用
说明 前一段时间学习python网络编程,完成简单的通过python实现网络通信的功能.现在,将python中Socket 通信的基本实现过程做一个记录备份. Socket通信 python 中的so ...
- JDK10源码分析之HashMap
HashMap在工作中大量使用,但是具体原理和实现是如何的呢?技术细节是什么?带着很多疑问,我们来看下JDK10源码吧. 1.数据结构 采用Node<K,V>[]数组,其中,Node< ...
- 微信小程序如何使用 Git 实现版本管理和协作开发
前言 在微信小程序开发的过程中,代码版本管理往往需要使用第三方工具进行管理.虽然微信Web开发工具提供了对Git文件版本状态的提示,但实际的使用体验依然不尽人意. 随着微信Web开发工具的更新,最新的 ...
- 【洛谷P4148】简单题(kd-tree)
传送门 题意: 给出一个\(n*n\)的棋盘,现在有两种操作:一种是某个格子里的数字加上\(A\),另一种是询问矩阵和. 空间限制:\(20MB\),强制在线. 思路: 直接\(kd-tree\)来搞 ...
- Jmeter Question 之 ‘批量执行SQL语句’
第一步: MySql数据库:jdbc:mysql://ip:3306/数据库名?useUnicode=true&characterEncoding=utf8&allowMultiQue ...
- centos7虚拟机端口命令
cat /etc/redhat-release # 查看centos 版本 Centos7端口常见命令 虚拟机新开了5005端口,系统内部是显示开了的,但是外部不能访问端口. 一些需要用到的命令: ...