Добавил:
БГУИР ПОИТ Дистанционное Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
06.10.2021
Размер:
131.21 Кб
Скачать
  1. Руководство пользователя

Для активации программы необходимо запустить файл «KSiS_course.exe», находящийся по адресу «..\KSiS_course\KSiS_course\bin\Debug».

Для тестирования ПС были созданы готовые файлы IP адресами и портами подключения. В случае отсутствия данных файлов – они будут созданы автоматически.

Для изменения или дополнения исходных данных необходимо воспользоваться кнопками управления «Добавить» или «Удалить».

Для запуска работы программы необходимо нажать кнопку «Сканировать».

Рис 6. Фрагмент пользовательского интерфейса программы

Для выхода из программы ее необходимо закрыть.

Заключение

В курсовом проекте разработано программное обеспечение, которое способно сканировать порты удаленного сервера.

Данное программное средство было написано с использованием компонентов для работы сокетами и среды разработки программных продуктов VisualStudio 2010 SP1 – язык программирования C#.

В результате было создано программное средство «Сканер портов», которое может быть использовано практически любым пользователем ПК.

Программа интуитивно проста и понятна для любого пользователя: для ее использования не нужно специального обучения, при этом она выполняет все функции, необходимые для нормальной работы.

Список использованных источников

  1. Приемы объектно-ориентированного проектирования. Паттерны проектирования / Р. Хелм, Э. Гамма, Д. Виллисон и др.; – издательство «Питер», 1993 – 451 с.: ил.

  2. Советов Б.Я., Яковлев С.А. Моделирование систем // Курсовое проектирование -М.: Высшая школа, 1988. - 232 с.

  3. Архангельский А. Я. Программирование в C#.–М.:ЗАО «Издательство БИНОМ», 2000.–1070 с.

  4. Троелсен. Э. С# и платформа .NET. Библиотека программиста.

  5. Леоненков, А. В. Самоучитель UML / А. В. Леоненков. – СПб.: БХВ – Петербург, 2001. – 304 с.

ПРИЛОЖЕНИЕ

Листинг главной формы программы:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

using Microsoft.VisualBasic;

using System.Net.Sockets;

using System.Net;

namespace KSiS_course

{

public partial class Form1 : Form

{

string[] ips; //IP и домены

string[] pts; //Порты подключения

public Form1()

{

InitializeComponent();

}

void read_arr_lb1()

{

listBox1.Items.Clear();

// Считываем строки в массив

ips = File.ReadAllLines("ips.txt", Encoding.GetEncoding(1251));

// Добавляем каждую строку

foreach (string line in ips)

listBox1.Items.Add(line);

}

void read_arr_lb2()

{

listBox2.Items.Clear();

// Считываем строки в массив

pts = File.ReadAllLines("ports.txt", Encoding.GetEncoding(1251));

// Добавляем каждую строку

foreach (string line in pts)

listBox2.Items.Add(line);

}

void save_txt_lb1()

{

// Сохранение в текстовый файл после редактирования listbox

TextWriter writer = new StreamWriter("ips.txt");

foreach (var item in listBox1.Items)

writer.WriteLine(item.ToString());

writer.Close();

}

void save_txt_lb2()

{

// Сохранение в текстовый файл после редактирования listbox

TextWriter writer = new StreamWriter("ports.txt");

foreach (var item in listBox2.Items)

writer.WriteLine(item.ToString());

writer.Close();

}

private void Form1_Load(object sender, EventArgs e)

{

//Заполняем listbox1 - список IP доменов ips

//Заполняем listbox2 - список портов pts

//создает новый если такого нет , либо открывает имеющийся и пишет путем добавления

File.AppendAllText("ips.txt", "");

File.AppendAllText("ports.txt", "");

read_arr_lb1(); // Заполняем массив из файла и обновляем листбокс

read_arr_lb2(); // Заполняем массив из файла и обновляем листбокс

}

private void button1_Click(object sender, EventArgs e)

{

//IP добавить строчку

//В меню Project выбираем пункт Add Reference и в диалоговом окне ищем элемент Microsoft.VisualBasic.dll

//далее в редакторе кода добавляем: using Microsoft.VisualBasic;

//и это позволит нам непосредственно использовать InputBox, например:

String ip = Microsoft.VisualBasic.Interaction.InputBox("Введите IP или доменное имя:", "Сканер портов", "",

((this.Width + this.Location.X) / 2 ),

((this.Height + this.Location.Y) / 2 ));

if (ip != ""){

listBox1.Items.Add(ip);

}

save_txt_lb1(); // сохраняем;

read_arr_lb1(); // обновляем;

}

private void button2_Click(object sender, EventArgs e)

{

// IP удалить строчку

if (listBox1.SelectedIndex > -1)

{

listBox1.Items.RemoveAt(listBox1.SelectedIndex);

}

save_txt_lb1(); // сохраняем;

read_arr_lb1(); // обновляем;

}

private void button7_Click(object sender, EventArgs e)

{

//Сканировать!

richTextBox1.Clear();

foreach (string ip in ips)

{

foreach (string port in pts)

{

richTextBox1.SelectedText = (ip + ":" + port + " - ");

//Соединение с удаленным устройством

try

{

//Устанавливаем удаленную конечную точку для сокета

IPHostEntry ipHost = Dns.Resolve(ip);

IPAddress ipAddr = ipHost.AddressList[0];

//преобразуем строку из port в число в переменную p (!ошибка = 0)

int p = 0;

Int32.TryParse(port, out p);

IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, p);

//Создаем сокет и соединяем его с удаленной конечной точкой

Socket senders = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

// Сокращаем время синхронного ожидания делая асинхронное соединение

IAsyncResult result = senders.BeginConnect(ipEndPoint, null, sender);

//Время ожидания ответа 100 миллисекунд

bool success = result.AsyncWaitHandle.WaitOne(100, true);

if (senders.Connected)

{

richTextBox1.SelectedText = ("Socket connected to "+ senders.RemoteEndPoint.ToString() + "\r\n");

senders.Shutdown(SocketShutdown.Both);

senders.EndConnect(result);

senders.Close();

}

else

{

richTextBox1.SelectedText = ("Socket not connected to " + ipEndPoint.ToString() + "\r\n");

senders.Shutdown(SocketShutdown.Both);

senders.Close();

}

}

catch (Exception) { }

}

}

}

private void button5_Click(object sender, EventArgs e)

{

//Порты Удалить строчку

if (listBox2.SelectedIndex > -1)

{

listBox2.Items.RemoveAt(listBox2.SelectedIndex);

}

save_txt_lb2(); // сохраняем;

read_arr_lb2(); // обновляем;

}

private void button6_Click(object sender, EventArgs e)

{

//Порты добавить строчку

String port = Microsoft.VisualBasic.Interaction.InputBox("Введите порт подключения:", "Сканер портов", "",

((this.Width + this.Location.X) / 2),

((this.Height + this.Location.Y) / 2));

if (port != "")

{

listBox2.Items.Add(port);

}

save_txt_lb2(); // сохраняем;

read_arr_lb2(); // обновляем;

}

private void выходToolStripMenuItem_Click(object sender, EventArgs e)

{

this.Close();

}

Соседние файлы в папке Курсовой_Сканер_портов