Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sockets VS WinPcap

Tags:

sockets

Does anyone know why should I use Winpcap and not just .Net sockets to sniff packets on my local pc?

TY

like image 426
Itay.B Avatar asked Oct 12 '09 20:10

Itay.B


People also ask

What is WinPcap and how does it work?

For many years, WinPcap has been recognized as the industry-standard tool for link-layer network access in Windows environments, allowing applications to capture and transmit network packets bypassing the protocol stack, and including kernel-level packet filtering, a network statistics engine and support for remote packet capture. WinPcap...

Do I need a device driver to create a TCP raw socket?

Since many of our users rely on Windows firewall service and/or Windows ICS (internet connection sharing), we've implemented a solution that uses a device driver to create TCP raw sockets. Do you need to use WinPcap? If you want to use TCP traceroute and your operating system is Windows XP SP2 or newer, then you will need to use WinPCap.

How do I use WinPcap with pingplotter?

Make sure PingPlotter is configured to use WinPcap (the default configuration is to use it if its installed, so it should "just work"). You're done! WinPcap allows PingPlotter to send packets directly to the network card. This is very powerful, but also means that the Windows protocol stacks don't help us with routing or validation of the packet.

Is there a WinPcap replacement for Nmap?

Gordon Lyon, Nmap project founder, has created Npcap, a packet capture library for Windows, that includes WinPcap compatibility and may be a suitable replacement for WinPcap and WinPcap Pro. Information can be found at https://nmap.org/npcap/.


2 Answers

Sockets (.NET, Winsock, etc.) normally collect at layer 7, the Application layer. That is, whatever is sent by the sender is what is received by the receiver. All of the various headers that are added automatically on the sending side are stripped off by the time the receiver reads the data from the socket.

It is possible to configure a socket to be a raw socket, in which case, you can see all of the headers down to layer 3, the Network layer. Further still, you can put the raw socket in promiscuous mode, which allows you to see all of the traffic on the network, not just the packets destined for your machine. But even this is limited. For example, when you configure the raw socket, you specify the protocol type to use, e.g., IP, ICMP, etc. This limits the socket to "seeing" packets that adhere to that protocol. I have been unable to figure out how to make the socket see all packets at layer 3 regardless of protocol.

Winpcap operates as a device driver at layer 2, the Data Link layer. In this case, you see literally all of the packets on the network with full headers down to layer 2. Winpcap also offers filtering capability so you can narrow down the packets that are reported to you based on whatever criteria you provide.

As far as choosing between them, it really boils down to the requirements of your specific task. If you are trying to implement any kind of realistic network analysis capability, you'll be hardpressed to do that with just sockets. Winpcap makes more sense in that case. However, if you are only interested in IP packets, for example, then sockets will work fine for that.

like image 67
Matt Davis Avatar answered Oct 22 '22 05:10

Matt Davis


As far as I understanf .Net sockets are an IPC to communicate between 2 processes. While winpcap is a library that help you to access the data link layer an sniff pacquets going through your network hardware (or virtual) devices on your machine. Data link layer allow to get the data on any socket (.Net or not) created on your system.

like image 1
yves Baumes Avatar answered Oct 22 '22 06:10

yves Baumes