The IPMonitor control is used to listen to network traffic.
The IPMonitor control will bind to a specific local host address and listen for network traffic received by the interface. The interface must support promiscuous mode (which may not work in many wireless cards because of security considerations) and must be installed on Windows 2000 or greater.
Note: If your computer connects to a switch, the switch will forward only those packets addressed to your computer. If your computer is on a hub, then you will receive everything.
The use of this component requires administrative permissions.
The first step in using the IPMonitor control is to set LocalHost to the IP address whose traffic you wish to monitor, and then set Active to True. For each packet that crosses the interface, the control will parse the header and fire an IPPacket event.
The following is the full list of the properties of the control with short descriptions. Click on the links for further details.
|AcceptData||This property enables or disables data reception (the IPPacket event).|
|Active||This property indicates whether the control is active.|
|IPPacket||This property includes the contents of the current packet.|
|LocalHost||The name of the local host or user-assigned IP interface through which connections are initiated or accepted.|
The following is the full list of the methods of the control with short descriptions. Click on the links for further details.
|Activate||This method enables network monitoring.|
|Config||Sets or retrieves a configuration setting.|
|Deactivate||This method disables network monitoring.|
|DoEvents||Processes events from the internal message queue.|
|ListIPAddresses||This method lists the valid IP addresses for this host.|
|ParsePcapFile||This method parses the specified pcap file.|
|PauseData||This method pauses data reception.|
|ProcessData||This method reenables data reception after a call to PauseData .|
|Reset||Reset the control.|
The following is the full list of the events fired by the control with short descriptions. Click on the links for further details.
|Error||Information about errors during data delivery.|
|IPAddress||This event is fired for each valid IP address on this host.|
|IPPacket||This event is fired whenever a packet is received.|
The following is a list of config settings for the control with short descriptions. Click on the links for further details.
|ListInterface||Lists the interfaces visible to the WinPCap or NPCap driver.|
|ReceiveAllMode||Enables a socket to receive all IPv4 or IPv6 packets on the network.|
|SelectedInterface||Used to select the interface the WinPCap or NPCap driver will listen on.|
|UseWinPCap||Whether to use the WinPCap or NPCap driver.|
|AbsoluteTimeout||Determines whether timeouts are inactivity timeouts or absolute timeouts.|
|FirewallData||Used to send extra data to the firewall.|
|InBufferSize||The size in bytes of the incoming queue of the socket.|
|OutBufferSize||The size in bytes of the outgoing queue of the socket.|
|CodePage||The system code page used for Unicode to Multibyte translations.|
|UseInternalSecurityAPI||Tells the control whether or not to use the system security libraries or an internal implementation.|
AcceptData Property (IPMonitor Control)
This property enables or disables data reception (the IPPacket event).
This property enables or disables data reception (the IPPacket event). Setting this property to False temporarily disables data reception (and the IPPacket event). Setting this property to True reenables data reception.
This property is not available at design time.
Active Property (IPMonitor Control)
This property indicates whether the control is active.
This property indicates whether the control is currently active and is monitoring network traffic.
This property is not available at design time.
IPPacket Property (IPMonitor Control)
This property includes the contents of the current packet.
This property contains the contents of the current packet. This property is available only while the IPPacket event is being processed. An empty string is returned at all other times.
To read or write binary data to the property, a Variant (Byte Array) version is provided in .IPPacketB.
This property is read-only and not available at design time.
LocalHost Property (IPMonitor Control)
The name of the local host or user-assigned IP interface through which connections are initiated or accepted.
The LocalHost property contains the name of the local host as obtained by the gethostname() system call, or if the user has assigned an IP address, the value of that address.
In multi-homed hosts (machines with more than one IP interface) setting LocalHost to the value of an interface will make the control initiate connections (or accept in the case of server controls) only through that interface.
If the control is connected, the LocalHost property shows the IP address of the interface through which the connection is made in internet dotted format (aaa.bbb.ccc.ddd). In most cases, this is the address of the local host, except for multi-homed hosts (machines with more than one IP interface).
NOTE: LocalHost is not persistent. You must always set it in code, and never in the property window.
Activate Method (IPMonitor Control)
This method enables network monitoring.
This methods enables network monitoring. When called, the control will create a communication endpoint (socket) that can be used to monitor network traffic.
To stop monitoring traffic, call Deactivate.
Config Method (IPMonitor Control)
Sets or retrieves a configuration setting.
Config is a generic method available in every control. It is used to set and retrieve configuration settings for the control.
These settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the control, access to these internal properties is provided through the Config method.
To set a configuration setting named PROPERTY, you must call Config("PROPERTY=VALUE"), where VALUE is the value of the setting expressed as a string. For boolean values, use the strings "True", "False", "0", "1", "Yes", or "No" (case does not matter).
To read (query) the value of a configuration setting, you must call Config("PROPERTY"). The value will be returned as a string.
Deactivate Method (IPMonitor Control)
This method disables network monitoring.
This methods disables network monitoring. When called, the control will stop monitoring network traffic.
DoEvents Method (IPMonitor Control)
Processes events from the internal message queue.
When DoEvents is called, the control processes any available events. If no events are available, it waits for a preset period of time, and then returns.
ListIPAddresses Method (IPMonitor Control)
This method lists the valid IP addresses for this host.
Use this method to list all valid addresses that can be monitored. Before monitoring the network, LocalHost must be set to a valid address on the host. After a call to this method, an IPAddress event will fire for each address.
ParsePcapFile Method (IPMonitor Control)
This method parses the specified pcap file.
This method parses the specified pcap (packet capture) file and fires events as if the traffic were received directly.
The control supports both the standard pcap and the newer pcap-ng file formats used by a variety of popular network capture tools. When calling this method, the file will be parsed and the IPPacket event will fire for each parsed packet.
PauseData Method (IPMonitor Control)
This method pauses data reception.
ProcessData Method (IPMonitor Control)
This method reenables data reception after a call to PauseData .
This method reenables data reception after a previous call to PauseData. When PauseData is called, the IPPacket event will not fire. To reenable data reception and allow IPPacket to fire, call this method.
Note: This method is used only after previously calling PauseData. It does not need to be called to process data by default.
Reset Method (IPMonitor Control)
Reset the control.
This method will reset the control's properties to their default values.
Error Event (IPMonitor Control)
Information about errors during data delivery.
Sub ipmonitorcontrol_Error(ErrorCode As Integer, Description As String)
The Error event is fired in case of exceptional conditions during message processing. Normally the control fails with an error.
ErrorCode contains an error code and Description contains a textual description of the error. For a list of valid error codes and their descriptions, please refer to the Error Codes section.
IPAddress Event (IPMonitor Control)
This event is fired for each valid IP address on this host.
Sub ipmonitorcontrol_IPAddress(IpAddress As String)
Before monitoring the network, LocalHost must be set to a valid address on the host. Use the ListIPAddresses method to list all valid addresses that can be monitored. After a call to the method, an IPAddress event will fire for each address.
IPPacket Event (IPMonitor Control)
This event is fired whenever a packet is received.
Sub ipmonitorcontrol_IPPacket(SourceAddress As String, SourcePort As Integer, DestinationAddress As String, DestinationPort As Integer, IPVersion As Integer, TOS As Integer, Id As Integer, Flags As Integer, Offset As Integer, TTL As Integer, Checksum As Integer, IPProtocol As Integer, Payload As String, Timestamp As Long64)
When Active is True or ParsePcapFile is called, the control will listen for network traffic or parse the provided file, respectively. For each packet sent across the interface in LocalHost, the control will parse the packet and fire an IPPacket event with the header fields and payload. The parameters are defined as follows:
|SourceAddress||The IP address of the originating host in IP dotted format.|
|DestinationAddress||The IP address of the destination host in IP dotted format.|
|IPVersion||The IP protocol version being used by this packet.|
|TOS||The type of service being used by this packet.|
|Id||The packet Id used to identify and track packets.|
|Flags||Flags relating to the status of the packet and desired responses.|
|Offset||The fragment offset of this packet in relation to larger data.|
|TTL||The time to live for this packet.|
|IPProtocol||The IP protocol used in the payload.|
|Payload||The data field of the IP packet. This field may contain extra IP headers, depending on the IP protocol used to create it.|
|Timestamp||This is the number of microseconds from the UNIX Epoch (1977-01-01). This is available only when parsing files.|
|Bit 0, 1, 2||Precedence (see below)|
|Bit 3||Delay (0 = Normal, 1 = Low)|
|Bit 4||Throughput (0 = Normal, 1 = High)|
|Bit 5||Reliability (0 = Normal, 1 = High)|
|Bit 0||Always zero|
|Bit 1||Don't Fragment (0 = May Fragment, 1 = Don't Fragment)|
|Bit 2||More Fragments (0 = Last Fragment, 1 = More Fragments)|
IPProtocol (For a full list, visit www.iana.org.)
Config Settings (IPMonitor Control)The control accepts one or more of the following configuration settings. Configuration settings are similar in functionality to properties, but they are rarely used. In order to avoid "polluting" the property namespace of the control, access to these internal properties is provided through the Config method.
IPMonitor Config Settings
|ListInterface: Lists the interfaces visible to the WinPCap or NPCap driver.This configuration setting returns a numbered list of interfaces visible to the WinPCap or NPCap driver on the system.|
Enables a socket to receive all IPv4 or IPv6 packets on the network.The following modes are available:
|SelectedInterface: Used to select the interface the WinPCap or NPCap driver will listen on.Set this configuration setting to the index of the interface the WinPCap or NPCap driver will listen on. Indices can be returned by querying ListInterface.|
|UseWinPCap: Whether to use the WinPCap or NPCap driver.When set to True, the control will use the WinPCap or NPCap driver available on the system. The default is False.|
Socket Config Settings
Determines whether timeouts are inactivity timeouts or absolute timeouts.If AbsoluteTimeout is set to True, any method which does not complete within Timeout seconds
will be aborted. By default, AbsoluteTimeout is False, and the timeout is an inactivity timeout.
Note: This option is not valid for UDP ports.
|FirewallData: Used to send extra data to the firewall.When the firewall is a tunneling proxy, use this property to send custom (additional) headers to the firewall (e.g. headers for custom authentication schemes).|
The size in bytes of the incoming queue of the socket.
This is the size of an internal queue in the TCP/IP stack.
You can increase or decrease its size depending on the amount
of data that you will be receiving. Increasing the value of the
InBufferSize setting can provide significant improvements in
performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the control is activated the InBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
The size in bytes of the outgoing queue of the socket.This is the size of an internal queue in the TCP/IP stack.
You can increase or decrease its size depending on the amount
of data that you will be sending. Increasing the value of the
OutBufferSize setting can provide significant improvements in
performance in some cases.
Some TCP/IP implementations do not support variable buffer sizes. If that is the case, when the control is activated the OutBufferSize reverts to its defined size. The same happens if you attempt to make it too large or too small.
Base Config Settings
The system code page used for Unicode to Multibyte translations.The default code page is Unicode UTF-8 (65001).
The following is a list of valid code page identifiers:
|UseInternalSecurityAPI: Tells the control whether or not to use the system security libraries or an internal implementation. By default the control will use the system security libraries to perform cryptographic functions where applicable. Setting this to tells the control to use the internal implementation instead of using the system's security API.|
Trappable Errors (IPMonitor Control)
|20651 Cannot read packet.|
|21119 Invalid local host.|
|20271 Cannot load specified security library.|
|20272 Cannot open certificate store.|
|20273 Cannot find specified certificate.|
|20274 Cannot acquire security credentials.|
|20275 Cannot find certificate chain.|
|20276 Cannot verify certificate chain.|
|20277 Error during handshake.|
|20281 Error verifying certificate.|
|20282 Could not find client certificate.|
|20283 Could not find server certificate.|
|20284 Error encrypting data.|
|20285 Error decrypting data.|
|25005  Interrupted system call.|
|25010  Bad file number.|
|25014  Access denied.|
|25015  Bad address.|
|25023  Invalid argument.|
|25025  Too many open files.|
|25036  Operation would block.|
|25037  Operation now in progress.|
|25038  Operation already in progress.|
|25039  Socket operation on non-socket.|
|25040  Destination address required.|
|25041  Message too long.|
|25042  Protocol wrong type for socket.|
|25043  Bad protocol option.|
|25044  Protocol not supported.|
|25045  Socket type not supported.|
|25046  Operation not supported on socket.|
|25047  Protocol family not supported.|
|25048  Address family not supported by protocol family.|
|25049  Address already in use.|
|25050  Can't assign requested address.|
|25051  Network is down.|
|25052  Network is unreachable.|
|25053  Net dropped connection or reset.|
|25054  Software caused connection abort.|
|25055  Connection reset by peer.|
|25056  No buffer space available.|
|25057  Socket is already connected.|
|25058  Socket is not connected.|
|25059  Can't send after socket shutdown.|
|25060  Too many references, can't splice.|
|25061  Connection timed out.|
|25062  Connection refused.|
|25063  Too many levels of symbolic links.|
|25064  File name too long.|
|25065  Host is down.|
|25066  No route to host.|
|25067  Directory not empty|
|25068  Too many processes.|
|25069  Too many users.|
|25070  Disc Quota Exceeded.|
|25071  Stale NFS file handle.|
|25072  Too many levels of remote in path.|
|25092  Network subsystem is unavailable.|
|25093  WINSOCK DLL Version out of range.|
|25094  Winsock not loaded yet.|
|26002  Host not found.|
|26003  Non-authoritative 'Host not found' (try again or check DNS setup).|
|26004  Non-recoverable errors: FORMERR, REFUSED, NOTIMP.|
|26005  Valid name, no data record (check DNS setup).|