Чем закрыть открытый порт(сокет)?Как firewall'ы это делают?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Чем закрыть открытый порт(сокет)?Как firewall'ы это делают?

Сообщение GRS » 15.05.2006 (Пн) 17:44

Приветствую :wink:

То, что порт открыт - я могу отследить через winsock. А как мне закрыть активный порт(сокет)? (Вообще, порт и сокет - это одно и тоже или я все же неверно интерпритирую понятия?)

Пишу Firewall и с функцией сканирования более или менее понятно: получить открытые порты могу, но как запретить использовать какой-то порт? Умом понимаю, что его надо как минимум "перехватить". Есть API для управления портами? Система XP.

Как FireWall'ы в этом отношении устроены? Т.е., как они блокируют порты :? ?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.05.2006 (Пн) 18:01

Они пишут драйвер, который устанавливается между API и железом. Забудь.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 15.05.2006 (Пн) 18:04

Как вариант может подойти крышка с плотно пригнаными краями (так называемая притертая). Единственное, что не все версии ХР это поддерживают.

Чтобы выяснить, есть ли поддержка таких крышек в системе надо пользоваться WMI классом Win32_SocketCovers. Как пользоваться WMI можно узнать, поискав это слово на форуме.



UPD: Свойство groundedIn, которое определяет притерта ли та или иная крышка, имеет тип integer, и возвращает либо 0 либо 1 в случае если крышка соответственно притерта или нет и 2 если статус притертости определить не удается.

Для закрытия сокета надо пользоваться методом closeSocket, в этом случае крышка автоматически притирается к выбранному сокету.

Одну и ту же крышку нельзя использовать для закрытия двух разных сокетов. После притирки к определенному сокету для всех остальных сокетов ее groundedIn всегда вернет 2.

Также следует помнить, что в свойствах крышки прописываются протоколы, которые она закрывает (UDP, TCP и так далее).
Последний раз редактировалось RayShade 15.05.2006 (Пн) 18:57, всего редактировалось 1 раз.

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 15.05.2006 (Пн) 18:54

Я поршу прощения, может день сегодня трудный был - не могу допетрить :shock: про "крышку с плотно приграными краями".

О чем вообще речь?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 15.05.2006 (Пн) 18:58

Это была очепятка. Надо читать как "пригнаными" :)

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 15.05.2006 (Пн) 19:00

Нормальный файерволл можно сделать только при помощи драйвера. НО, используя недокументированные функции Net API, можно создать юзермодное чучело вроде ZoneProtect. Оно только контролирует приложения, грубо закрывает порты и НЕ может перехватывать "сырые" пакеты и пр. Если этого достаточно, смотри и учись:
Вложения
ZoneProtect.zip
(76.36 Кб) Скачиваний: 63
Моду создают модоки, а распространяют модозвоны.

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 15.05.2006 (Пн) 20:21

недокументированные функции Net API


Битый час ищу - не могу найти :evil: Есть такие??
Попутно: что есть "сырой пакет"?

ЗЫ Огромное спасибо за посильную помощь, в очередной раз убеждаюсь - здесь помереть в одиночестве не дадут :wink: Еще раз благодарю.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 15.05.2006 (Пн) 20:59

"Сырые" пакеты данных отправляются с "сырых" сокетов. "Сырой" сокет - см. "rawsockets". Короче, низкоуровневые сокеты это. Прием и передача данных производятся в "неразборчивом" (promiscuite) режиме - все, что пришло, обрабатывается. Изначально придумывалось для настоящих профи сетевого программирования. Но поскольку "сырые" сокеты не могут сдерживаться обычными протоколами и правилами для приложений, они вполне могут оказаться точкой беспрепятственного проникновения в сеть злонамеренных программ или процессов. Windows Sockets позволяют создавать "сырые" сокеты, начиная с Windows 2000. Любой приличный файерволл ограничивает или вовсе запрещает применение "сырых" сокетов кроме тех случаев, где они действительно необходимы. Спецы сетевого кодинга, поправьте меня, если я где-то допустил неточность, хорошо? :D
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 131

    TopList