Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание фаервола под Win32

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Задача: нужно напистаь сервис, который выполнял бы переват пакетов из сети. А также слушал бы на каком-нить порту. Какая инфа, книги?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 09:21 15-09-2003 | Исправлено: EndoR, 23:41 13-11-2003
Pupsik

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В Инете столько информации по этому поводу, удивительно, что ты ничего не смог найти.
Ну вот тебе наводки:
Для всех версий Windows (включая 95) ищи драйвера WinPCap (http://winpcap.polito.it/)
Для версий Windows 2000/XP смотри волшебные слова "promiscuous mode"
 
Ну и для начала посмотри это:
http://www.rsdn.ru/article/net/sniffer.xml
http://www.ntndis.com/articles/firewall.htm
http://www.ethereal.com/
 
Хотя наверняка на torry.net должны быть готовые компоненты...
 
PS: И не забудь, если у тебя сеть построена на коммутаторах, все бесполезно.


----------
Ума нет - считай коллега.

Всего записей: 553 | Зарегистр. 13-03-2003 | Отправлено: 09:52 15-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Pupsik
да я не к тому, что ничего не нашел. просто, может, мысли какие по этому поводу. ссылки эти я видел, но все равно спасибо.
а насчет коммутаторов это почему это бесполезно? ты не сможешь ethernet-пакеты вычислять (вернее, они будут из-за свича одинаковыми), но меня-то интересует и IP, и выше (TCP, ICMP, UDP).

Цитата:
 должны быть готовые компоненты...  

пасиб, гляну. правда, там может быть .net, а я пока не знаю, как сие заюзать под visual c++.
 
ЗЫ  еще раз уточню задачу - грубо говоря, нужно напистаь фаервол, который будет ловить все, что приходит из сети (Ethernet, IP, 4-ый уровень и т.п.).
 
Добавлено
Во, один момент...  

Код:
#include <windows.h>
#include <winsock2.h>

у меня почему-то идет ругань при компиляции, когда включаю winsock2.h. Когда просто используется windows.h, то все нормально. В чем дело?


----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 11:35 15-09-2003
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
у меня почему-то идет ругань при компиляции, когда включаю winsock2.h. Когда просто используется windows.h, то все нормально. В чем дело?

 

Код:
 
#include <winsock2.h>
#include <windows.h>
 

 
Обычно так работает лучше

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 17:39 15-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Arion
не, все равно эффекта ноль...

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 18:25 15-09-2003
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR
У тебя может не стоять второй винсок, хотя скорее просто нет библиотек для работы с ним.
Кстати параллельный вопрос - как написать файрвол?  
То есть со снифингом мне в принципе все понятно, а вот насчет файрвола голова темная - думаю тут надо писать враппер винсоковских dll-ек?  
Прав я  - аль нет?

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 19:43 15-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
UncoNNecteD

Цитата:
То есть со снифингом мне в принципе все понятно, а вот насчет файрвола голова темная - думаю тут надо писать враппер винсоковских dll-ек?  
Прав я  - аль нет?

без понятия предстоит узнать.

Цитата:
У тебя может не стоять второй винсок

Wsock32.dll - 5.00.2195.4874 - оно?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 21:00 15-09-2003
Arion



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хм, странно. А что конкретно пишет?

Всего записей: 436 | Зарегистр. 29-06-2003 | Отправлено: 21:45 15-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Кучу ошибок выдает из модуля winsock2.h. Например,

Код:
 
c:\Program Files\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include\WinSock2.h(109): error C2011: 'fd_set' : 'struct' type redefinition
 

....ну и дальше в том же духе.
 
Добавлено
Кстати...  если есть у кого исходники чего подобного, поделитесь плиз...  надо срочно.

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 10:58 16-09-2003
odl455



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
видимо winsock2.h уже включён директивами в windows.h
Попробуй просто без #include <winsock2.h>

Всего записей: 659 | Зарегистр. 26-08-2002 | Отправлено: 14:42 16-09-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
odl455

Цитата:
видимо winsock2.h уже включён директивами в windows.h  
Попробуй просто без #include <winsock2.h>

Странно, там во всех заголовочных файлах:
#ifndef _BLAHBLAH_
#define _BLAHBLAH_
 
...
 
#endif
 
Как он может дважды включен быть?
 
Добавлено
EndoR
А что если попробовать не winsock2.h а winsock.h?
 
Добавлено
EndoR
И еще, попробуй перегенерить (или отключить) Precompiled headers

----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 15:22 16-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
odl455
mymuss
работает при <windows.h> и <winsock.h> (либо вместе, либо только первый). но я где-то вычитал, что нужно юзать winsock2.h
Тут еще вопрос встречный...  есть такое:

Код:
 
SOCKADDR_IN tcpaddr;
tcpaddr.sin_family = sock_addr_fam;
tcpaddr.sin_port = htons(sock_port);
tcpaddr.sin_addr.s_addr = htonl(INADDR_ANY);
bind(sSocket, (SOCKADDR *)&tcpaddr, sizeof(tcpaddr));
listen(sSocket,SOMAXCONN);
_cputs("Waiting for connection...");
accept(sSocket, (SOCKADDR *)&tcpaddr,  sizeof(tcpaddr));
_cputs("Connection accepted.");

...говорит:  

Код:
error C2664: 'accept' : cannot convert parameter 3 from 'size_t' to 'int *'

Подскажите, как быть?


----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 20:30 16-09-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
Код:error C2664: 'accept' : cannot convert parameter 3 from 'size_t' to 'int *'  
 
Подскажите, как быть?  

Дык, что ж ты хочешь:
 
SOCKET accept(
  SOCKET s,
  struct sockaddr FAR *addr,
  int FAR *addrlen
);
 
там указатель на int надо передавать а не собственно размер.


----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 20:47 16-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
а как быть?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 21:05 16-09-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
а как быть?

Учить С/С++... Читать Кернигана-Ричи/Страуструпа... )
 
Попробуй так:

Код:
 
int mysize;
 
mysize = sizeof(tcpaddr);
 
...
accept(sSocket, (SOCKADDR *)&tcpaddr,  &mysize);
 



----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 21:11 16-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
не проще ли все это будет под C#?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 21:29 16-09-2003
mymuss



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
EndoR

Цитата:
не проще ли все это будет под C#

Говорят: "Хорошая дорога -- знакомая дорога".
Для меня легче на С/С++. Для тебя, вполне возможно, наоборот.
Только о кросплатформенных приложениях на С#, конечно, можешь забыть.

----------
(a + b^n) / n = x, donc Dieu existe; répondez !
Euler

Всего записей: 709 | Зарегистр. 13-04-2003 | Отправлено: 16:17 17-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А возможно ли реализовать такую схему:
висит сервис и слушает порт. удаленная программа подключается к этому порту и посылает специальное сообещение. сервис выключается.
 
Добавлено

Цитата:
у меня почему-то идет ругань при компиляции, когда включаю winsock2.h. Когда просто используется windows.h, то все нормально. В чем дело?  

ошибки вылечились путем добавления WS2_32.Lib в проект

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 21:33 17-09-2003
EndoR



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А возможно ли реализовать такую схему:  
висит сервис и слушает порт. удаленная программа подключается к этому порту и посылает специальное сообещение. сервис выключается, вернее, фильтрация прекращается. может, еще есть свежие идеи по поводу, как такое реализовать?

----------
Fear is an efficient tool of management.

Всего записей: 1159 | Зарегистр. 24-01-2002 | Отправлено: 21:51 22-09-2003
EAS



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ошибки вылечились путем добавления WS2_32.Lib в проект



Цитата:
посылает специальное сообещение. сервис выключается, вернее, фильтрация прекращается

А в чем проблема? Конструкцию if вроде никто не отменял . В зависимости от "развесистости" программы, от bool до event/mutex etc.
Если вопрос как отрубить/приостановить фильтрацию, то - исходники в студию. Смотря что отрубать...

Всего записей: 441 | Зарегистр. 18-07-2003 | Отправлено: 03:37 25-09-2003
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Написание фаервола под Win32


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru