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();
        }
    }
}

相关内容

热门资讯

电风扇通电不转,但是有电 原因可能是因为电风扇缺油了,可以通过给风扇注油试试,具体的注油方式是能将电机拆下来,然后再对主轴和前...
美的波轮洗衣机通电不转怎么回事 可能是洗衣机顶盖的安全开关损坏,安全开关与可以控制洗衣机的程序,所以需要更换安全开关;可能是异物卡住...
冰箱通电不启动是怎么回事? 可能是电路故障。电源线开路,电源线插头与插座接触不良,启动继电器、过载保护器接线端子脱落或接触不良,...
为什么我家里的燃气热水器通电不... 1、可能是水管内没有水流通过,热水器不工作。2、可能是电池电量低,无法推动点火器。3、可能是水压低造...
冰箱通电后压缩机不启动,但压缩... 1、非常有可能是因为冰箱的压缩机内高压输出缓冲管出现了断裂,造成高压管不排气低压管不吸气的这种状况,...
身高缩了,房子小了,胆子也怯了... 据日经中文网7月24日报道,日本经济长期停滞催生了“不断缩小”的社会倾向,近年来日本人的平均身高持续...
广东省内铁路即将全线停运 作者 | 第一财经 南英今年第12号台风“红霞”已于7月24日凌晨生成,预计25日夜间至26日早晨在...
中美频繁高层互动,菲律宾好自为... 7月24日,菲律宾组织7艘公务船、3艘海警舰、1艘运鱼船,并唆使大量渔船位中国黄岩岛管辖海域非法聚集...
被要求补税2250万欧元的法国... ·贝尔纳·阿尔诺。(LVMH官网)他的“帝国”离不开这个国家的形象加持,而这个国家,也早已吃定了这一...
通派龙湖御潮云上:当极核地段遇... 在2026年的郑州楼市版图中,如果要寻找一个能够同时承载“主城确定性”与“产品革新力”的坐标,通派龙...