zoukankan      html  css  js  c++  java
  • c# 扫描端口 上海

     好久没写东西,工作太忙,人也懒了点,无聊之中,随便学点东西,一个简单的端口扫描,可以试着改进 :
     
          

    //===========================================================
    //   C# 实现端口扫描
    //===========================================================
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Net;
    using System.Net.Sockets;

    using System.Threading;

    namespace ConsoleApplication3
    {
        class Program
        {
            //已扫描端口数目
            internal static int scannedCount = 0;

            internal static int runningThreadCount = 0;

            internal static List<int> openedPorts = new List<int>();

            static int startPort = 1;
            static int endPort = 500;

            static int maxThread = 100;

           
            static void Main(string[] args)
            {
                //简单提示
                Console.WriteLine("////////////////////////////////////////////////////////////////////////////////////");
                Console.WriteLine("//  Writer;Feeling");
                Console.WriteLine("////////////////////////////////////////////////////////////////////////////////////");
                Console.WriteLine("请输入要扫描的主机;");
                string host = Console.ReadLine();
                Console.WriteLine("请输入扫描的端口 例如:1-800");
                string portRange =Console.ReadLine();
                startPort = int.Parse(portRange.Split('-')[0].Trim());
                endPort = int.Parse(portRange.Split('-')[1].Trim());

                for (int port = startPort; port < endPort; port++)
                {
                    Scanner scanner = new Scanner(host, port);
                    Thread thread = new Thread(new ThreadStart(scanner.Scan));
                    thread.Name = port.ToString();
                    thread.IsBackground = true;
                    thread.Start();

                    runningThreadCount++;
                    Thread.Sleep(10);

                    //循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术
                    while (runningThreadCount >= maxThread) ;
                }
                   //空循环,直到所有端口扫描完毕
                  while (scannedCount + 1 < (endPort - startPort)) ;
                  Console.WriteLine();
                  Console.WriteLine();

                 //输出结果
                  Console.WriteLine("Scan for host:{0} has been completed, \n total {1} ports scanned, \n opened ports:{2}", host, (endPort - startPort), openedPorts.Count);

                  foreach (int port in openedPorts)
                  {
                      Console.WriteLine("\tport: {0} is open", port.ToString().PadLeft(6)); 
                  }

                  Console.ReadLine();
                
            }
        }

        class Scanner
        {
            string m_host;
            int m_port;

            public Scanner(string host, int port)
            {
                m_host = host;
                m_port = port;
            }
            public void Scan()
            {
                TcpClient tc = new TcpClient();
                tc.SendTimeout = tc.ReceiveTimeout = 2000;

                try
                {
                    tc.Connect(m_host, m_port);
                    if (tc.Connected)
                    {
                        Console.WriteLine("Port {0} is Open", m_port.ToString().PadRight(6));
                        Program.openedPorts.Add(m_port);
                    }
                }
                catch
                {
                    Console.WriteLine("Port {0} is Closed", m_port.ToString().PadRight(6));
                }
                finally
                {
                    tc.Close();
                    tc = null;
                    Program.scannedCount++;
                    Program.runningThreadCount--;
                }
            }

        }
    }

  • 相关阅读:
    django笔记
    pandas dataframe的合并(append, merge, concat)
    pandas删除行删除列,增加行增加列
    github上值得关注的前端项目
    CSS布局奇淫技巧之--各种居中
    级联菜单
    鼠标移入移出改变透明度
    图片轮播特效
    图片放大镜效果
    css3多列布局
  • 原文地址:https://www.cnblogs.com/luozhai714/p/1076181.html
Copyright © 2011-2022 走看看