Network protocol Driver to have RAW_SOCKET support

Hi,

Windows give Raw socket support in Vista/Win but that needs admin privileges. That’s why I’ve planned to write a simple NDIS protocol Driver to support raw sockets.

The plan is to write API that would help client application to implement their own network protocol and let them use Raw Sockets without having need of admin privileges on Vista/Win 7.

Can you suggest How can I get started.

Munir

It Raw Sockets is sufficient for your needs then one possibility is for you
to write a user-mode service running under the local system account. The
service should have privileges necessary to user Raw Sockets. If interaction
with a user-mode application is required, then a pipe can be used. The pipe
can be defined with less restrictive (non-admin) access restrictions. This
has the advantage of being a completely user-mode implementation debuggable
with Visual Studio.

If you still want to go the NDIS protocol route, then the WDK includes the
NDISPROT sample protocol drivers. They have a fairly simple I/O interface.

As last resort, visit http://www.rawether.net.

In all cases you will need admin privileges at some point. The two
approaches mentioned above restrict need for admin privileges to install
time only.

Good luck!

Thomas F. Divine
http://www.pcausa.com


From:
Sent: Thursday, December 02, 2010 2:01 PM
To: “Windows System Software Devs Interest List”
Subject: [ntdev] Network protocol Driver to have RAW_SOCKET support

> Hi,
>
> Windows give Raw socket support in Vista/Win but that needs admin
> privileges. That’s why I’ve planned to write a simple NDIS protocol Driver
> to support raw sockets.
>
> The plan is to write API that would help client application to implement
> their own network protocol and let them use Raw Sockets without having
> need of admin privileges on Vista/Win 7.
>
> Can you suggest How can I get started.
>
> Munir
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer

> That’s why I’ve planned to write a simple NDIS protocol Driver to support raw sockets.

The plan is to write API that would help client application to implement their own network protocol
and let them use Raw Sockets without having need of admin privileges on Vista/Win 7.

Well, the only thing I can say here is “Where is Chris”…

Anton Bassov

It sounds like you want to implement your own IP stack, which isn’t just “a simple NDIS protocol driver”. But there’s no need to endure the complexity of writing an NDIS protocol driver (you’d have to reimplement buckets of code that TCPIP already implements). Just write a Winsock Kernel (WSK) client – it’s simpler. But if all you’re doing is writing a winsock client, there’s no need to write it in kernel mode. Just write a usermode app instead – it’s simpler.

In other words, there is nothing in your description below that requires you to enter kernel mode. Furthermore, if you do need to write a driver for some reason, an NDIS protocol driver might very well be the wrong layer to start at.

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Thomas F. Divine
Sent: Thursday, December 02, 2010 12:09 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Network protocol Driver to have RAW_SOCKET support

It Raw Sockets is sufficient for your needs then one possibility is for you to write a user-mode service running under the local system account. The service should have privileges necessary to user Raw Sockets. If interaction with a user-mode application is required, then a pipe can be used. The pipe can be defined with less restrictive (non-admin) access restrictions. This has the advantage of being a completely user-mode implementation debuggable with Visual Studio.

If you still want to go the NDIS protocol route, then the WDK includes the NDISPROT sample protocol drivers. They have a fairly simple I/O interface.

As last resort, visit http://www.rawether.net.

In all cases you will need admin privileges at some point. The two approaches mentioned above restrict need for admin privileges to install time only.

Good luck!

Thomas F. Divine
http://www.pcausa.com


From:
Sent: Thursday, December 02, 2010 2:01 PM
To: “Windows System Software Devs Interest List”
Subject: [ntdev] Network protocol Driver to have RAW_SOCKET support

> Hi,
>
> Windows give Raw socket support in Vista/Win but that needs admin
> privileges. That’s why I’ve planned to write a simple NDIS protocol
> Driver to support raw sockets.
>
> The plan is to write API that would help client application to
> implement their own network protocol and let them use Raw Sockets
> without having need of admin privileges on Vista/Win 7.
>
> Can you suggest How can I get started.
>
> Munir
>
> —
> NTDEV is sponsored by OSR
>
> For our schedule of WDF, WDM, debugging and other seminars visit:
> http://www.osr.com/seminars
>
> To unsubscribe, visit the List Server section of OSR Online at
> http://www.osronline.com/page.cfm?name=ListServer


NTDEV is sponsored by OSR

For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer

anton bassov wrote:

> That’s why I’ve planned to write a simple NDIS protocol
> Driver to support raw sockets. The plan is to write API
> that would help client application to implement their own
> network protocol and let them use Raw Sockets without
> having need of admin privileges on Vista/Win 7.

Well, the only thing I can say here is “Where is Chris”…

Indeed. At a former employer, which will technically no longer exist as of next month, some clown manager complained to me that in order to load my Linux kernel driver, you must have superuser privileges on the machine in question, and insisted that I investigate a workaround, because this was unacceptable. Maybe I should have contacted Munir for help…

Are you aware of WinPcap? http://www.winpcap.org/. Isn’t this a protocol
driver that already does basically what you want?