Вопрос про Firewall
-
netmax
Вопрос про Firewall
Вот какая штука. Решил я написать простой пример firewall, и тут же столкнулся с главной проблемой. А как же я буду улавливать трафик. Скажем я хочу следить за трафиком на 139 порту (NetBios). Но если я попытаюсь создать на нем сокет, то возникнет ошибка, поскольку этот порт уже занят другим сервисом. Но как-то ведь народ делает firewall'ы. Может кто знает?
-
netmax
-
hasherfrog
Re: Вопрос про Firewall
Надыбал (давненько уже) в сети. Очень простенький пример. Под линукс, но принцип тот же. Вообще подобных "сорсов" в сети - море.
Код:
Код:
Код: Выделить всё
// cниффер пишет на stdout всё, что захватывает
#include
#include
#include
#include
#include
#include
#include
#include
static volatile int done;
void handler(int signum)
{
done = 1;
}
int main(int argc, char **argv)
{
char buff[0x10000];
struct ifreq ifr;
int s, n;
if (argc < 2)
{
fprintf(stderr, "Usage: %s \n", argv[0]);
return 1;
}
s = socket(PF_INET, SOCK_PACKET, htons(0x0003));
if (s == -1)
{
perror("socket");
return 1;
}
strcpy(ifr.ifr_name, argv[1]);
if (ioctl(s, SIOCGIFFLAGS, &ifr) < 0)
{
perror("ioctl(SIOCGIFFLAGS)");
return 1;
}
ifr.ifr_flags |= IFF_PROMISC; // установка
// режима перехвата
// на сетевой карте.
if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0)
{
perror("ioctl(SIOCGIFFLAGS)");
return 1;
}
signal(SIGINT, handler);
puts("starting capturing:\n");
fflush(stdout);
for (done = 0; !done; )
{
n = read(s, buff, sizeof(buff));
//cчитываем
//траффик в буфер
if ( n!=-1 ) write(STDOUT_FILENO, buff, n);
}
ifr.ifr_flags &= ~IFF_PROMISC;
if (ioctl(s, SIOCSIFFLAGS, &ifr) < 0)
{
perror("ioctl(SIOCGIFFLAGS)");
return 1;
}
close(s);
printf("Finished\n");
return 0;
}-
netmax
Re: Вопрос про Firewall
hasherfrog
Спасибо. Гляну. На порту 0х03 уже находится сокет, будет ли работать? Хотя ладно сам проверю.
BrutalBit
А чем они отличаются?
Спасибо. Гляну. На порту 0х03 уже находится сокет, будет ли работать? Хотя ладно сам проверю.
BrutalBit
А чем они отличаются?
-
netmax
Re: Вопрос про Firewall
Сниффер - это такая прога, которая перехватывает весь траффик.Они используются для перехвата всякой инфы(паролей) и для диагностики сети.
Firewall - это программа фильтрующая все вхлдящие/исходящие данные, и пропускающая только разрешенные.И там и там нужно перехватывать траффик,но тока firewall должен его еще и фильтровать.
Firewall - это программа фильтрующая все вхлдящие/исходящие данные, и пропускающая только разрешенные.И там и там нужно перехватывать траффик,но тока firewall должен его еще и фильтровать.
-
BrutalBit
Re: Вопрос про Firewall
Хорошо, но это все эти примеры для Linux. Мне они конечно и нужны для этой ОС. Но... как же быть с windows?
-
hasherfrog
Re: Вопрос про Firewall
VBMUSTDIE
Практически всё точно так же. Единственное, на что стоит обратить нимание: версия winsock должная быть 2-й. В ранней версии плохо расписана работа с "сырыми" сокетами. Есть, конечно, ещё некоторые ньюансы.
По поводу файерволл - проверьте почту.
Добавлено:
VBMUSTDIE
Ваш адрес в e-mail, очевидно, некорректный. Письма возвращаются.
Практически всё точно так же. Единственное, на что стоит обратить нимание: версия winsock должная быть 2-й. В ранней версии плохо расписана работа с "сырыми" сокетами. Есть, конечно, ещё некоторые ньюансы.
По поводу файерволл - проверьте почту.
Добавлено:
VBMUSTDIE
Ваш адрес в e-mail, очевидно, некорректный. Письма возвращаются.
-
mar
