Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784

Socket Raw Promiscuous mode

16.10.2015, 10:00. Показов 3113. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Решил сделать небольшую программу для подсчета трафика между своими товарищами по работе.
Все бы ничего, но если я включаю Promiscuous mode, а после этого вырубаю программу. То сетевая карта отключается.

Подскажите как этого избежать?

p.s. Если программа будет вылетать, то никак нельзя будет заранее отключить Promiscuous mode.

p.s.s. Linux Mint 17.2

p.s.s.s. Зарание спасибо за помощь!

p.s.s.s.s.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
int sock, buffer_size;
char *buffer = new char[65536];
 
sock = socket( PF_PACKET , SOCK_RAW , htons(ETH_P_ALL)) ;
 
if ( sock < 0 )
{
perror("socket");
exit(1);
}
 
struct ifreq ifr;
memset(&ifr,0,sizeof(ifr));
 
strncpy(ifr.ifr_name, "Test113", IFNAMSIZ-1);
 
const char *device = "eth0";
 
strcpy (ifr.ifr_name, device);
 
if(ioctl(sock, SIOCSIFFLAGS, &ifr) < 0)
 
{
perror("ioctl SIOCSIFFLAGS 1");
return (-113);
}
 
ifr.ifr_flags |= IFF_PROMISC;
 
if(ioctl(sock, SIOCSIFFLAGS, &ifr) < 0)
 
{
perror("ioctl SIOCSIFFLAGS 2");
return (-113);
}
 
printf("Socket = %i\n", sock);
 
while (1)
{
printf("----------------------------------------------------\n");
 
buffer_size = recv(sock, buffer, 65536, 0);
printf("RECV = %i\n", buffer_size);
ProcessPacket(buffer , buffer_size);
}
return 0;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.10.2015, 10:00
Ответы с готовыми решениями:

как определить promiscuous mode
Дорого времени суток. Собственно вопрос, как можно программно определить, находится ли уже сетевуха в promiscuous mode? И можно ли вообще...

raw socket
Добрый вечер, надо написать генератор tcp пакетов, возник вопрос: на msdn написано что если в при создании сокета выбрать...

RAW Socket, заголовки и тд
Всех приветствую. Если в функции socket( int AF, int Type, int Protocol ) во второй аргумент пихаем SOCK_RAW, то это подразумевает...

3
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
16.10.2015, 11:28
Цитата Сообщение от Bmg113 Посмотреть сообщение
Если программа будет вылетать
Ну так надо сделать, чтобы не вылетала.
Если корректно освободить все ресурсы, и вернуть все флаги в прежнее состояние, то все будет ок.
Прежде всего избавиться от вызовов exit, от безусловного бесконечного цикла тоже избавиться, также сделать обработку сигналов завершения программы и т.д.
В общем привести программу в нормальный вид
1
Почетный модератор
 Аватар для Humanoid
11559 / 4353 / 453
Регистрация: 12.06.2008
Сообщений: 12,455
16.10.2015, 15:04
Кстати, на 21 строке, наверное, предполагалось SIOCGIFFLAGS ?
1
205 / 151 / 5
Регистрация: 14.03.2013
Сообщений: 784
19.10.2015, 12:08  [ТС]
Цитата Сообщение от Humanoid Посмотреть сообщение
Кстати, на 21 строке, наверное, предполагалось SIOCGIFFLAGS ?
Точно там ошибка!
И кстати после этого отключение сетевой прекратилось, что логично.
Цитата Сообщение от DrOffset Посмотреть сообщение
В общем привести программу в нормальный вид
Я с Вами согласен. Буду облагораживать код =)
Просто изначально делал без "защит" для того что бы понять работает ли вообще прием.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.10.2015, 12:08
Помогаю со студенческими работами здесь

Создание RAW socket d Qt Creator
Пишу сниффер в Qt 5.5.1 MinGW 4.9.2. Необходимо реализовать RAW сокет socket(АF_INET, SOCK_RAW, IPPROTO_IP); не работает Какие есть...

Raw socket подмена ip адреса отправителя
Задача такая надо отправить пакет с другим ip адресом отправителя. Подскажите как это сделать? Слышал что можно это сделать через Raw...

Невозможно создать Socket: Socket sock = new Socket(someHostString,somePortInt);
Народ! Помогите пожалуйста. Вся красота губится на exception что выскакивает в момент создания сокета: Socket sock = new...

АЦП в Auto Trigger mode от таймера в CTC mode (atmega644)
Задача: прочитать данные с АЦП когда счетчик таймера совпадет со значением в регистре сравнения. Реализация: Таймер: void tmInit(){ ...

IIS Cache - Kernel mode and User mode - чем отличаются, что представляют из себя?
Не могу найти толкового описания Kernel mode and User mode cache. Во-первых, чтобы лучше обрисовать в своем воображении: 1) где они...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru