Cканер портов
Перед тем как начать, скажу что
данная статья направлена на то, чтобы понять как
работают сканеры портов, и понимать как от них возможно
защищаться, и не в коем случае не на какие-нибудь другие цели.
Все сканеры портов работают по очень простому принципу:
конектимся к порту и если конект состоялся, то значит он открыт, а если нет то закрыт.
Запустили С++ Builder, так запускайте!!! Сперва на новую форму добавляем
такие компоненты: два Edit'a, два Label'a, два BitBtn'a, один RichEdit и один TcpClient. Больше
никаких компонентов нам и не надо. Дальше в Caption первой кнопочки пишем "Сканировать",
а во второй вторую "Закрыть". Для кнопочки "Закрыть" пишем следующий обработчик событий:
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Close ();// просто закрывает форму
}
//---------------------------------------------------------------------------
Первый Label подписываем "IP адрес:" и размещаем возле первого Edit'a, а второй
Label подписываем, как "Порт:". Т.е. в первом Edit'e мы будем вписывать значение IP
адреса, а во втором Edit'e будем вписывать нужный порт. Да вот не сказал сканер портов
будет ручной. Не забудьте в обоих Edit'ах стереть все в свойстве Text, чтоб всякая фигня не
отображалась. RichEdit нам нужен, чтобы туда записывались результаты сканирования. В него
тоже в свойстве Lines нужно все затереть. А дальше пишем следующий обработчик событий для
кнопки "Сканировать":
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
TcpClient1->RemoteHost=Edit1->Text;// берем значения хоста с свойства Text компонента Edit1
RichEdit1->Lines->Add(TcpClient1->RemoteHost + ":");//записываем в RichEdit значение сканируемого порта
TcpClient1->RemotePort=Edit2->Text;//берем значение порта с свойства Text компонента Edit2
TcpClient1->Active=true;//устанавливаем в компоненте TcpClient1 свойство Active в значение true т.е.
разрешаем конектится
if (TcpClient1->Connected)//если конект прошол удачно
RichEdit1->Lines->Add(TcpClient1->RemotePort + " порт открыт");//то порт открыт
else {//а ели конекта не было
RichEdit1->Lines->Add(TcpClient1->RemotePort + " порт закрыт");//то порт закрыт
}
//---------------------------------------------------------------------------
Да забыл добавим еще одну кнопку и назовем ее "Очистить" и пропишем для нее такой обработчик события:
void __fastcall TForm2::N8Click(TObject *Sender)
{
RichEdit1->Clear(); //просто очищаем результаты сканирования
}
Думаю поняли зачем это надо. Ну в этом сканере можно наворотить
еще многое, например, сохранение результатов сканирования, введения
диапазона сканирования и так далее но это уже без меня. Но скажу, одно,
если сделаете по данному принципу сканер с диапазоном сканирования,
то большие диапазоны портов не возможно будет сканировать, а то комп.
зависнет, но где то максимум 20 и то лучше сканировать не более 10 тогда точно не зависнет.
Автор: Нестерюк Дмитрий
Источник: www.bib.com.ua
|