利用C#设计端口扫描器

听丶夜半风雨

听丶夜半风雨

2016-02-19 15:07

下面请跟着图老师小编一起来了解下利用C#设计端口扫描器,精心挑选的内容希望大家喜欢,不要忘记点个赞哦!

  上网很久的朋友一定对端口扫描器不会陌生吧。XScanner,SuperScanner大家一定都使用过。

  今天我们就用最新的.Net技术来制作一个自己的端口扫描器!

  今天主要使用到的是System.Net和System.Threading名称空间.

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
12using System;3using System.Collections.Generic;4using System.Text;56using System.Net;7using System.Net.Sockets;89using System.Threading;1011namespace PortScanner12{13 class Program14 {15  //已扫描端口数目16  internal static int scannedCount = 0;17  //正在运行的线程数目18  internal static int runningThreadCount = 0;19  //打开的端口数目20  internal static Listint openedPorts = new Listint();21  //起始扫描端口22  static int startPort = 1;23  //结束端口号24  static int endPort = 500;25  //最大工作线程数26  static int maxThread = 100;27  static void Main(string[] args)28  {29   //接收传入参数一作为要扫描的主机30   string host = args[0];31   //接收传入参数二作为端口扫描范围,如1-400032   string portRange = args[1];33   startPort = int.Parse(portRange.Split('-')[0].Trim());34   endPort = int.Parse(portRange.Split('-')[1].Trim());3536   for (int port = startPort; port  endPort; port++)37   {38    //创建扫描类39    Scanner scanner = new Scanner(host, port);40    Thread thread = new Thread(new ThreadStart(scanner.Scan));41    thread.Name = port.ToString();42    thread.IsBackground = true;43    //启动扫描线程44    thread.Start();4546    runningThreadCount++;4748    Thread.Sleep(10);49    //循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术50    while (runningThreadCount = maxThread) ;51   }5253   //空循环,直到所有端口扫描完毕54   while (scannedCount + 1  (endPort - startPort)) ;5556    Console.WriteLine();57    Console.WriteLine();58    //输出结果59    Console.WriteLine("Scan for host: {0} has been completed ,total {1} ports scanned,opened ports :{2}",60 host, (endPort - startPort), openedPorts.Count);6162   foreach (int port in openedPorts)63    Console.WriteLine("  Port: {0} is open", port.ToString().PadLeft(6));64  }65 }6667 //扫描类68 class Scanner69 {70  string m_host;71  int m_port;72 73  public Scanner(string host, int port)74  {75   m_host = host; m_port = port;76  }7778  public void Scan()79  {80   //我们直接使用比较高级的TcpClient类81   TcpClient tc = new TcpClient();82   //设置超时时间83   tc.SendTimeout = tc.ReceiveTimeout = 2000;84   try85   {86    //Console.Write("Checking port: {0}", m_port);87    //尝试连接88    tc.Connect(m_host, m_port);89    if (tc.Connected)90    {91     //如果连接上,证明此商品为开放状态92     Console.WriteLine("Port {0} is Open", m_port.ToString().PadRight(6));93     Program.openedPorts.Add(m_port);94    }95   }96   catch (System.Net.Sockets.SocketException e)97   {98    //容错处理99    Console.WriteLine("Port {0} is closed", m_port.ToString().PadRight(6));100    //Console.WriteLine(e.Message);101   }102   finally103   {104    tc.Close();105    tc = null;106    Program.scannedCount++;107    Program.runningThreadCount--;108109    //Console.WriteLine(Program.scannedCount);110  111   }112  }113 }114}115116117

  好了,代码很简单吧!只能扫描TCP端口哦。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

利用C#设计端口扫描器

编程语言 网络编程
利用C#设计端口扫描器

一个简单的php在线端口扫描器

PHP
一个简单的php在线端口扫描器

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

涂书笔记:纸书扫描器

手机软件 应用软件
涂书笔记:纸书扫描器

C#中实现网段扫描的代码

编程语言 网络编程
C#中实现网段扫描的代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

C#软件启动设计

电脑网络
C#软件启动设计

App今日免费:情人节对对碰之指纹扫描器

手机软件 应用软件
App今日免费:情人节对对碰之指纹扫描器

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

罗云彬VxD教程--VxD例程:消息框

罗云彬VxD教程--VxD例程:消息框

JQuery 网站换肤功能实现代码

JQuery 网站换肤功能实现代码
下拉加载更多内容 ↓