Какой рейтинг вас больше интересует?
|
Главная / Главные темы / Тэг «feram»
Создание 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
Привязка окон друг к другу при перетаскивании 2012-10-26 15:36:17
+ развернуть текст сохранённая копия
Не знаю как лучше объяснить, этот код реализует стыковку окон(форм), присоединяет дочерние формы к главному окну. На подобии Winamp.
Для реализации нам понадобятся две формы, главная и дочерняя.
Для создания дочернего(вторая форма) перейдите в обозреватель решений и правой клавишей мыши щелкните но названию проекта, далее выберите Добавить-> Создать элемент и выберете "Фома Windows Form".
В коде главной формы прописываем код:
public bool down = false, //проверяет, пристыковано ли окно к нижней границе
left = false, //проверяет, пристыковано ли окно к левой границе
top = false, //проверяет, пристыковано ли окно к верхней границе
right = false; //проверяет, пристыковано ли окно к правой границе
public double leftlength, toplength; //переменные нужны для вычисления смещения второго окна по отношению к главному
//Создаем объект второго окна
Form2 fr2 = new Form2();
В свойствах главной формы создаем событие LocationChanged и вставляем туда вот этот код:
//Стыковка с нижней границей главного окна
if (down)
{
//Второе окно оставляем у нижней границы главного окна путем смещения координаты верхней границы на значение высоты главного окна
fr2.Top = this.Top + this.Height;
//А левую границу второго окна смещаем относительно левой границы главного на величину leftlength, установленную в момент стыковки
fr2.Left = (int)this.Left + (int)leftlength;
}
//Соответственно поступаем и при стыковке с другими границами
//Стыковка с верхней границей главного окна
if (top)
{
fr2.Top = this.Top - fr2.Height;
fr2.Left = (int)this.Left + (int)leftlength;
}
//Стыковка с левой границей главного окна
if (left)
{
fr2.Left = this.Left - fr2.Width;
fr2.Top = (int)this.Top + (int)toplength;
}
//Стыковка с правой границей главного окна
if (right)
{
fr2.Left = this.Left + this.Width;
fr2.Top = (int)this.Top + (int)toplength;
}
Переходим в код второй формы и также создаем событие LocationChanged и вставляем туда вот это:
Form1 fr1 = this.Owner as Form1;
//Стыковка с нижней границей главного окна
//Проверяем условия попадания верхней границы данного окна в пределы нижней границы главного окна
if ((this.Top < fr1.Top + fr1.Height + 20) && (this.Top > fr1.Top + fr1.Height - 20))
{
//Собственно стыковка
this.Top = fr1.Top + fr1.Height;
//Запоминаем смещение левой границы данного окна и левой границы главного окна (условие ввел для фиксации переменной, чтобы больше не изменять ее во время сеанса текущей стыковки)
if (!fr1.down) fr1.leftlength = this.Left - fr1.Left;
//Говорим главному окну, что произошла стыковка
fr1.down = true;
}
else fr1.down = false;
//Соответственно поступаем с остальными границами
//Стыковка с верхней границей главного окна
if ((this.Top + this.Height < fr1.Top + 20) && (this.Top + this.Height > fr1.Top - 20))
{
this.Top = fr1.Top - this.Height;
if (!fr1.top) fr1.leftlength = this.Left - fr1.Left;
fr1.top = true;
}
else fr1.top = false;
//Стыковка с левой границей главного окна
if ((this.Left + this.Width < fr1.Left + 20) && (this.Left + this.Width > fr1.Left - 20))
{
this.Left = fr1.Left - this.Width;
if (!fr1.left) fr1.toplength = this.Top - fr1.Top;
fr1.left = true;
}
else fr1.left = false;
//Стыковка с правой границей главного окна
if ((this.Left < fr1.Left + fr1.Width + 20) && (this.Left > fr1.Left + fr1.Width - 20))
{
this.Left = fr1.Left + fr1.Width;
if (!fr1.right) fr1.toplength = this.Top - fr1.Top;
fr1.right = true;
}
else fr1.right = false;
Этот код реализует стыковку форм и позволяет перетаскивать главной формой состыкованные, и свободно перемещать формы по раздельности если они разъединены!
Тэги: application, form, window
Привязка окна приложения к краям экрана или блокируем перемещение приложения 2012-10-25 15:16:42
+ развернуть текст сохранённая копия
Тэги: application, form, window
Балуемся индикаторами NumLock, CapsLock, ScrollLock на клавиатуре! 2012-10-23 12:55:33
+ развернуть текст сохранённая копия
Данный пример реализует последовательное загорание и затухание индикаторов NumLock, CapsLock, ScrollLock на клавиатуре. Также его можно использовать для реализации управления включения и отключения режимов NumLock, CapsLock, ScrollLock.
Для работы нам понадобится подключить пространство имен:
using System.Runtime.InteropServices;
using System.Threading;
И добавить компонент таймер со свойствами:
Enabled: True
Interval: 1000
Теперь переходим к коду:
private const byte VK_SCROLL = 0x91;
private const byte VK_NUMLOCK = 0x90;
private const byte VK_CAPITAL = 0x14;
private const uint KEYEVENTF_KEYUP = 0x2;
[DllImport("user32.dll", EntryPoint = "keybd_event", SetLastError = true)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
[DllImport("user32.dll", EntryPoint = "GetKeyState", SetLastError = true)]
static extern short GetKeyState(uint nVirtKey);
//Scroll-------------------------------------------------------
public static void SetScrollLockKey(bool newState)
{
bool scrollLockSet = GetKeyState(VK_SCROLL) != 0;
if (scrollLockSet != newState)
{
keybd_event(VK_SCROLL, 0, 0, 0);
keybd_event(VK_SCROLL, 0, KEYEVENTF_KEYUP, 0);
}
}
public static bool GetScrollLockState()
{
return GetKeyState(VK_SCROLL) != 0;
}
//NUM-------------------------------------------------------
public static void SetNumLockKey(bool newState)
{
bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
if (scrollLockSet != newState)
{
keybd_event(VK_NUMLOCK, 0, 0, 0);
keybd_event(VK_NUMLOCK, 0, KEYEVENTF_KEYUP, 0);
}
}
public static bool GetNumLockState()
{
return GetKeyState(VK_NUMLOCK) != 0;
}
//Caps-------------------------------------------------------
public static void SetCapsLockKey(bool newState)
{
bool scrollLockSet = GetKeyState(VK_NUMLOCK) != 0;
if (scrollLockSet != newState)
{
keybd_event(VK_CAPITAL, 0, 0, 0);
keybd_event(VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0);
}
}
public static bool GetCapsLockState()
{
return GetKeyState(VK_CAPITAL) != 0;
}
Для реализации поочередного включения/выключения в таймер вставляете вот этот код:
SetNumLockKey(true);
Thread.Sleep(100);
SetNumLockKey(false);
Thread.Sleep(100);
SetCapsLockKey(true);
Thread.Sleep(100);
SetCapsLockKey(false);
Thread.Sleep(100);
SetScrollLockKey(true);
Thread.Sleep(100);
SetScrollLockKey(false);
Thread.Sleep(100);
Вы так же можете пользоваться этими функциями по отдельности в случае если что-то необходимо включить:
SetNumLockKey(true);
или выключить!
SetNumLockKey(false);
Тэги: animation, form, keyboard, system, window
Определяем место запуска приложения(сеть или локальная машина) 2012-10-23 12:53:53
+ развернуть текст сохранённая копия
Тэги: application, form, window
Главная / Главные темы / Тэг «feram»
|
Взлеты Топ 5
Падения Топ 5
|