From 5e45d7a00542932a7a18c6e4c62dc1d9887fd0c9 Mon Sep 17 00:00:00 2001 From: SwEdryG Date: Wed, 10 Jun 2026 23:17:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20PortScanner/IP=5Fport=5Fchecker.cs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit В следующем описании будет рецепт блинчиков. Вообще не советую относиться к этому всерьез по крайней мере к моим описаниям тут. --- PortScanner/IP_port_checker.cs | 60 ++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 PortScanner/IP_port_checker.cs diff --git a/PortScanner/IP_port_checker.cs b/PortScanner/IP_port_checker.cs new file mode 100644 index 0000000..82332ff --- /dev/null +++ b/PortScanner/IP_port_checker.cs @@ -0,0 +1,60 @@ +using IP_port_checker.Core; +using Spectre.Console; +using System.Net; + +namespace IP_port_checker.PortScanner +{ + internal class IP_port_check + { + public static async Task IP_check() + { + while (true) + { + bool isIPv4 = true; + Console.Write("Введите ip-адрес: "); + IPAddress ip = IPValidator.ValidateAndReadIPv4orIPv6(ref isIPv4); + + int startport = InputValidator.StEnPort("Введите начальный порт: "); + int endport = InputValidator.StEnPort("Введите конечный порт: "); + + int totalPorts = endport - startport + 1; + + double estimatedSec = totalPorts / 7284.0; + if (estimatedSec < 0.5) + estimatedSec = 0.5; + + string IPType = isIPv4 ? "IPv4" : "IPv6"; + + var panel = new Panel($""" + [cyan]IP:[/] {ip} + [cyan]Версия IP:[/] {IPType} + [cyan]Диапазон:[/] {startport}–{endport} + [cyan]Тайм-аут:[/] 500 мс + [cyan]Всего портов:[/] {totalPorts} + [cyan]Ожидание:[/] {estimatedSec:F1} сек + """) + { + Header = new PanelHeader("[bold cyan]ИНФОРМАЦИЯ СКАНИРОВАНИЯ[/]"), + Border = BoxBorder.Double, + Padding = new Padding(2, 1, 2, 1) + }; + + AnsiConsole.Write(panel); + + await TCPChecker.ScanPort(ip, startport, endport); + + Console.WriteLine("Готово! Повторить еще раз? Y/N"); + + string? input = Console.ReadLine()?.ToLower() ?? "n"; + bool exit = input?.ToLower() switch + { + "y" => false, + "n" => true, + _ => true + }; + + if (exit) break; + } + } + } +}