C#-端口扫描器

时间:2018-09-29 15:12:21

标签: c# proxy port

我试图制造端口扫描器,但由于某种原因,它无法正常工作:

代理列表:

138.68.169.8

我的代码:

    private static string IP = "";

    static void Main(string[] args)
    {
        UserInput();
        PortScan();
        Console.ReadKey();
    }

    private static void UserInput()
    {
        Console.WriteLine("IP Address:", Color.Lime);
        IP = Console.ReadLine();
    }

    private static void PortScan()
    {
        Console.Clear();
        TcpClient Scan = new TcpClient();
        foreach(int s in Ports)
        {
            try
            {
                Scan.Connect(IP, s);
                Console.WriteLine($"[{s}] | OPEN", Color.Green);
            }
            catch
            {
                Console.WriteLine($"[{s}] | CLOSED", Color.Red);
            }
        }
    }

    private static int[] Ports = new int[]
    {
        8080,
        51372,
        31146,
        4145
    };

例外:

[8080] | OPEN
[51372] | CLOSEDSystem.Net.Sockets.SocketException (0x80004005): A connect request was made on an already connected socket

其他端口具有相同的例外。

proxy:port不同时为什么说打开端口?

1 个答案:

答案 0 :(得分:0)

  

在已连接的套接字上发出了连接请求

该错误消息表示您已经建立了连接,并且您正在尝试使用同一客户端建立另一个连接。您应该先关闭第一个连接,然后再打开另一个。

我会将TcpClient移到循环内的using块中,以便关闭连接并将客户端置于两次连接尝试之间:

foreach(int s in Ports)
{
    using (TcpClient Scan = new TcpClient())
    {
        try
        {
            Scan.Connect(IP, s);
            Console.WriteLine($"[{s}] | OPEN", Color.Green);
        }
        catch
        {
            Console.WriteLine($"[{s}] | CLOSED", Color.Red);
        }
    }
}