目录

  • 前期准备
  • 单线程端口扫描
  • 多线程端口扫描
  • 引用

前期准备


首先进入vs2015新建一个项目

选择窗体应用程序

在From1.cs将应用界面设计好,需要注意对文本框编辑性和按钮的属性要一一确认,具体操作可参考鄙人上一篇博客

单线程端口扫描

对于单线程的端口扫描可参考如下代码

using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
namespace PortScan
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//自定义变量private int port;//记录当前扫描的端口号private string Address;//记录扫描的系统地址private bool[] done = new bool[65536];//记录端口的开放状态private int start;//记录扫描的起始端口private int end;//记录扫描的结束端口private bool OK;private void button1_Click(object sender, EventArgs e){label4.Text = textBox2.Text;label6.Text = textBox3.Text;progressBar1.Minimum = Int32.Parse(textBox2.Text);progressBar1.Maximum = Int32.Parse(textBox3.Text);listBox1.Items.Clear();listBox1.Items.Add("端口扫描器v1.0.");listBox1.Items.Add("");PortScan();}private void  PortScan(){start = Int32.Parse(textBox2.Text);end = Int32.Parse(textBox3.Text);//判断输入端口是否合法if((start>=0&&start<=65536)&&(end>=0&&end<=65536)&&(start<=end)){listBox1.Items.Add("开始扫描:这个过程可能需要等待几分钟!");Address = textBox1.Text;for(int i = start; i <= end; i++){port = i;Scan();progressBar1.Value = i;label5.Text = i.ToString();}while (!OK){OK = true;for(int i = start; i <= end; i++){if (!done[i]){OK = false;break;}}}listBox1.Items.Add("扫描结束!");}else{MessageBox.Show("输入错误,端口范围为[0,65536]");}}//连接端口private void Scan(){int portnow = port;done[portnow] = true;TcpClient objTCP = null;try{objTCP = new TcpClient(Address, portnow);listBox1.Items.Add("端口"+portnow.ToString()+"开放");}catch{}}}
}


运行以后出现上图所示窗口,依次输出指定信息后便可开始扫描

扫描成功!

多线程端口扫描

对于多线程端口扫描,可参考如下代码

using System;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace PortScan
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//自定义变量private int port;//记录当前扫描的端口号private string Address;//记录扫描的系统地址private bool[] done = new bool[65536];//记录端口的开放状态private int start;//记录扫描的起始端口private int end;//记录扫描的结束端口private bool OK;private Thread scanThread;  //将输入的起始端口放到进度条的开始位置private void label4_TextChanged(object sender, EventArgs e){label4.Text = textBox2.Text;}//将输入的结束地址放到进度条的结束位置private void label6_TextChanged(object sender, EventArgs e){label6.Text = textBox3.Text;}private void button1_Click(object sender, EventArgs e){label4_TextChanged(sender, e);label6_TextChanged(sender, e);//创建线程,并创建ThreadStart委托对象Thread procss = new Thread(new ThreadStart(PortScan));procss.Start();//显示端口扫描范围progressBar1.Minimum = Int32.Parse(textBox2.Text);progressBar1.Maximum = Int32.Parse(textBox3.Text);//显示框的初始化listBox1.Items.Clear();listBox1.Items.Add("端口扫描器v1.0.");listBox1.Items.Add("");}private void PortScan(){start = Int32.Parse(textBox2.Text);end = Int32.Parse(textBox3.Text);//检查端口的合法性if ((start >= 0 && start <= 65536) && (end >= 0 && end <= 65536) && (start <= end)){listBox1.Items.Add("开始扫描:这个过程可能需要等待几分钟!");Address = textBox1.Text;for (int i = start; i <= end; i++){port = i;//对该端口进行扫描的线程scanThread = new Thread(Scan);scanThread.Start();//使线程睡眠System.Threading.Thread.Sleep(100);progressBar1.Value = i;label5.Text = i.ToString();}//未完成时情况while (!OK){OK = true;for (int i = start; i <= end; i++){if (!done[i]){OK = false;break;}}}listBox1.Items.Add("扫描结束!");System.Threading.Thread.Sleep(1000);}else{MessageBox.Show("输入错误,端口范围为[0,65536]");}}private void Scan(){int portnow = port;//创建线程变量Thread Threadnow = scanThread;done[portnow] = true;//创建TcpClient对象,TcpClient用于TCP网络服务提供客户端连接TcpClient objTCP = null;//扫描端口,成功就写入信息try{objTCP = new TcpClient(Address, portnow);listBox1.Items.Add("端口" + portnow.ToString() + "开放!");}catch{}}}
}


多线程端口扫描的工作效率比单线程高很多,所以可以将端口数扩大范围,在这里扫描到80端口开放,说明此电脑正在进行http服务

接下来还有其她端口也处于开放状态,说明电脑正在运行其他服务选项

引用

本实验报告参考自
https://blog.csdn.net/qq_43279579/article/details/109686607
以上!

TCP编程-端口扫描器相关推荐

  1. TCP编程——端口扫描器与网游客户端

    文章目录 一.端口扫描器程序 1.1.单线程 1.2.多线程 一.端口扫描器程序 1.1.单线程 1.创建工程 选择类型 设置界面 代码 using System; using System.Coll ...

  2. 3. Port scanners (端口扫描器 4个)

    3. Port scanners (端口扫描器 4个) 愤怒的IP扫描器是一个小的开源Java应用程序,它执行主机发现("ping扫描")和端口扫描. 旧的2.x版本只有Windo ...

  3. Python3实现TCP端口扫描器

    本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...

  4. 【Python黑帽子】——搭建TCP端口扫描器

    作者名:Demo不是emo  主页面链接:主页传送门 创作初心:一切为了她 座右铭:不要让时代的悲哀成为你的悲哀 专研方向:网络安全,数据结构 每日emo:唯有信仰与日月亘古不变 经过一段时间pyth ...

  5. 【Python脚本进阶】2.1、端口扫描器(上):TCP全连接扫描

    目录 一.简介 1.1.基础: 1.2.TCP: 二.TCP全连接扫描 2.1.简介: 2.2.函数: 2.3.实现: 第一步:获得主机名和端口 第二步: connScan和portScan函数 第三 ...

  6. [Python黑帽] 三.编程实现IP及端口扫描器、实现多线程C段扫描器

    Python黑帽第三篇文章将分享网络扫描基础知识,编程实现IP及端口扫描器.实现多线程C段扫描器.本文参考了<Python绝技>书籍和i春秋ADO老师的课程内容,这里真心推荐大家去学习ic ...

  7. socket网络编程——TCP编程流程及端口号占用问题

    1.TCP编程流程 1.1TCP服务器端客户端及方法介绍 TCP 提供的是面向连接的.可靠的.字节流服务.TCP 的服务器端和客户端编程流程如下: socket()方法是用来创建一个套接字,有了套接字 ...

  8. Java网络编程(网络基础(IP端口号网络通信协议)、TCP编程、UDP编程和URL编程原理以及常用方法的实例)

    网络编程 网络基础概述 计算机网络:   把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大.功能强的网络系统,从而使众多的计算机可以方便地互相传递信息.共享硬件.软件.数据信息等 ...

  9. 用Python3实现端口扫描器

    Python3 端口扫描器 用python3 实现 connect syn udp扫描 话不多说,直接上代码 1.connect.py #!/usr/bin/python3 # -*- coding: ...

  10. C语言网络编程:TCP编程模型

    编程模型 TCP编程模型如下 TCP服务器的工作过程如下: 服务器创建一个专门的"文件描述符"来监听来自客户端的"三次握手",然后建立链接 链接建立成功后,服务 ...

最新文章

  1. 阿里云邀您参加2020年数据湖高峰会议
  2. excel不显示0_Excel数字过长不能完整显示?超长数字变为0
  3. 【HDU - 1943】Ball bearings(几何问题)
  4. 趣文:程序员等级图鉴
  5. @Builder 实际参数列表和形式参数列表长度不同
  6. 无线传感网2-传感器布局方法
  7. 一个Repeater的分页方法
  8. Xcode真机调试不了,提示 “Please reconnect the device”
  9. 题解——洛谷P2827 NOIP提高组 2016 蚯蚓
  10. 2022春山东大学人工智能导论期末题库附答案
  11. “高精尖领域”的3D打印是这么玩 …
  12. 揭秘第三方支付包含哪些业务 | 牌照角色篇
  13. c语言语法基础知识,英语语法_英语语法基础知识
  14. [Learn Android Studio 汉化教程]Reminders实验:第一部分(续)
  15. rxjava面试题,android教程零基础入门
  16. 简历制作 | 保研 | 考研复试
  17. jqgrid setCell 单元格赋值空字符串 无效处理
  18. 安卓修改包名和Project
  19. java中的for语句格式_Java中foreach循环语句的格式可以写成(        )。
  20. 失掉京东流量入口,易鑫汽车平台交易业务再萎缩

热门文章

  1. 输入汉语星期几输出英文c语言程序,c输入1234567,输出英语星期日期
  2. 三种健身妙法-每天五分钟简便易行有宏效
  3. G 音乐鉴赏(非二分解法)
  4. Mac M1 修改/usr/bin文件夹显示permission denied 没有权限的问题
  5. Mac Brew安装及换源教程
  6. mta android 网速监控,网速监控
  7. 高德API实现地理逆编码
  8. Android Title标题栏的修改(隐藏,菜单)
  9. 【Verilog基础】数字电路-逻辑式化简公式(附吸收律推导过程)
  10. 硅谷的工作狂文化在冠状病毒的压力下变化-苹果,谷歌,Facebook,LinkedIn和优步推出了新的在家工作政策