惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
H
Help Net Security
F
Fortinet All Blogs
MyScale Blog
MyScale Blog
宝玉的分享
宝玉的分享
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 司徒正美
量子位
N
Netflix TechBlog - Medium
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Recorded Future
Recorded Future
博客园 - 三生石上(FineUI控件)
Vercel News
Vercel News
aimingoo的专栏
aimingoo的专栏
I
InfoQ
Microsoft Security Blog
Microsoft Security Blog
Scott Helme
Scott Helme
The Last Watchdog
The Last Watchdog
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
AI
AI
WordPress大学
WordPress大学
Security Archives - TechRepublic
Security Archives - TechRepublic
Google Online Security Blog
Google Online Security Blog
U
Unit 42
V2EX - 技术
V2EX - 技术
MongoDB | Blog
MongoDB | Blog
Schneier on Security
Schneier on Security
博客园 - Franky
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
W
WeLiveSecurity
P
Privacy & Cybersecurity Law Blog
Cloudbric
Cloudbric
B
Blog RSS Feed
N
News | PayPal Newsroom
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
I
Intezer
Hacker News - Newest:
Hacker News - Newest: "LLM"
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
博客园_首页
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More
雷峰网
雷峰网

博客园 - 云的恬淡,风的自由

现在我空仓!随时出击,不是现在,是在将来,要知什么时候,常来这里看看! 沪市,深市创近年来最大走跌幅 理解ASP.NET中的三层中的DAL、BLL和USL(转自51aspx) 隐藏的文件夹 基本应用程序的创建和部署 创建部署项目 汇编代码 照片尺寸 ASCII 基本字符对照表 一个函数控制多个按纽的两种方法 - 云的恬淡,风的自由 - 博客园 button的command和click事件的区别 c#编写QQ群发器 datagridview分页时直接到指定页 世界各地域名后缀对照表 建立隐藏帐号 端口服务对照表 GridView学习 csdn中的一些asp.net2.0好文章 Asp.net学习资源收藏
网络扫描器
云的恬淡,风的自由 · 2007-09-17 · via 博客园 - 云的恬淡,风的自由

网络扫描器

Posted on 2007-09-17 08:50  云的恬淡,风的自由  阅读(152)  评论()    收藏  举报

using System;
  3using System.Collections.Generic;
  4using System.Text;
  5
  6using System.Net;
  7using System.Net.Sockets;
  8
  9using System.Threading;
 10
 11namespace PortScanner
 12{
 13    class Program
 14    {
 15        //已扫描端口数目
 16        internal static int scannedCount = 0;
 17        //正在运行的线程数目
 18        internal static int runningThreadCount = 0;
 19        //打开的端口数目
 20        internal static List<int> openedPorts = new List<int>();
 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            //接收传入参数二作为端口扫描范围,pmT|=-Zh6]Ym!08EO:lL育R8xl管F络软13ZFv*Y如1-4000
 32            string portRange = args[1];
 33            startPort = int.Parse(portRange.Split('-')[0].Trim());
 34            endPort = int.Parse(portRange.Split('-')[1].Trim());
 35
 36            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();
 45
 46                runningThreadCount++;
 47
 48                Thread.Sleep(10);
 49                //循环,]中g垠i'?d6x
t网教教+件业4L管X+
直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术
 50                while (runningThreadCount >= maxThread) ;
 51            }
 52
 53            //空循环,直到所有端口扫描完毕
 54            while (scannedCount + 1 < (endPort - startPort)) ;
 55
 56            Console.WriteLine();
 57            Console.WriteLine();
 58            //输出结果
 59            Console.WriteLine("Scan for host: {0} has been completed , \n total {1} ports scanned, \nopened ports :{2}",
 60                host, (endPort - startPort), openedPorts.Count);
 61
 62            foreach (int port in openedPorts)
 63                Console.WriteLine("\tPort: {0} is open", port.ToString().PadLeft(6));
 64        }
 65    }
 66
 67    //扫描类
 68    class Scanner
 69    {
 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        }
 77
 78        public void Scan()
 79        {
 80            //我们直接使用比较高级的TcpClient类
 81            TcpClient tc = new TcpClient();
 82            //设置超时时间
 83            tc.SendTimeout = tc.ReceiveTimeout = 2000;
 84            try
 85            {
 86                //Console.Write("Checking port: {0}", m_port);
 87                //尝试连接
 88                tc.Connect(m_host, m_port);
 89                if (tc.Connected)
 90                {
 91                    //如果连接上,
I(RO专ALvTUy\kmt
的^8\0RrO==m~I理2+y证明此商品为开放状态
 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            finally
103            {
104                tc.Close();
105                tc = null;
106                Program.scannedCount++;
107                Program.runningThreadCount--;
108
109                //Console.WriteLine(Program.scannedCount);
110
111            }
112        }
113    }
114}
115
116