|
#1
|
|||
|
|||
Работа с пакетами
Вобщем идея такая, разработать программу для учета абонентской платы, для домашней сети, которая блокировалы бы пользователей в случае не сдачи АП блокировала доступ на основную сеть.
В нашем доме более 140 ПК, топология смешанная, выход в основную сеть (с другими домами и т.д.) осуществляется через оптику. Установлен ПК с 2мя сетевухами, с одной стороны наша сеть домашняя, с другой оптика. Реализовать хочу в Delphi, за одно на диплом тему эту взять. Для реализации вроде бы вполне должно хватить 2 библиотеки (IPHLPAPI.DLL и вин. сокетов) Как это можно реализовать? - точнее последовательность действий. Я много чего уже побороздил, посмотрел некоторые исходники по поводу этого. Но вот никак не могу понять, как встать между 2мя сетевухами, чтобы можно было блокировать пакеты ? - т.е. чтобы пакеты проходили через программку. Все это должно работать в обоих направлениях, т.е. если кто-то отправляет пакет получателю дом. сети, а его нету в базе, то блок. Подскажите плизз, свои идеи каки-нибудь по поводу реализации. Может я вообще в другую сторону тут мыслю... -- Либо еще между сетевыми делается мост. И вот этот мост просматривать как то и блочить. Но я не могу понять как вторгнуться туда и не пустить дальше пакет этот. |
#2
|
||||
|
||||
Зачем извращаться с мостами, тут и снифа хватит . Тут АйПиХелпера даже не нуна. И код на 30-40 строчег.
SysMan. C++Builder Internet/Intranet Programming. |
#3
|
||||
|
||||
"...Тут АйПиХелпера...": помощь хелпера, имелось в виду
SysMan. C++Builder Internet/Intranet Programming. |
#4
|
|||
|
|||
Ну Ip хелпер понадобиться я думаю для определения сетевух установленных на ПК.
А вот по поводу обычного сниффера, а можно по подробней про эту идею ? Я как смотрел, сокету указывается за каким интерфейсов следить, потом происходит связываение и перевод интерфейса на прием пакетов. Так а сам бан пакета и т.д. как это ? К тому же, вот если без Моста, то необходимо делать 2 сокета чтоль ? - один на одну сетевуху другой на другую. И в этом случае я еще вот не понял, каким образом пакет от пользователя будет отправлен именно через этот "биллинг" ? |
#5
|
|||
|
|||
Цитата:
Сегодня по мыслил по этому поводу, это ты имел ввиду типа: Создать 2 сокета, один на одну сетевую - второй на вторую сетевую. Первый сокет бы принимал пакеты в режиме Promiscuous с первой сетевой и принятый пакет отправлял через второй сокет для второй сетевой и наоборот. Так ? Если типа так, то я вот не понимаю как ПК пользователя в сети, будет знать, что пакет должен будет пройти через это "фильтр". -- Еще хотел добавить, а вообще написание драйверов для сетевой это сложное дело ? |
#6
|
|||
|
|||
причем тут железо - не пойму, оно не нужно, думаю , что стоит заморочится с драйверами этих сетевух, на этой основе работют файрволлы, они анализируют пакеты и работают непосредственно с драйвером. Дашь указание отбросить пакет от заданного Ip он и отбросит. Подумай над этим. По-моему у Миши Фленова в ДГХ были исходники простейшего файрволла, вот не помню на счет драйверов только, но плясать мона отсюда.
|
#7
|
|||
|
|||
Написание драйверов говоришь?????:d , это очень сложно, взять хотя бы реестр виндовоза книга на 900 страниц, и это только реестр, а прерывания, указатели т.д. - проще разузнать как с написанным драйвером работать
|
#8
|
|||
|
|||
Майняк
Напиши плизз свою мыслю по поводу реализации. Алгоритмик. -- Сегодня заезжал в системщику знакомому, рассказал по поводу своей идеи через сокеты чтобы реализовать. Он тож как раз сказал типа найди снифер какой-нить, посмотри как работает. Т.е. типа тоже, перевести карту в режим получения всех пакетов и уже с пакетом работать, т.е. банить его или дальше в другую сетевую пихать. -- Посмотрю темку с драйверами... но там на уровне дров, пакет идет кадром, там карточка уже смотрит, типа если Mac адрес ей предназначен, то драв поднимает пакет на высокий уровень и уже работает с приложением.... А вот найтиб как фаервольчики работают, тоже бы было интересно. |
#9
|
|||
|
|||
Вот нарисовал алгоритмик, черновик, так что может оказаться не совсем понятным -) _http://nemirofka.info/algoritm.jpg
Там где Send Packet - это означает отправка пакета в интерфейс куда стрелка. Recieve Packet - это означает ожидать всех пакетов с интерфейся, затем пакеты передаются в приложение, обрабатываются и отправляются. Может гляньте, вообще как идея ? |