Сегодня 5 июня, среда ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7274
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Справочник по C#
Справочник по C#
Голосов: 1
Адрес блога: http://www.csharpcoderr.com/
Добавлен: 2012-11-28 00:46:26
 

Создание Port Scanner с C#

2012-11-01 09:19:54 (читать в оригинале)


      IP инструмент сканирования может оказаться полезным, если вы хотите проверить безопасность вашего компьютера. Открытый порт это не обязательно приглашение для хакеров, так как приложения и сервисы вашего или другого компьютера могут использовать порты для выхода в Интернет или локальную сеть. Например, для веб-сервера обычное дело иметь открытый 80-й порт, или на FTP-сервере иметь открытым 21-й порт. Мы будем использовать TcpClient , чтобы подключиться к каждому порту. Если код вызывает исключение, это вероятно, потому что подключение было неудачным. Однако если нет никаких исключений, это означает, что TcpClient успешно подключен к порту и, таким образом, порт открыт.

Сначала подключаем необходимые нам для работы пространства имен:
using System.Net.Sockets;

Предположим, мы хотим, просканировать порты с 1 по 25 для IP 192.168.0.1 (локальный IP-сети):

public void portscan()
{
    //Указываем диапазон сканируемых портов
    for (int CurrPort = 1; CurrPort <= 25; CurrPort++)
    {
        //Инициализируем новый экземпляр класса System.Net.Sockets.TcpClient.
        TcpClient TcpScan = new TcpClient();

        try
        {     
            //Выполняем подключение клиента к указанному порту заданного узла.
            TcpScan.Connect("192.168.0.1", CurrPort);
            //Если подключение выполнено успешно то выводим сообщение
            MessageBox.Show("Port " + CurrPort + " open");
        }

        catch
        {
            //Если мы поймали исключение то порт закрыт
            MessageBox.Show("Port " + CurrPort + " closed");
        }
    }
}
      В приведенном выше коде мы выполняем цикл от 1 до 25 (портов) и попытаться подключиться к каждому, как я уже объяснял ранее. На скриншоте ниже вы можете увидеть полную реализацию данной задачи и ее код:
Вот исходный код:
// Заносим в переменную StartPort стартовый номер порта из компонента NumericUpDown
StartPort = Convert.ToInt32(numStart.Value); 
// Заносим в переменную EndPort конечный номер порта из компонента NumericUpDown
EndPort = Convert.ToInt32(numEnd.Value); 

//Выставляем компонент progress bar в нулевое положение
prgScanning.Value = 0; 

// Указываем максимальное значение progress bar 
prgScanning.Maximum = EndPort - StartPort + 1; 

// Выставляем курсор в состояние WaitCursor
Cursor.Current = Cursors.WaitCursor; 

// Выполняем цикл от начального до конечного порта
for (int CurrPort = StartPort; CurrPort <= EndPort; CurrPort++)
{
   //Инициализируем новый экземпляр класса System.Net.Sockets.TcpClient.
   TcpClient TcpScan = new TcpClient();
   try
   {
      //Выполняем подключение клиента к указанному порту заданного узла.
      TcpScan.Connect(txtIP.Text, CurrPort);
      //Если подключение выполнено успешно то выводим в txtLog
      txtLog.AppendText("Port " + CurrPort + " open"); 
   } 
   catch 
   {
      //Если мы поймали исключение то порт закрыт
      txtLog.AppendText("Port " + CurrPort + " closed"); 
   } 
// Выполняем шаг в progress bar 
prgScanning.PerformStep();
}
//Переводим курсор в обычное состояние
Cursor.Current = Cursors.Arrow;

Тэги: form, network, window

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.