захват сетевого пакета в c - PullRequest
       11

захват сетевого пакета в c

2 голосов
/ 22 сентября 2011

Этот вопрос может показаться глупым, потому что я знаю, что есть множество фреймворков, которые делают это для вас.На самом деле я хочу глубоко войти в контакт с низкоуровневым C-API и написать программу, которая сидит на компьютере и перехватывает пакеты между локальной машиной и внешним пространством.Я попытался выяснить это, посмотрев на открытый исходный код (например, tcpdump), но мне довольно сложно выяснить, какой файл на самом деле выполняет анализ сетевого трафика.Мы ценим любые предложения !

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Вы должны использовать необработанный сокет. Вот пример . По крайней мере, для Linux и Unix, как операционные системы. Я не знаю о Windows.

1 голос
/ 22 сентября 2011

Если вы используете систему на основе UNIX [*], то самый простой механизм - libpcap, который является частью проекта tcpdump.

Ваш процесс потребуетсяпривилегии root для доступа к сетевому интерфейсу (как и в случае с необработанными сокетами).

Обычно вам придется самостоятельно декодировать кадры Ethernet, заголовки IP и т. д., хотя для большинства протоколовэто не , что сложно.

[*] Это на самом деле доступно и для Win32, но я сам не использовал его под Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...