перехват пакетов .net: попытка создания сокета вызывает ошибку доступа - PullRequest
4 голосов
/ 22 августа 2011

Я работаю с кодом из Какой-нибудь хороший пакет .net обнюхивает?

В рамках проекта и в автономном режиме я пытаюсь создать сокет, используя следующую строку:

mainSocket = new Socket(AddressFamily.InterNetwork,
                        SocketType.Raw, ProtocolType.IP);

В этой строке я сразу получаю исключение

System.Net.Sockets.SocketException: An attempt was made to access a socket 
in a way forbidden by its access permissions

Не думаю, что это проблема с разрешениями учетной записи. Я могу запустить Fiddler под этой учетной записью.

Это правильный способ открыть слушатель для исходящих пакетов? Если да, что мне нужно сделать, чтобы избежать ошибки разрешения?

Обновление : .net 4.0 Windows 7 Home Premium

1 Ответ

3 голосов
/ 22 января 2012

Вы не можете создавать необработанные сокеты без прав администратора.

Необработанные сокеты предоставляют возможность манипулировать нижележащим транспортом, поэтому их можно использовать в злонамеренных целях, представляющих угрозу безопасности.Поэтому только члены группы «Администраторы» могут создавать сокеты типа SOCK_RAW в Windows 2000 и более поздних версиях.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms740548(v=vs.85).aspx

Я не уверен, что такое Fiddler, но возможноиспользовать UAC для автоматического получения прав администратора.

Кроме того, если вы ищете приличный сниффер пакетов .net, вы можете попробовать SharpPcap , который включает в себя и без того потрясающий libpcap.

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