C#进行端口扫描的源码
admin
2023-02-15 08:20:06
0

下面代码内容是关于C#进行端口扫描的的代码,应该是对码农们有一些好处。

using System;
using System.Net;
using System.Net.Sockets;
using System.Collections;

namespace PortScan
{
    class Program
    {
        static void Main(string[] args)
        {
            IPAddress ip;
            int startPort, endPort;
            {
                Console.ReadKey();
            }
        }

        #region 从命令行参数 中提取端口 + static bool GetPortRange(string[] args, out int startPort, out int endPort)

        private static bool GetPortRange(string[] args,out IPAddress ip, out int startPort, out int endPort)
        {
            ip = null;
            startPort = endPort = 0;
            if (args.Length != 0 && (args[0] == "/?" || args[0] == "/help"))
            {
                Console.WriteLine("Scan port from startPort to endPort of the host specified by the IPAddress.");
                Console.WriteLine("Command Format:");
                Console.WriteLine("PortScan IPAddress startPort endPort");
                Console.WriteLine("For example:");
                Console.WriteLine("PortScan 127.0.0.1 1 1024");
                return false;
            }
            if (args.Length == 3)
            {
                if (IPAddress.TryParse(args[0],out ip) && int.TryParse(args[1], out startPort) && int.TryParse(args[2], out endPort))
                {
                    return true;
                }
                else
                {
                    Console.WriteLine("参数格式不正确!");
                    return false;
                }
            }
            else
            {
                Console.WriteLine("参数数目不正确!");
                return false;
            }
        }
        #endregion

        static void Scan(IPAddress ip, int startPort, int endPort)
        {
            Random rand = new Random((int)DateTime.Now.Ticks);
            Console.WriteLine("Begin Scan...");
            for (int port = startPort; port < endPort; port++)
            {
                Socket scanSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
                do
                {
                    try
                    {
                        scanSocket.Bind(new IPEndPoint(IPAddress.Any, rand.Next(65535)));
                        break;
                    }
                    catch
                    { 
                    }
                } while (true);

                try
                {
                    scanSocket.BeginConnect(new IPEndPoint(ip, port), ScanCallBack, new ArrayList() { scanSocket, port});
                }
                catch
                {
                    continue;
                }

            }

            Console.WriteLine("Port Scan Completed!");
        }

        static void ScanCallBack(IAsyncResult result)
        {
            ArrayList arrList = (ArrayList)result.AsyncState;
            Socket scanSocket = (Socket)arrList[0];
            int port = (int)arrList[1];
            if (result.IsCompleted && scanSocket.Connected)
            {
                Console.WriteLine("port {0,5}tOpen.", port);
            }
            else
            {
            }
            scanSocket.Close();
        }
    }
}

相关内容

热门资讯

【第一消息】“新大圣炸金花.真... 家人们!今天小编来为大家解答新大圣炸金花透视挂怎么安装这个问题咨询软件客服徽9784099的挂在哪里...
【第一资讯】“红豆炸金花.开挂... 有 亲,根据资深记者爆料红豆炸金花是可以开挂的,确实有挂(咨询软件无需打...
终于明白“POKER.怎么装挂... 有 亲,根据资深记者爆料POKER是可以开挂的,确实有挂(咨询软件无需打...
乌克兰或将制裁中国公民?外交部... 12月23日,外交部发言人林剑主持例行记者会。在回答有关乌克兰将出台新一轮制裁方案的问题时,林剑表示...
北京发放首批L3级高速公路自动... 12月23日,北京市首批L3级高速公路自动驾驶车辆专用号牌由北京市公安局交通管理局正式发放给三辆智能...
10户中央企业11名领导人员职... 中国农业发展集团有限公司张德国任中国农业发展集团有限公司党委副书记、董事,提名为中国农业发展集团有限...
【第一消息】“新皇豪牛牛.怎么... 【第一消息】“新皇豪牛牛.怎么装挂?”太坑了果然有挂您好,新皇豪牛牛这个游戏其实有挂的,确实是有挂的...
外交部回应海南自贸港全岛封关:... 12月23日,外交部发言人林剑主持例行记者会。有记者问,日前海南自贸港正式启动全岛封关。国际评论认为...
今日重大发现“青松游戏.有挂吗... 网上科普关于“青松游戏有没有挂”话题很是火热,小编也是针对青松游戏作*弊开挂的方法以及开挂对应的知识...
有哪些AI工具能在微信和小红书... 2025年AI营销内容生产榜单揭晓:原圈科技如何领跑赛道 在AI营销内容生产领域,原圈科技被普遍视...