From e32a18dac4c2a01c5ba7d0bb0a924610abf93402 Mon Sep 17 00:00:00 2001 From: "ramapcsx2.code" Date: Wed, 20 Mar 2013 13:58:00 +0000 Subject: [PATCH] Added WinPcap to the library of 3rd party includes and made DEV9ghzdrk use them. WinPcap version is 4.1.2 and only the /include and /lib folders of their developer pack are included. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5599 96395faa-99c1-11dd-bbfe-3dabce05a288 --- .../winpcap/include}/Packet32.h | 718 +++++++------- .../winpcap/include}/Win32-Extensions.h | 226 ++--- .../winpcap/include}/bittypes.h | 0 .../winpcap/include}/ip6_misc.h | 0 .../winpcap/include}/pcap-bpf.h | 0 .../winpcap/include}/pcap-namedb.h | 0 .../winpcap/include}/pcap-stdinc.h | 0 .../winpcap/include}/pcap.h | 0 .../winpcap/include}/pcap/bluetooth.h | 0 .../winpcap/include}/pcap/bpf.h | 0 .../winpcap/include}/pcap/namedb.h | 0 .../winpcap/include}/pcap/pcap.h | 0 .../winpcap/include}/pcap/sll.h | 0 .../winpcap/include}/pcap/usb.h | 0 .../winpcap/include}/pcap/vlan.h | 0 .../winpcap/include}/remote-ext.h | 888 +++++++++--------- 3rdparty/winpcap/lib/Packet.lib | Bin 0 -> 8450 bytes 3rdparty/winpcap/lib/wpcap.lib | Bin 0 -> 19320 bytes 3rdparty/winpcap/lib/x64/Packet.lib | Bin 0 -> 8290 bytes 3rdparty/winpcap/lib/x64/wpcap.lib | Bin 0 -> 18892 bytes 3rdparty/winpcap/readme.txt | 3 + plugins/dev9ghzdrk/Win32/Config.cpp | 2 +- plugins/dev9ghzdrk/Win32/DEV9ghzdrk.vcxproj | 8 +- plugins/dev9ghzdrk/Win32/Win32.cpp | 2 +- plugins/dev9ghzdrk/Win32/net.cpp | 2 +- plugins/dev9ghzdrk/Win32/smap.h | 2 +- plugins/dev9ghzdrk/Win32/tap-win32.cpp | 2 +- plugins/dev9ghzdrk/pcap/wpcap_32/Packet.dll | Bin 88696 -> 0 bytes plugins/dev9ghzdrk/pcap/wpcap_32/Packet.lib | Bin 8674 -> 0 bytes plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.dll | Bin 244336 -> 0 bytes plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.lib | Bin 17658 -> 0 bytes 31 files changed, 928 insertions(+), 925 deletions(-) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/Packet32.h (97%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/Win32-Extensions.h (97%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/bittypes.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/ip6_misc.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap-bpf.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap-namedb.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap-stdinc.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/bluetooth.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/bpf.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/namedb.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/pcap.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/sll.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/usb.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/pcap/vlan.h (100%) rename {plugins/dev9ghzdrk => 3rdparty/winpcap/include}/remote-ext.h (97%) create mode 100644 3rdparty/winpcap/lib/Packet.lib create mode 100644 3rdparty/winpcap/lib/wpcap.lib create mode 100644 3rdparty/winpcap/lib/x64/Packet.lib create mode 100644 3rdparty/winpcap/lib/x64/wpcap.lib create mode 100644 3rdparty/winpcap/readme.txt delete mode 100644 plugins/dev9ghzdrk/pcap/wpcap_32/Packet.dll delete mode 100644 plugins/dev9ghzdrk/pcap/wpcap_32/Packet.lib delete mode 100644 plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.dll delete mode 100644 plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.lib diff --git a/plugins/dev9ghzdrk/Packet32.h b/3rdparty/winpcap/include/Packet32.h similarity index 97% rename from plugins/dev9ghzdrk/Packet32.h rename to 3rdparty/winpcap/include/Packet32.h index 64be055d96..1e0eacd77d 100644 --- a/plugins/dev9ghzdrk/Packet32.h +++ b/3rdparty/winpcap/include/Packet32.h @@ -1,359 +1,359 @@ -/* - * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) - * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino, CACE Technologies - * nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -/** @ingroup packetapi - * @{ - */ - -/** @defgroup packet32h Packet.dll definitions and data structures - * Packet32.h contains the data structures and the definitions used by packet.dll. - * The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included - * by the applications that use the functions of this library - * @{ - */ - -#ifndef __PACKET32 -#define __PACKET32 - -#include - -#ifdef HAVE_AIRPCAP_API -#include -#else -#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) -#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ -typedef struct _AirpcapHandle *PAirpcapHandle; -#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */ -#endif /* HAVE_AIRPCAP_API */ - -#ifdef HAVE_DAG_API -#include -#endif /* HAVE_DAG_API */ - -// Working modes -#define PACKET_MODE_CAPT 0x0 ///< Capture mode -#define PACKET_MODE_STAT 0x1 ///< Statistical mode -#define PACKET_MODE_MON 0x2 ///< Monitoring mode -#define PACKET_MODE_DUMP 0x10 ///< Dump mode -#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode - - -/// Alignment macro. Defines the alignment size. -#define Packet_ALIGNMENT sizeof(int) -/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. -#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) - -#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent -#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent - -// Loopback behaviour definitions -#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver -#define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver - -/*! - \brief Network type structure. - - This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed. -*/ -typedef struct NetType -{ - UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) - ULONGLONG LinkSpeed; ///< The speed of the network in bits per second -}NetType; - - -//some definitions stolen from libpcap - -#ifndef BPF_MAJOR_VERSION - -/*! - \brief A BPF pseudo-assembly program. - - The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. -*/ -struct bpf_program -{ - UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. - struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program. -}; - -/*! - \brief A single BPF pseudo-instruction. - - bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver. -*/ -struct bpf_insn -{ - USHORT code; ///< Instruction type and addressing mode. - UCHAR jt; ///< Jump if true - UCHAR jf; ///< Jump if false - int k; ///< Generic field used for various purposes. -}; - -/*! - \brief Structure that contains a couple of statistics values on the current capture. - - It is used by packet.dll to return statistics about a capture session. -*/ -struct bpf_stat -{ - UINT bs_recv; ///< Number of packets that the driver received from the network adapter - ///< from the beginning of the current capture. This value includes the packets - ///< lost by the driver. - UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. - ///< Basically, a packet is lost when the the buffer of the driver is full. - ///< In this situation the packet cannot be stored and the driver rejects it. - UINT ps_ifdrop; ///< drops by interface. XXX not yet supported - UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and - ///< thus reach the application. -}; - -/*! - \brief Packet header. - - This structure defines the header associated with every packet delivered to the application. -*/ -struct bpf_hdr -{ - struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. - ///< It is stored in a TimeVal structure. - UINT bh_caplen; ///< Length of captured portion. The captured portion can be different - ///< from the original packet, because it is possible (with a proper filter) - ///< to instruct the driver to capture only a portion of the packets. - UINT bh_datalen; ///< Original length of packet - USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, - ///< a padding could be added between the end of this structure and the packet - ///< data for performance reasons. This filed can be used to retrieve the actual data - ///< of the packet. -}; - -/*! - \brief Dump packet header. - - This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets(). - It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a - packet in a dump file. This makes straightforward sending WinPcap dump files to the network. -*/ -struct dump_bpf_hdr{ - struct timeval ts; ///< Time stamp of the packet - UINT caplen; ///< Length of captured portion. The captured portion can smaller than the - ///< the original packet, because it is possible (with a proper filter) to - ///< instruct the driver to capture only a portion of the packets. - UINT len; ///< Length of the original packet (off wire). -}; - - -#endif - -struct bpf_stat; - -#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices -#define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links -#define NMAX_PACKET 65535 - -/*! - \brief Addresses of a network adapter. - - This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with - an adapter. -*/ -typedef struct npf_if_addr { - struct sockaddr_storage IPAddress; ///< IP address. - struct sockaddr_storage SubnetMask; ///< Netmask for that address. - struct sockaddr_storage Broadcast; ///< Broadcast address. -}npf_if_addr; - - -#define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. -#define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. -#define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. -#define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. - - -typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API -typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API - -#define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter -#define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET -#define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card -#define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file -#define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. -#define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card -#define INFO_FLAG_NPFIM_DEVICE 32 - -/*! - \brief Describes an opened network adapter. - - This structure is the most important for the functioning of packet.dll, but the great part of its fields - should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters -*/ -typedef struct _ADAPTER { - HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. - CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened. - int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated - ///< on the wire. - HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. - ///< It can be passed to standard Win32 functions (like WaitForSingleObject - ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some - ///< data. It is particularly useful in GUI applications that need to wait - ///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() - ///< function can be used to define the minimum amount of data in the kernel buffer - ///< that will cause the event to be signalled. - - UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and - ///< ReadEvent will be signaled, also if no packets were captured - CHAR Name[ADAPTER_NAME_LENGTH]; - PWAN_ADAPTER pWanAdapter; - UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. - -#ifdef HAVE_AIRPCAP_API - PAirpcapHandle AirpcapAd; -#endif // HAVE_AIRPCAP_API - -#ifdef HAVE_NPFIM_API - void* NpfImHandle; -#endif // HAVE_NPFIM_API - -#ifdef HAVE_DAG_API - dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter - PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card - struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure - unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry - DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). -#endif // HAVE_DAG_API -} ADAPTER, *LPADAPTER; - -/*! - \brief Structure that contains a group of packets coming from the driver. - - This structure defines the header associated with every packet delivered to the application. -*/ -typedef struct _PACKET { - HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. - OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications. - PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for - ///< details about the organization of the data in this buffer - UINT Length; ///< Length of the buffer - DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data - ///< received by the last call to PacketReceivePacket() - BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. -} PACKET, *LPPACKET; - -/*! - \brief Structure containing an OID request. - - It is used by the PacketRequest() function to send an OID to the interface card driver. - It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, - the list of the multicast groups defined on it, and so on. -*/ -struct _PACKET_OID_DATA { - ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h - ///< for a complete list of valid codes. - ULONG Length; ///< Length of the data field - UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received - ///< from the adapter. -}; -typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @} - */ - -/* -BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, - CHAR *Value, - UINT *pValueLen, - CHAR *DefaultVal); - -BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, - WCHAR *Value, - UINT *pValueLen, - WCHAR *DefaultVal); -*/ - -//--------------------------------------------------------------------------- -// EXPORTED FUNCTIONS -//--------------------------------------------------------------------------- - -PCHAR PacketGetVersion(); -PCHAR PacketGetDriverVersion(); -BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); -BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); -BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); -BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); -BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); -BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior); -INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen); -BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); -BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s); -BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); -BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); -LPADAPTER PacketOpenAdapter(PCHAR AdapterName); -BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); -INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync); -LPPACKET PacketAllocatePacket(void); -VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); -VOID PacketFreePacket(LPPACKET lpPacket); -BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); -BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); -BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); -BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries); -BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); -HANDLE PacketGetReadEvent(LPADAPTER AdapterObject); -BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len); -BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks); -BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync); -BOOL PacketStopDriver(); -VOID PacketCloseAdapter(LPADAPTER lpAdapter); -BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength); -BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags); -PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject); - -// -// Used by PacketStartOemEx -// -#define PACKET_START_OEM_NO_NETMON 0x00000001 - -#ifdef __cplusplus -} -#endif - -#endif //__PACKET32 +/* + * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2007 CACE Technologies, Davis (California) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +/** @ingroup packetapi + * @{ + */ + +/** @defgroup packet32h Packet.dll definitions and data structures + * Packet32.h contains the data structures and the definitions used by packet.dll. + * The file is used both by the Win9x and the WinNTx versions of packet.dll, and can be included + * by the applications that use the functions of this library + * @{ + */ + +#ifndef __PACKET32 +#define __PACKET32 + +#include + +#ifdef HAVE_AIRPCAP_API +#include +#else +#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) +#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ +typedef struct _AirpcapHandle *PAirpcapHandle; +#endif /* AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ */ +#endif /* HAVE_AIRPCAP_API */ + +#ifdef HAVE_DAG_API +#include +#endif /* HAVE_DAG_API */ + +// Working modes +#define PACKET_MODE_CAPT 0x0 ///< Capture mode +#define PACKET_MODE_STAT 0x1 ///< Statistical mode +#define PACKET_MODE_MON 0x2 ///< Monitoring mode +#define PACKET_MODE_DUMP 0x10 ///< Dump mode +#define PACKET_MODE_STAT_DUMP MODE_DUMP | MODE_STAT ///< Statistical dump Mode + + +/// Alignment macro. Defines the alignment size. +#define Packet_ALIGNMENT sizeof(int) +/// Alignment macro. Rounds up to the next even multiple of Packet_ALIGNMENT. +#define Packet_WORDALIGN(x) (((x)+(Packet_ALIGNMENT-1))&~(Packet_ALIGNMENT-1)) + +#define NdisMediumNull -1 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumCHDLC -2 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumPPPSerial -3 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumBare80211 -4 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumRadio80211 -5 ///< Custom linktype: NDIS doesn't provide an equivalent +#define NdisMediumPpi -6 ///< Custom linktype: NDIS doesn't provide an equivalent + +// Loopback behaviour definitions +#define NPF_DISABLE_LOOPBACK 1 ///< Drop the packets sent by the NPF driver +#define NPF_ENABLE_LOOPBACK 2 ///< Capture the packets sent by the NPF driver + +/*! + \brief Network type structure. + + This structure is used by the PacketGetNetType() function to return information on the current adapter's type and speed. +*/ +typedef struct NetType +{ + UINT LinkType; ///< The MAC of the current network adapter (see function PacketGetNetType() for more information) + ULONGLONG LinkSpeed; ///< The speed of the network in bits per second +}NetType; + + +//some definitions stolen from libpcap + +#ifndef BPF_MAJOR_VERSION + +/*! + \brief A BPF pseudo-assembly program. + + The program will be injected in the kernel by the PacketSetBPF() function and applied to every incoming packet. +*/ +struct bpf_program +{ + UINT bf_len; ///< Indicates the number of instructions of the program, i.e. the number of struct bpf_insn that will follow. + struct bpf_insn *bf_insns; ///< A pointer to the first instruction of the program. +}; + +/*! + \brief A single BPF pseudo-instruction. + + bpf_insn contains a single instruction for the BPF register-machine. It is used to send a filter program to the driver. +*/ +struct bpf_insn +{ + USHORT code; ///< Instruction type and addressing mode. + UCHAR jt; ///< Jump if true + UCHAR jf; ///< Jump if false + int k; ///< Generic field used for various purposes. +}; + +/*! + \brief Structure that contains a couple of statistics values on the current capture. + + It is used by packet.dll to return statistics about a capture session. +*/ +struct bpf_stat +{ + UINT bs_recv; ///< Number of packets that the driver received from the network adapter + ///< from the beginning of the current capture. This value includes the packets + ///< lost by the driver. + UINT bs_drop; ///< number of packets that the driver lost from the beginning of a capture. + ///< Basically, a packet is lost when the the buffer of the driver is full. + ///< In this situation the packet cannot be stored and the driver rejects it. + UINT ps_ifdrop; ///< drops by interface. XXX not yet supported + UINT bs_capt; ///< number of packets that pass the filter, find place in the kernel buffer and + ///< thus reach the application. +}; + +/*! + \brief Packet header. + + This structure defines the header associated with every packet delivered to the application. +*/ +struct bpf_hdr +{ + struct timeval bh_tstamp; ///< The timestamp associated with the captured packet. + ///< It is stored in a TimeVal structure. + UINT bh_caplen; ///< Length of captured portion. The captured portion can be different + ///< from the original packet, because it is possible (with a proper filter) + ///< to instruct the driver to capture only a portion of the packets. + UINT bh_datalen; ///< Original length of packet + USHORT bh_hdrlen; ///< Length of bpf header (this struct plus alignment padding). In some cases, + ///< a padding could be added between the end of this structure and the packet + ///< data for performance reasons. This filed can be used to retrieve the actual data + ///< of the packet. +}; + +/*! + \brief Dump packet header. + + This structure defines the header associated with the packets in a buffer to be used with PacketSendPackets(). + It is simpler than the bpf_hdr, because it corresponds to the header associated by WinPcap and libpcap to a + packet in a dump file. This makes straightforward sending WinPcap dump files to the network. +*/ +struct dump_bpf_hdr{ + struct timeval ts; ///< Time stamp of the packet + UINT caplen; ///< Length of captured portion. The captured portion can smaller than the + ///< the original packet, because it is possible (with a proper filter) to + ///< instruct the driver to capture only a portion of the packets. + UINT len; ///< Length of the original packet (off wire). +}; + + +#endif + +struct bpf_stat; + +#define DOSNAMEPREFIX TEXT("Packet_") ///< Prefix added to the adapters device names to create the WinPcap devices +#define MAX_LINK_NAME_LENGTH 64 //< Maximum length of the devices symbolic links +#define NMAX_PACKET 65535 + +/*! + \brief Addresses of a network adapter. + + This structure is used by the PacketGetNetInfoEx() function to return the IP addresses associated with + an adapter. +*/ +typedef struct npf_if_addr { + struct sockaddr_storage IPAddress; ///< IP address. + struct sockaddr_storage SubnetMask; ///< Netmask for that address. + struct sockaddr_storage Broadcast; ///< Broadcast address. +}npf_if_addr; + + +#define ADAPTER_NAME_LENGTH 256 + 12 ///< Maximum length for the name of an adapter. The value is the same used by the IP Helper API. +#define ADAPTER_DESC_LENGTH 128 ///< Maximum length for the description of an adapter. The value is the same used by the IP Helper API. +#define MAX_MAC_ADDR_LENGTH 8 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. +#define MAX_NETWORK_ADDRESSES 16 ///< Maximum length for the link layer address of an adapter. The value is the same used by the IP Helper API. + + +typedef struct WAN_ADAPTER_INT WAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API +typedef WAN_ADAPTER *PWAN_ADAPTER; ///< Describes an opened wan (dialup, VPN...) network adapter using the NetMon API + +#define INFO_FLAG_NDIS_ADAPTER 0 ///< Flag for ADAPTER_INFO: this is a traditional ndis adapter +#define INFO_FLAG_NDISWAN_ADAPTER 1 ///< Flag for ADAPTER_INFO: this is a NdisWan adapter, and it's managed by WANPACKET +#define INFO_FLAG_DAG_CARD 2 ///< Flag for ADAPTER_INFO: this is a DAG card +#define INFO_FLAG_DAG_FILE 6 ///< Flag for ADAPTER_INFO: this is a DAG file +#define INFO_FLAG_DONT_EXPORT 8 ///< Flag for ADAPTER_INFO: when this flag is set, the adapter will not be listed or openend by winpcap. This allows to prevent exporting broken network adapters, like for example FireWire ones. +#define INFO_FLAG_AIRPCAP_CARD 16 ///< Flag for ADAPTER_INFO: this is an airpcap card +#define INFO_FLAG_NPFIM_DEVICE 32 + +/*! + \brief Describes an opened network adapter. + + This structure is the most important for the functioning of packet.dll, but the great part of its fields + should be ignored by the user, since the library offers functions that avoid to cope with low-level parameters +*/ +typedef struct _ADAPTER { + HANDLE hFile; ///< \internal Handle to an open instance of the NPF driver. + CHAR SymbolicLink[MAX_LINK_NAME_LENGTH]; ///< \internal A string containing the name of the network adapter currently opened. + int NumWrites; ///< \internal Number of times a packets written on this adapter will be repeated + ///< on the wire. + HANDLE ReadEvent; ///< A notification event associated with the read calls on the adapter. + ///< It can be passed to standard Win32 functions (like WaitForSingleObject + ///< or WaitForMultipleObjects) to wait until the driver's buffer contains some + ///< data. It is particularly useful in GUI applications that need to wait + ///< concurrently on several events. In Windows NT/2000 the PacketSetMinToCopy() + ///< function can be used to define the minimum amount of data in the kernel buffer + ///< that will cause the event to be signalled. + + UINT ReadTimeOut; ///< \internal The amount of time after which a read on the driver will be released and + ///< ReadEvent will be signaled, also if no packets were captured + CHAR Name[ADAPTER_NAME_LENGTH]; + PWAN_ADAPTER pWanAdapter; + UINT Flags; ///< Adapter's flags. Tell if this adapter must be treated in a different way, using the Netmon API or the dagc API. + +#ifdef HAVE_AIRPCAP_API + PAirpcapHandle AirpcapAd; +#endif // HAVE_AIRPCAP_API + +#ifdef HAVE_NPFIM_API + void* NpfImHandle; +#endif // HAVE_NPFIM_API + +#ifdef HAVE_DAG_API + dagc_t *pDagCard; ///< Pointer to the dagc API adapter descriptor for this adapter + PCHAR DagBuffer; ///< Pointer to the buffer with the packets that is received from the DAG card + struct timeval DagReadTimeout; ///< Read timeout. The dagc API requires a timeval structure + unsigned DagFcsLen; ///< Length of the frame check sequence attached to any packet by the card. Obtained from the registry + DWORD DagFastProcess; ///< True if the user requests fast capture processing on this card. Higher level applications can use this value to provide a faster but possibly unprecise capture (for example, libpcap doesn't convert the timestamps). +#endif // HAVE_DAG_API +} ADAPTER, *LPADAPTER; + +/*! + \brief Structure that contains a group of packets coming from the driver. + + This structure defines the header associated with every packet delivered to the application. +*/ +typedef struct _PACKET { + HANDLE hEvent; ///< \deprecated Still present for compatibility with old applications. + OVERLAPPED OverLapped; ///< \deprecated Still present for compatibility with old applications. + PVOID Buffer; ///< Buffer with containing the packets. See the PacketReceivePacket() for + ///< details about the organization of the data in this buffer + UINT Length; ///< Length of the buffer + DWORD ulBytesReceived; ///< Number of valid bytes present in the buffer, i.e. amount of data + ///< received by the last call to PacketReceivePacket() + BOOLEAN bIoComplete; ///< \deprecated Still present for compatibility with old applications. +} PACKET, *LPPACKET; + +/*! + \brief Structure containing an OID request. + + It is used by the PacketRequest() function to send an OID to the interface card driver. + It can be used, for example, to retrieve the status of the error counters on the adapter, its MAC address, + the list of the multicast groups defined on it, and so on. +*/ +struct _PACKET_OID_DATA { + ULONG Oid; ///< OID code. See the Microsoft DDK documentation or the file ntddndis.h + ///< for a complete list of valid codes. + ULONG Length; ///< Length of the data field + UCHAR Data[1]; ///< variable-lenght field that contains the information passed to or received + ///< from the adapter. +}; +typedef struct _PACKET_OID_DATA PACKET_OID_DATA, *PPACKET_OID_DATA; + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @} + */ + +/* +BOOLEAN QueryWinPcapRegistryStringA(CHAR *SubKeyName, + CHAR *Value, + UINT *pValueLen, + CHAR *DefaultVal); + +BOOLEAN QueryWinPcapRegistryStringW(WCHAR *SubKeyName, + WCHAR *Value, + UINT *pValueLen, + WCHAR *DefaultVal); +*/ + +//--------------------------------------------------------------------------- +// EXPORTED FUNCTIONS +//--------------------------------------------------------------------------- + +PCHAR PacketGetVersion(); +PCHAR PacketGetDriverVersion(); +BOOLEAN PacketSetMinToCopy(LPADAPTER AdapterObject,int nbytes); +BOOLEAN PacketSetNumWrites(LPADAPTER AdapterObject,int nwrites); +BOOLEAN PacketSetMode(LPADAPTER AdapterObject,int mode); +BOOLEAN PacketSetReadTimeout(LPADAPTER AdapterObject,int timeout); +BOOLEAN PacketSetBpf(LPADAPTER AdapterObject,struct bpf_program *fp); +BOOLEAN PacketSetLoopbackBehavior(LPADAPTER AdapterObject, UINT LoopbackBehavior); +INT PacketSetSnapLen(LPADAPTER AdapterObject,int snaplen); +BOOLEAN PacketGetStats(LPADAPTER AdapterObject,struct bpf_stat *s); +BOOLEAN PacketGetStatsEx(LPADAPTER AdapterObject,struct bpf_stat *s); +BOOLEAN PacketSetBuff(LPADAPTER AdapterObject,int dim); +BOOLEAN PacketGetNetType (LPADAPTER AdapterObject,NetType *type); +LPADAPTER PacketOpenAdapter(PCHAR AdapterName); +BOOLEAN PacketSendPacket(LPADAPTER AdapterObject,LPPACKET pPacket,BOOLEAN Sync); +INT PacketSendPackets(LPADAPTER AdapterObject,PVOID PacketBuff,ULONG Size, BOOLEAN Sync); +LPPACKET PacketAllocatePacket(void); +VOID PacketInitPacket(LPPACKET lpPacket,PVOID Buffer,UINT Length); +VOID PacketFreePacket(LPPACKET lpPacket); +BOOLEAN PacketReceivePacket(LPADAPTER AdapterObject,LPPACKET lpPacket,BOOLEAN Sync); +BOOLEAN PacketSetHwFilter(LPADAPTER AdapterObject,ULONG Filter); +BOOLEAN PacketGetAdapterNames(PTSTR pStr,PULONG BufferSize); +BOOLEAN PacketGetNetInfoEx(PCHAR AdapterName, npf_if_addr* buffer, PLONG NEntries); +BOOLEAN PacketRequest(LPADAPTER AdapterObject,BOOLEAN Set,PPACKET_OID_DATA OidData); +HANDLE PacketGetReadEvent(LPADAPTER AdapterObject); +BOOLEAN PacketSetDumpName(LPADAPTER AdapterObject, void *name, int len); +BOOLEAN PacketSetDumpLimits(LPADAPTER AdapterObject, UINT maxfilesize, UINT maxnpacks); +BOOLEAN PacketIsDumpEnded(LPADAPTER AdapterObject, BOOLEAN sync); +BOOL PacketStopDriver(); +VOID PacketCloseAdapter(LPADAPTER lpAdapter); +BOOLEAN PacketStartOem(PCHAR errorString, UINT errorStringLength); +BOOLEAN PacketStartOemEx(PCHAR errorString, UINT errorStringLength, ULONG flags); +PAirpcapHandle PacketGetAirPcapHandle(LPADAPTER AdapterObject); + +// +// Used by PacketStartOemEx +// +#define PACKET_START_OEM_NO_NETMON 0x00000001 + +#ifdef __cplusplus +} +#endif + +#endif //__PACKET32 diff --git a/plugins/dev9ghzdrk/Win32-Extensions.h b/3rdparty/winpcap/include/Win32-Extensions.h similarity index 97% rename from plugins/dev9ghzdrk/Win32-Extensions.h rename to 3rdparty/winpcap/include/Win32-Extensions.h index ad3be25cfa..d3b063b0fd 100644 --- a/plugins/dev9ghzdrk/Win32-Extensions.h +++ b/3rdparty/winpcap/include/Win32-Extensions.h @@ -1,113 +1,113 @@ -/* - * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) - * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino, CACE Technologies - * nor the names of its contributors may be used to endorse or promote - * products derived from this software without specific prior written - * permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - -#ifndef __WIN32_EXTENSIONS_H__ -#define __WIN32_EXTENSIONS_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/* Definitions */ - -/*! - \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit(). -*/ -struct pcap_send_queue -{ - u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. - u_int len; ///< Current size of the queue, in bytes. - char *buffer; ///< Buffer containing the packets to be sent. -}; - -typedef struct pcap_send_queue pcap_send_queue; - -/*! - \brief This typedef is a support for the pcap_get_airpcap_handle() function -*/ -#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) -#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ -typedef struct _AirpcapHandle *PAirpcapHandle; -#endif - -#define BPF_MEM_EX_IMM 0xc0 -#define BPF_MEM_EX_IND 0xe0 - -/*used for ST*/ -#define BPF_MEM_EX 0xc0 -#define BPF_TME 0x08 - -#define BPF_LOOKUP 0x90 -#define BPF_EXECUTE 0xa0 -#define BPF_INIT 0xb0 -#define BPF_VALIDATE 0xc0 -#define BPF_SET_ACTIVE 0xd0 -#define BPF_RESET 0xe0 -#define BPF_SET_MEMORY 0x80 -#define BPF_GET_REGISTER_VALUE 0x70 -#define BPF_SET_REGISTER_VALUE 0x60 -#define BPF_SET_WORKING 0x50 -#define BPF_SET_ACTIVE_READ 0x40 -#define BPF_SET_AUTODELETION 0x30 -#define BPF_SEPARATION 0xff - -/* Prototypes */ -pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); - -void pcap_sendqueue_destroy(pcap_send_queue* queue); - -int pcap_sendqueue_queue(pcap_send_queue* queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data); - -u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync); - -HANDLE pcap_getevent(pcap_t *p); - -struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size); - -int pcap_setuserbuffer(pcap_t *p, int size); - -int pcap_live_dump(pcap_t *p, char *filename, int maxsize, int maxpacks); - -int pcap_live_dump_ended(pcap_t *p, int sync); - -int pcap_offline_filter(struct bpf_program *prog, const struct pcap_pkthdr *header, const u_char *pkt_data); - -int pcap_start_oem(char* err_str, int flags); - -PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p); - -#ifdef __cplusplus -} -#endif - -#endif //__WIN32_EXTENSIONS_H__ +/* + * Copyright (c) 1999 - 2005 NetGroup, Politecnico di Torino (Italy) + * Copyright (c) 2005 - 2006 CACE Technologies, Davis (California) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino, CACE Technologies + * nor the names of its contributors may be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +#ifndef __WIN32_EXTENSIONS_H__ +#define __WIN32_EXTENSIONS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/* Definitions */ + +/*! + \brief A queue of raw packets that will be sent to the network with pcap_sendqueue_transmit(). +*/ +struct pcap_send_queue +{ + u_int maxlen; ///< Maximum size of the the queue, in bytes. This variable contains the size of the buffer field. + u_int len; ///< Current size of the queue, in bytes. + char *buffer; ///< Buffer containing the packets to be sent. +}; + +typedef struct pcap_send_queue pcap_send_queue; + +/*! + \brief This typedef is a support for the pcap_get_airpcap_handle() function +*/ +#if !defined(AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_) +#define AIRPCAP_HANDLE__EAE405F5_0171_9592_B3C2_C19EC426AD34__DEFINED_ +typedef struct _AirpcapHandle *PAirpcapHandle; +#endif + +#define BPF_MEM_EX_IMM 0xc0 +#define BPF_MEM_EX_IND 0xe0 + +/*used for ST*/ +#define BPF_MEM_EX 0xc0 +#define BPF_TME 0x08 + +#define BPF_LOOKUP 0x90 +#define BPF_EXECUTE 0xa0 +#define BPF_INIT 0xb0 +#define BPF_VALIDATE 0xc0 +#define BPF_SET_ACTIVE 0xd0 +#define BPF_RESET 0xe0 +#define BPF_SET_MEMORY 0x80 +#define BPF_GET_REGISTER_VALUE 0x70 +#define BPF_SET_REGISTER_VALUE 0x60 +#define BPF_SET_WORKING 0x50 +#define BPF_SET_ACTIVE_READ 0x40 +#define BPF_SET_AUTODELETION 0x30 +#define BPF_SEPARATION 0xff + +/* Prototypes */ +pcap_send_queue* pcap_sendqueue_alloc(u_int memsize); + +void pcap_sendqueue_destroy(pcap_send_queue* queue); + +int pcap_sendqueue_queue(pcap_send_queue* queue, const struct pcap_pkthdr *pkt_header, const u_char *pkt_data); + +u_int pcap_sendqueue_transmit(pcap_t *p, pcap_send_queue* queue, int sync); + +HANDLE pcap_getevent(pcap_t *p); + +struct pcap_stat *pcap_stats_ex(pcap_t *p, int *pcap_stat_size); + +int pcap_setuserbuffer(pcap_t *p, int size); + +int pcap_live_dump(pcap_t *p, char *filename, int maxsize, int maxpacks); + +int pcap_live_dump_ended(pcap_t *p, int sync); + +int pcap_offline_filter(struct bpf_program *prog, const struct pcap_pkthdr *header, const u_char *pkt_data); + +int pcap_start_oem(char* err_str, int flags); + +PAirpcapHandle pcap_get_airpcap_handle(pcap_t *p); + +#ifdef __cplusplus +} +#endif + +#endif //__WIN32_EXTENSIONS_H__ diff --git a/plugins/dev9ghzdrk/bittypes.h b/3rdparty/winpcap/include/bittypes.h similarity index 100% rename from plugins/dev9ghzdrk/bittypes.h rename to 3rdparty/winpcap/include/bittypes.h diff --git a/plugins/dev9ghzdrk/ip6_misc.h b/3rdparty/winpcap/include/ip6_misc.h similarity index 100% rename from plugins/dev9ghzdrk/ip6_misc.h rename to 3rdparty/winpcap/include/ip6_misc.h diff --git a/plugins/dev9ghzdrk/pcap-bpf.h b/3rdparty/winpcap/include/pcap-bpf.h similarity index 100% rename from plugins/dev9ghzdrk/pcap-bpf.h rename to 3rdparty/winpcap/include/pcap-bpf.h diff --git a/plugins/dev9ghzdrk/pcap-namedb.h b/3rdparty/winpcap/include/pcap-namedb.h similarity index 100% rename from plugins/dev9ghzdrk/pcap-namedb.h rename to 3rdparty/winpcap/include/pcap-namedb.h diff --git a/plugins/dev9ghzdrk/pcap-stdinc.h b/3rdparty/winpcap/include/pcap-stdinc.h similarity index 100% rename from plugins/dev9ghzdrk/pcap-stdinc.h rename to 3rdparty/winpcap/include/pcap-stdinc.h diff --git a/plugins/dev9ghzdrk/pcap.h b/3rdparty/winpcap/include/pcap.h similarity index 100% rename from plugins/dev9ghzdrk/pcap.h rename to 3rdparty/winpcap/include/pcap.h diff --git a/plugins/dev9ghzdrk/pcap/bluetooth.h b/3rdparty/winpcap/include/pcap/bluetooth.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/bluetooth.h rename to 3rdparty/winpcap/include/pcap/bluetooth.h diff --git a/plugins/dev9ghzdrk/pcap/bpf.h b/3rdparty/winpcap/include/pcap/bpf.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/bpf.h rename to 3rdparty/winpcap/include/pcap/bpf.h diff --git a/plugins/dev9ghzdrk/pcap/namedb.h b/3rdparty/winpcap/include/pcap/namedb.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/namedb.h rename to 3rdparty/winpcap/include/pcap/namedb.h diff --git a/plugins/dev9ghzdrk/pcap/pcap.h b/3rdparty/winpcap/include/pcap/pcap.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/pcap.h rename to 3rdparty/winpcap/include/pcap/pcap.h diff --git a/plugins/dev9ghzdrk/pcap/sll.h b/3rdparty/winpcap/include/pcap/sll.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/sll.h rename to 3rdparty/winpcap/include/pcap/sll.h diff --git a/plugins/dev9ghzdrk/pcap/usb.h b/3rdparty/winpcap/include/pcap/usb.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/usb.h rename to 3rdparty/winpcap/include/pcap/usb.h diff --git a/plugins/dev9ghzdrk/pcap/vlan.h b/3rdparty/winpcap/include/pcap/vlan.h similarity index 100% rename from plugins/dev9ghzdrk/pcap/vlan.h rename to 3rdparty/winpcap/include/pcap/vlan.h diff --git a/plugins/dev9ghzdrk/remote-ext.h b/3rdparty/winpcap/include/remote-ext.h similarity index 97% rename from plugins/dev9ghzdrk/remote-ext.h rename to 3rdparty/winpcap/include/remote-ext.h index 35a2fff6c2..9f54d6974c 100644 --- a/plugins/dev9ghzdrk/remote-ext.h +++ b/3rdparty/winpcap/include/remote-ext.h @@ -1,444 +1,444 @@ -/* - * Copyright (c) 2002 - 2003 - * NetGroup, Politecnico di Torino (Italy) - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the Politecnico di Torino nor the names of its - * contributors may be used to endorse or promote products derived from - * this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR - * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT - * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, - * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY - * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * - */ - - -#ifndef __REMOTE_EXT_H__ -#define __REMOTE_EXT_H__ - - -#ifndef HAVE_REMOTE -#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h -#endif - -// Definition for Microsoft Visual Studio -#if _MSC_VER > 1000 -#pragma once -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/*! - \file remote-ext.h - - The goal of this file it to include most of the new definitions that should be - placed into the pcap.h file. - - It includes all new definitions (structures and functions like pcap_open(). - Some of the functions are not really a remote feature, but, right now, - they are placed here. -*/ - - - -// All this stuff is public -/*! \addtogroup remote_struct - \{ -*/ - - - - -/*! - \brief Defines the maximum buffer size in which address, port, interface names are kept. - - In case the adapter name or such is larger than this value, it is truncated. - This is not used by the user; however it must be aware that an hostname / interface - name longer than this value will be truncated. -*/ -#define PCAP_BUF_SIZE 1024 - - -/*! \addtogroup remote_source_ID - \{ -*/ - - -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a file, i.e. the user want to open a capture from a local file. -*/ -#define PCAP_SRC_FILE 2 -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a local interface, i.e. the user want to open a capture from - a local interface. This does not involve the RPCAP protocol. -*/ -#define PCAP_SRC_IFLOCAL 3 -/*! - \brief Internal representation of the type of source in use (file, - remote/local interface). - - This indicates a remote interface, i.e. the user want to open a capture from - an interface on a remote host. This does involve the RPCAP protocol. -*/ -#define PCAP_SRC_IFREMOTE 4 - -/*! - \} -*/ - - - -/*! \addtogroup remote_source_string - - The formats allowed by the pcap_open() are the following: - - file://path_and_filename [opens a local file] - - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol] - - rpcap://host/devicename [opens the selected device available on a remote host] - - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP] - - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged] - - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged] - - The formats allowed by the pcap_findalldevs_ex() are the following: - - file://folder/ [lists all the files in the given folder] - - rpcap:// [lists all local adapters] - - rpcap://host:port/ [lists the devices available on a remote host] - - Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since - IPv6 is fully supported, these are the allowed formats: - - - host (literal): e.g. host.foo.bar - - host (numeric IPv4): e.g. 10.11.12.13 - - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13] - - host (numeric IPv6): e.g. [1:2:3::4] - - port: can be either numeric (e.g. '80') or literal (e.g. 'http') - - Here you find some allowed examples: - - rpcap://host.foo.bar/devicename [everything literal, no port number] - - rpcap://host.foo.bar:1234/devicename [everything literal, with port number] - - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number] - - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number] - - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number] - - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number] - - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number] - - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number] - - \{ -*/ - - -/*! - \brief String that will be used to determine the type of source in use (file, - remote/local interface). - - This string will be prepended to the interface name in order to create a string - that contains all the information required to open the source. - - This string indicates that the user wants to open a capture from a local file. -*/ -#define PCAP_SRC_FILE_STRING "file://" -/*! - \brief String that will be used to determine the type of source in use (file, - remote/local interface). - - This string will be prepended to the interface name in order to create a string - that contains all the information required to open the source. - - This string indicates that the user wants to open a capture from a network interface. - This string does not necessarily involve the use of the RPCAP protocol. If the - interface required resides on the local host, the RPCAP protocol is not involved - and the local functions are used. -*/ -#define PCAP_SRC_IF_STRING "rpcap://" - -/*! - \} -*/ - - - - - -/*! - \addtogroup remote_open_flags - \{ -*/ - -/*! - \brief Defines if the adapter has to go in promiscuous mode. - - It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise. - Note that even if this parameter is false, the interface could well be in promiscuous - mode for some other reason (for example because another capture process with - promiscuous mode enabled is currently using that interface). - On on Linux systems with 2.2 or later kernels (that have the "any" device), this - flag does not work on the "any" device; if an argument of "any" is supplied, - the 'promisc' flag is ignored. -*/ -#define PCAP_OPENFLAG_PROMISCUOUS 1 - -/*! - \brief Defines if the data trasfer (in case of a remote - capture) has to be done with UDP protocol. - - If it is '1' if you want a UDP data connection, '0' if you want - a TCP data connection; control connection is always TCP-based. - A UDP connection is much lighter, but it does not guarantee that all - the captured packets arrive to the client workstation. Moreover, - it could be harmful in case of network congestion. - This flag is meaningless if the source is not a remote interface. - In that case, it is simply ignored. -*/ -#define PCAP_OPENFLAG_DATATX_UDP 2 - - -/*! - \brief Defines if the remote probe will capture its own generated traffic. - - In case the remote probe uses the same interface to capture traffic and to send - data back to the caller, the captured traffic includes the RPCAP traffic as well. - If this flag is turned on, the RPCAP traffic is excluded from the capture, so that - the trace returned back to the collector is does not include this traffic. -*/ -#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 - -/*! - \brief Defines if the local adapter will capture its own generated traffic. - - This flag tells the underlying capture driver to drop the packets that were sent by itself. - This is usefult when building applications like bridges, that should ignore the traffic - they just sent. -*/ -#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 - -/*! - \brief This flag configures the adapter for maximum responsiveness. - - In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before - copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, - i.e. better performance, which is good for applications like sniffers. If the user sets the - PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application - is ready to receive them. This is suggested for real time applications (like, for example, a bridge) - that need the best responsiveness.*/ -#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 - -/*! - \} -*/ - - -/*! - \addtogroup remote_samp_methods - \{ -*/ - -/*! - \brief No sampling has to be done on the current capture. - - In this case, no sampling algorithms are applied to the current capture. -*/ -#define PCAP_SAMP_NOSAMP 0 - -/*! - \brief It defines that only 1 out of N packets must be returned to the user. - - In this case, the 'value' field of the 'pcap_samp' structure indicates the - number of packets (minus 1) that must be discarded before one packet got accepted. - In other words, if 'value = 10', the first packet is returned to the caller, while - the following 9 are discarded. -*/ -#define PCAP_SAMP_1_EVERY_N 1 - -/*! - \brief It defines that we have to return 1 packet every N milliseconds. - - In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting - time' in milliseconds before one packet got accepted. - In other words, if 'value = 10', the first packet is returned to the caller; the next - returned one will be the first packet that arrives when 10ms have elapsed. -*/ -#define PCAP_SAMP_FIRST_AFTER_N_MS 2 - -/*! - \} -*/ - - -/*! - \addtogroup remote_auth_methods - \{ -*/ - -/*! - \brief It defines the NULL authentication. - - This value has to be used within the 'type' member of the pcap_rmtauth structure. - The 'NULL' authentication has to be equal to 'zero', so that old applications - can just put every field of struct pcap_rmtauth to zero, and it does work. -*/ -#define RPCAP_RMTAUTH_NULL 0 -/*! - \brief It defines the username/password authentication. - - With this type of authentication, the RPCAP protocol will use the username/ - password provided to authenticate the user on the remote machine. If the - authentication is successful (and the user has the right to open network devices) - the RPCAP connection will continue; otherwise it will be dropped. - - This value has to be used within the 'type' member of the pcap_rmtauth structure. -*/ -#define RPCAP_RMTAUTH_PWD 1 - -/*! - \} -*/ - - - - -/*! - - \brief This structure keeps the information needed to autheticate - the user on a remote machine. - - The remote machine can either grant or refuse the access according - to the information provided. - In case the NULL authentication is required, both 'username' and - 'password' can be NULL pointers. - - This structure is meaningless if the source is not a remote interface; - in that case, the functions which requires such a structure can accept - a NULL pointer as well. -*/ -struct pcap_rmtauth -{ - /*! - \brief Type of the authentication required. - - In order to provide maximum flexibility, we can support different types - of authentication based on the value of this 'type' variable. The currently - supported authentication methods are defined into the - \link remote_auth_methods Remote Authentication Methods Section\endlink. - - */ - int type; - /*! - \brief Zero-terminated string containing the username that has to be - used on the remote machine for authentication. - - This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication - and it can be NULL. - */ - char *username; - /*! - \brief Zero-terminated string containing the password that has to be - used on the remote machine for authentication. - - This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication - and it can be NULL. - */ - char *password; -}; - - -/*! - \brief This structure defines the information related to sampling. - - In case the sampling is requested, the capturing device should read - only a subset of the packets coming from the source. The returned packets depend - on the sampling parameters. - - \warning The sampling process is applied after the filtering process. - In other words, packets are filtered first, then the sampling process selects a - subset of the 'filtered' packets and it returns them to the caller. -*/ -struct pcap_samp -{ - /*! - Method used for sampling. Currently, the supported methods are listed in the - \link remote_samp_methods Sampling Methods Section\endlink. - */ - int method; - - /*! - This value depends on the sampling method defined. For its meaning, please check - at the \link remote_samp_methods Sampling Methods Section\endlink. - */ - int value; -}; - - - - -//! Maximum lenght of an host name (needed for the RPCAP active mode) -#define RPCAP_HOSTLIST_SIZE 1024 - - -/*! - \} -*/ // end of public documentation - - -// Exported functions - - - -/** \name New WinPcap functions - - This section lists the new functions that are able to help considerably in writing - WinPcap programs because of their easiness of use. - */ -//\{ -pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf); -int pcap_createsrcstr(char *source, int type, const char *host, const char *port, const char *name, char *errbuf); -int pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf); -int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf); -struct pcap_samp *pcap_setsampling(pcap_t *p); - -//\} -// End of new winpcap functions - - - -/** \name Remote Capture functions - */ -//\{ -SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf); -int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf); -int pcap_remoteact_close(const char *host, char *errbuf); -void pcap_remoteact_cleanup(); -//\} -// End of remote capture functions - -#ifdef __cplusplus -} -#endif - - -#endif - +/* + * Copyright (c) 2002 - 2003 + * NetGroup, Politecnico di Torino (Italy) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the Politecnico di Torino nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + + +#ifndef __REMOTE_EXT_H__ +#define __REMOTE_EXT_H__ + + +#ifndef HAVE_REMOTE +#error Please do not include this file directly. Just define HAVE_REMOTE and then include pcap.h +#endif + +// Definition for Microsoft Visual Studio +#if _MSC_VER > 1000 +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/*! + \file remote-ext.h + + The goal of this file it to include most of the new definitions that should be + placed into the pcap.h file. + + It includes all new definitions (structures and functions like pcap_open(). + Some of the functions are not really a remote feature, but, right now, + they are placed here. +*/ + + + +// All this stuff is public +/*! \addtogroup remote_struct + \{ +*/ + + + + +/*! + \brief Defines the maximum buffer size in which address, port, interface names are kept. + + In case the adapter name or such is larger than this value, it is truncated. + This is not used by the user; however it must be aware that an hostname / interface + name longer than this value will be truncated. +*/ +#define PCAP_BUF_SIZE 1024 + + +/*! \addtogroup remote_source_ID + \{ +*/ + + +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a file, i.e. the user want to open a capture from a local file. +*/ +#define PCAP_SRC_FILE 2 +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a local interface, i.e. the user want to open a capture from + a local interface. This does not involve the RPCAP protocol. +*/ +#define PCAP_SRC_IFLOCAL 3 +/*! + \brief Internal representation of the type of source in use (file, + remote/local interface). + + This indicates a remote interface, i.e. the user want to open a capture from + an interface on a remote host. This does involve the RPCAP protocol. +*/ +#define PCAP_SRC_IFREMOTE 4 + +/*! + \} +*/ + + + +/*! \addtogroup remote_source_string + + The formats allowed by the pcap_open() are the following: + - file://path_and_filename [opens a local file] + - rpcap://devicename [opens the selected device devices available on the local host, without using the RPCAP protocol] + - rpcap://host/devicename [opens the selected device available on a remote host] + - rpcap://host:port/devicename [opens the selected device available on a remote host, using a non-standard port for RPCAP] + - adaptername [to open a local adapter; kept for compability, but it is strongly discouraged] + - (NULL) [to open the first local adapter; kept for compability, but it is strongly discouraged] + + The formats allowed by the pcap_findalldevs_ex() are the following: + - file://folder/ [lists all the files in the given folder] + - rpcap:// [lists all local adapters] + - rpcap://host:port/ [lists the devices available on a remote host] + + Referring to the 'host' and 'port' paramters, they can be either numeric or literal. Since + IPv6 is fully supported, these are the allowed formats: + + - host (literal): e.g. host.foo.bar + - host (numeric IPv4): e.g. 10.11.12.13 + - host (numeric IPv4, IPv6 style): e.g. [10.11.12.13] + - host (numeric IPv6): e.g. [1:2:3::4] + - port: can be either numeric (e.g. '80') or literal (e.g. 'http') + + Here you find some allowed examples: + - rpcap://host.foo.bar/devicename [everything literal, no port number] + - rpcap://host.foo.bar:1234/devicename [everything literal, with port number] + - rpcap://10.11.12.13/devicename [IPv4 numeric, no port number] + - rpcap://10.11.12.13:1234/devicename [IPv4 numeric, with port number] + - rpcap://[10.11.12.13]:1234/devicename [IPv4 numeric with IPv6 format, with port number] + - rpcap://[1:2:3::4]/devicename [IPv6 numeric, no port number] + - rpcap://[1:2:3::4]:1234/devicename [IPv6 numeric, with port number] + - rpcap://[1:2:3::4]:http/devicename [IPv6 numeric, with literal port number] + + \{ +*/ + + +/*! + \brief String that will be used to determine the type of source in use (file, + remote/local interface). + + This string will be prepended to the interface name in order to create a string + that contains all the information required to open the source. + + This string indicates that the user wants to open a capture from a local file. +*/ +#define PCAP_SRC_FILE_STRING "file://" +/*! + \brief String that will be used to determine the type of source in use (file, + remote/local interface). + + This string will be prepended to the interface name in order to create a string + that contains all the information required to open the source. + + This string indicates that the user wants to open a capture from a network interface. + This string does not necessarily involve the use of the RPCAP protocol. If the + interface required resides on the local host, the RPCAP protocol is not involved + and the local functions are used. +*/ +#define PCAP_SRC_IF_STRING "rpcap://" + +/*! + \} +*/ + + + + + +/*! + \addtogroup remote_open_flags + \{ +*/ + +/*! + \brief Defines if the adapter has to go in promiscuous mode. + + It is '1' if you have to open the adapter in promiscuous mode, '0' otherwise. + Note that even if this parameter is false, the interface could well be in promiscuous + mode for some other reason (for example because another capture process with + promiscuous mode enabled is currently using that interface). + On on Linux systems with 2.2 or later kernels (that have the "any" device), this + flag does not work on the "any" device; if an argument of "any" is supplied, + the 'promisc' flag is ignored. +*/ +#define PCAP_OPENFLAG_PROMISCUOUS 1 + +/*! + \brief Defines if the data trasfer (in case of a remote + capture) has to be done with UDP protocol. + + If it is '1' if you want a UDP data connection, '0' if you want + a TCP data connection; control connection is always TCP-based. + A UDP connection is much lighter, but it does not guarantee that all + the captured packets arrive to the client workstation. Moreover, + it could be harmful in case of network congestion. + This flag is meaningless if the source is not a remote interface. + In that case, it is simply ignored. +*/ +#define PCAP_OPENFLAG_DATATX_UDP 2 + + +/*! + \brief Defines if the remote probe will capture its own generated traffic. + + In case the remote probe uses the same interface to capture traffic and to send + data back to the caller, the captured traffic includes the RPCAP traffic as well. + If this flag is turned on, the RPCAP traffic is excluded from the capture, so that + the trace returned back to the collector is does not include this traffic. +*/ +#define PCAP_OPENFLAG_NOCAPTURE_RPCAP 4 + +/*! + \brief Defines if the local adapter will capture its own generated traffic. + + This flag tells the underlying capture driver to drop the packets that were sent by itself. + This is usefult when building applications like bridges, that should ignore the traffic + they just sent. +*/ +#define PCAP_OPENFLAG_NOCAPTURE_LOCAL 8 + +/*! + \brief This flag configures the adapter for maximum responsiveness. + + In presence of a large value for nbytes, WinPcap waits for the arrival of several packets before + copying the data to the user. This guarantees a low number of system calls, i.e. lower processor usage, + i.e. better performance, which is good for applications like sniffers. If the user sets the + PCAP_OPENFLAG_MAX_RESPONSIVENESS flag, the capture driver will copy the packets as soon as the application + is ready to receive them. This is suggested for real time applications (like, for example, a bridge) + that need the best responsiveness.*/ +#define PCAP_OPENFLAG_MAX_RESPONSIVENESS 16 + +/*! + \} +*/ + + +/*! + \addtogroup remote_samp_methods + \{ +*/ + +/*! + \brief No sampling has to be done on the current capture. + + In this case, no sampling algorithms are applied to the current capture. +*/ +#define PCAP_SAMP_NOSAMP 0 + +/*! + \brief It defines that only 1 out of N packets must be returned to the user. + + In this case, the 'value' field of the 'pcap_samp' structure indicates the + number of packets (minus 1) that must be discarded before one packet got accepted. + In other words, if 'value = 10', the first packet is returned to the caller, while + the following 9 are discarded. +*/ +#define PCAP_SAMP_1_EVERY_N 1 + +/*! + \brief It defines that we have to return 1 packet every N milliseconds. + + In this case, the 'value' field of the 'pcap_samp' structure indicates the 'waiting + time' in milliseconds before one packet got accepted. + In other words, if 'value = 10', the first packet is returned to the caller; the next + returned one will be the first packet that arrives when 10ms have elapsed. +*/ +#define PCAP_SAMP_FIRST_AFTER_N_MS 2 + +/*! + \} +*/ + + +/*! + \addtogroup remote_auth_methods + \{ +*/ + +/*! + \brief It defines the NULL authentication. + + This value has to be used within the 'type' member of the pcap_rmtauth structure. + The 'NULL' authentication has to be equal to 'zero', so that old applications + can just put every field of struct pcap_rmtauth to zero, and it does work. +*/ +#define RPCAP_RMTAUTH_NULL 0 +/*! + \brief It defines the username/password authentication. + + With this type of authentication, the RPCAP protocol will use the username/ + password provided to authenticate the user on the remote machine. If the + authentication is successful (and the user has the right to open network devices) + the RPCAP connection will continue; otherwise it will be dropped. + + This value has to be used within the 'type' member of the pcap_rmtauth structure. +*/ +#define RPCAP_RMTAUTH_PWD 1 + +/*! + \} +*/ + + + + +/*! + + \brief This structure keeps the information needed to autheticate + the user on a remote machine. + + The remote machine can either grant or refuse the access according + to the information provided. + In case the NULL authentication is required, both 'username' and + 'password' can be NULL pointers. + + This structure is meaningless if the source is not a remote interface; + in that case, the functions which requires such a structure can accept + a NULL pointer as well. +*/ +struct pcap_rmtauth +{ + /*! + \brief Type of the authentication required. + + In order to provide maximum flexibility, we can support different types + of authentication based on the value of this 'type' variable. The currently + supported authentication methods are defined into the + \link remote_auth_methods Remote Authentication Methods Section\endlink. + + */ + int type; + /*! + \brief Zero-terminated string containing the username that has to be + used on the remote machine for authentication. + + This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication + and it can be NULL. + */ + char *username; + /*! + \brief Zero-terminated string containing the password that has to be + used on the remote machine for authentication. + + This field is meaningless in case of the RPCAP_RMTAUTH_NULL authentication + and it can be NULL. + */ + char *password; +}; + + +/*! + \brief This structure defines the information related to sampling. + + In case the sampling is requested, the capturing device should read + only a subset of the packets coming from the source. The returned packets depend + on the sampling parameters. + + \warning The sampling process is applied after the filtering process. + In other words, packets are filtered first, then the sampling process selects a + subset of the 'filtered' packets and it returns them to the caller. +*/ +struct pcap_samp +{ + /*! + Method used for sampling. Currently, the supported methods are listed in the + \link remote_samp_methods Sampling Methods Section\endlink. + */ + int method; + + /*! + This value depends on the sampling method defined. For its meaning, please check + at the \link remote_samp_methods Sampling Methods Section\endlink. + */ + int value; +}; + + + + +//! Maximum lenght of an host name (needed for the RPCAP active mode) +#define RPCAP_HOSTLIST_SIZE 1024 + + +/*! + \} +*/ // end of public documentation + + +// Exported functions + + + +/** \name New WinPcap functions + + This section lists the new functions that are able to help considerably in writing + WinPcap programs because of their easiness of use. + */ +//\{ +pcap_t *pcap_open(const char *source, int snaplen, int flags, int read_timeout, struct pcap_rmtauth *auth, char *errbuf); +int pcap_createsrcstr(char *source, int type, const char *host, const char *port, const char *name, char *errbuf); +int pcap_parsesrcstr(const char *source, int *type, char *host, char *port, char *name, char *errbuf); +int pcap_findalldevs_ex(char *source, struct pcap_rmtauth *auth, pcap_if_t **alldevs, char *errbuf); +struct pcap_samp *pcap_setsampling(pcap_t *p); + +//\} +// End of new winpcap functions + + + +/** \name Remote Capture functions + */ +//\{ +SOCKET pcap_remoteact_accept(const char *address, const char *port, const char *hostlist, char *connectinghost, struct pcap_rmtauth *auth, char *errbuf); +int pcap_remoteact_list(char *hostlist, char sep, int size, char *errbuf); +int pcap_remoteact_close(const char *host, char *errbuf); +void pcap_remoteact_cleanup(); +//\} +// End of remote capture functions + +#ifdef __cplusplus +} +#endif + + +#endif + diff --git a/3rdparty/winpcap/lib/Packet.lib b/3rdparty/winpcap/lib/Packet.lib new file mode 100644 index 0000000000000000000000000000000000000000..81618bc8ca221dd99e52b0289ae4692a01f63d0b GIT binary patch literal 8450 zcmcIp&2JM|5TAVT(Lh5&zQ0XCKra-6O@f4?d{QEu5ZR{XW;XVwEVaE`+o450^v0>; z#EE+)#EAo!-Z*ih5|!wsQV*5*6LR22XZG#BuYFz|oUAnQ?##UTy^onU^IlF}v#N!A z^Icyj)aTO7>}+x_nY?^a<%ge_X6J&}yIlaV4A5N#=y?jz`xanip3%@Q0MWo5Mk6nf zk2Ly$(bzTsQQtJ9;Vl57{!T`tlcDC1hSB7G!G_lL5|2_8W zeLlaozIiK?%df0vmosadxm%gMXBB?1>yXcH+)k&Xa`=@gFmdk2?TwrHmBrj5 zX=kfyRUdw9S8I-2K{HO-%Quj*7T?%)qqfZFnk!Z3fn9B+uSr>}Tb^B6ELvXOuBzQp z1WY$;SBmUSRh9X=X04Gb3YhLQ%ui8etGM{N??1GJx zXELjan96d=t=YzjQzcA0Yu9i5bloXMW?2z1U0m6~?uJ#iwfTz(S(}XgeTf`K}AU-_jawa z?HWdg{S77D_PSHaxy!EiP#qn0LP)r68pG-XyP}N_XHAj>w(G9PLSM5i@p&&+cFG>P zou+Eng+S3wJ7q^-V(c<$ha#rGRwLeOrDzvb+lqkOPP?wRghE*w+w1GsVd(W3wdA>Z23A5S_@U#cuZ7;z52*BRG<^~oGiSrXFB&_VNhyMKiK$qTqDfO% zVoHIo z{sJUkwc~FuW<+|r#GuYYU(XR_kvV#(o9AAiTz3jpx8`ow6X!EuCDLmfH+`x8hrp;M zS-`~azhRYtiI{i-1-npi%O3Xi-0NT9BleHsQ44ygbL|igc>%!h?!A!X4~|-Ngq$Sl zAOpBgN^ppewFH02I=~$NCag{T+RuZpG^Ne?$xJG|n;<`F_x=f%P82zLu4S`-I zKe-%=$WML`KZ0NK6SBMS>)*_(V%3H--QXTUxJZ+;Hai=MuD=l=Zq{O=D-}$T@46IS z@*_o8GUSuP{uO=%zxz77&CDp)!woNB_UwnL%i)a~-HcIarrT)GI^~bMx=Ql@mJijb$1uZTrjw)!P z*lh(b8E&Ln6ygCLs{|f}{CLp<_qsWT0x45xRYXJ;;<-I9rxnDwN^ep@3~!MR3T;Y46L(WG+W!N((TxBA literal 0 HcmV?d00001 diff --git a/3rdparty/winpcap/lib/wpcap.lib b/3rdparty/winpcap/lib/wpcap.lib new file mode 100644 index 0000000000000000000000000000000000000000..f832e0445b5c7dafe5a0f887262064265ba2b293 GIT binary patch literal 19320 zcmdU0O>9(05-uRW4k3h)gbS|j4}Uz#t>t&Y%Y)S%rl;4JTp5pCTuoh zr6{Lp73IKQa^QrbD7U>tdx#=VoK`4`_7Fwch+_^p| zS6BDfKh<5`)$NUA`Fde~ylZ#2`x_V>8Oe?2azi67zdwrRhWbZ!@NyRb{1af)Ai(As zfGr;YjQ*f$?=%3>0gMxkW0+_MhKYuM)O4~3fN1X*n)>bm5FNa!=@dc`jeVwR->(2f zr@qm2dK`f0IF?CtuvgRRPmzx_yk67JDF8*E;}+y2(SaM92H(eeAPs$`X>=9#JJEGb+ptfFdaw>e+iq*x`Yiy_8LSsk zPhHb?lqKrHekD4vPE+rP*gr_)Sa+hqpEMo(8T%RO(3GZ$?*SB*@r$$_@rd?+t!Zo@ zjvvxV99NR-y@~cP&F-(99u}FD=x9fbs_AYW3=3tr%W|L_8r?37d|TiVLY~ zEvy9P(zP&>67jfHb#AU)syKqo60(JIwPA#!ut>cUHY?T2Y`I#v8X-CyA=yYsIvgR1 z{ec~7x`z7J_EoXesO6i5`6%5+g-kun7o&6?6lsXL*a+*hi*s{fJrauXgmly&fhf^s z3E4_`-3*NminK;E-)tB(9ge34;dLpXqEaSo&XvkdS!WX$Qnj#NubO6=h)8cV>r%o- zg$#}#%0zWB5s_Y~F4Rh8)(8_zN(7avo*HT-qioC+@^ketEL4l8NE;P0#e6f5+G>={ zMukkHlCL%9t7a5zRLGPXLF4Uwtri*$kqjZXkpEM)9$X9SjZ(D|bw-RQrAw8hw96CH zIB?un6^x}-su3UwQbeQ|7jfC3NgauZcw9Wn7pTvr=@psX2-v zPKxSZ5_y=PnoE_N$P;l>b2RJuN@JnKx{58)m9q&VA1x?B*qjgRVZ~&L@q{!@+G|$O zMuiOZZ>iF(7OFMdSjiHy%7zr}qAKD-YOYi%Vt=CNK_NilssaMOp#PS~G0a z3#jr@2fHjGTg%rQuBgKil48`YO^Y*yd_7#KHp6_O8RQFvux8Xd$xh8vE;W)lG&5CR zE{YZ+xiZSMFke|T8koY@IHd|2`Ept5435N=dVT?dRHmqxp2NoQb4*B>?S@fVJ*ax; z#(FH|ab7p_3pF&AS9m=V93eT2qkmOwwM1MS~zh^OYj+6w(qzK0R@x9xxG+j`OQ@O)YAwXd4wWGVhD0>`FwwU%QhSy`Bsht3yBaP(% ze(43MpxoU(=zYOFA0d4{0I&g1$&>iKwHu(>kDdVhcHwsomUZU@z?X;clzbTAW2BWw z0NzC^?gw}e%b&*d8(7cxv5c>V09Ik$uOp3b!!mjRZsYgctytC>fI7y0LnY-36{Zf7=>XNfjzJf#$Z1jgA3T1 zPr!??4yIuo*25%B!C6=dn_&}df!E4q}7h2Vp-SXex#;FLwXebxMB`=5C9I^9PV8s(AynihM(q47Hlj}F34Yx5 z5?lA>X`GVyBqM>5uRR)q`2Y)!$;$8I=7z=ffJr=%AQ6tTb`!4lnRETAExQINoiFRt&`kb6)zb#5OTk(WXF`3LzuyeV>Hxo-xE;5&wx*TA8>_O0# zmkw~5!tPVa^mwZsG2>X)OyT6P_FY#r`5rUt)woR?W2mOSw@rK-bJ`>O{@4yI%WYCPuf1kaI9X$ zNp*3w@H`qDr?aNs+&Oo2#&Hz0Why()^2D`)wqGhaX1N5xvM@q!8M4BUSkpzx4EynIBam!|lli=G+Mk}qYj1rahg&EpnNTMnkZ z6X;YS&b;BMmJ!Md!^x2hGOWz7`V;-AEPO=~#ptsfeItO|rMA!b4@pA?b9;q` zELR%xFI6w99i(bVQ6qBcEkNU%@)Gd`Z&9+L3Wy4UP

ii zt(#u7(X5F2?uWKuz$0Zt8OJO)7!6qr;{`-mW-ub#&;iOoI?D5ivfQBP z?YRYMzrS+nDC-bqg+bw+zXjsZL+Gm53p&N2Dhi z$sPL*kF_J!=aoO!_oo5a`Wl^G6SWCz8X~fDnjyWbFWEo#2>_LrfpY(yof(M2GuM&^&tn45RTGq64I1es%5IBD_q*{iK;u2FYa$7I6mN$G=TOG^=4LlDoZVf8Mpw z8`>v5@1R6iH=VS|vlhSLVkx(ih2l^~-N<=b^b_Mk`m)-zIUnA+Dq&#M2jgMyAnZo(4AD0*qp9b5G`pq6hCIM%0W!8nw$ z=X{p)l{75!sW3?UZSYVll0YzKHbPhY;~;29sU1>;c0zRY>-XSai;ZdbYZCG=to zq}NeHHZoF*W4Z&(oJadNNlfy2cY@QRZM55d-N8}r^iGgGy0KXzv2)UbaVVp147WIa zljmv+W4U(#jA6SoBbv{mY-KcYyI`T(Ull#QxQ(&o#f1gqP{wxoR*xQmS-4#qq68LyTjtHxo|KwtJB;6=J(Y@(tt?ceEx_3CTXEKlvOJ{NFy#1JrL^z$>YNrb&<@)H8*An#mck^5f7vwn&$@= zl0z9sY}m8Q7*9o{hYgHkLs{`!j2wCD52oO$CleN~{Wa0!-I!oJ@fxE8EMH$9a z4-3eltbOUxmcuD{<_QVov_E zH5QOV8As7)wU0Y^#`|rDZ3!!<#~Pe)(9AO+ZjXh{+AKB$jT}9S zHBXm1z-lq?X#aRxVyQ<_9pHHO31=jZeQssJ+SYsD$#znrB{r%InpH16?K&%w>>DwL zSc1lTMr+DJqo>Fgh(lRh<ClhvL%JxCqKEC=kR{Bh7JE3l N*?W_a?2Af)@;}RMSJ?mn literal 0 HcmV?d00001 diff --git a/3rdparty/winpcap/lib/x64/Packet.lib b/3rdparty/winpcap/lib/x64/Packet.lib new file mode 100644 index 0000000000000000000000000000000000000000..30c15405037e32d45233593bb67ac27f66c5f3de GIT binary patch literal 8290 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 #include -#include "DEV9.h" +#include "..\DEV9.h" #define GetKeyV(name, var, s, t) \ size = s; type = t; \ diff --git a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.vcxproj b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.vcxproj index a2103b9056..e9a5cb30c5 100644 --- a/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.vcxproj +++ b/plugins/dev9ghzdrk/Win32/DEV9ghzdrk.vcxproj @@ -60,7 +60,7 @@ MultiThreadedDebug - $(ProjectDir)\..;%(AdditionalIncludeDirectories) + $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) @@ -74,14 +74,14 @@ MachineX86 ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) - $(ProjectDir)../pcap/wpcap_32;%(AdditionalLibraryDirectories) + $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) - $(ProjectDir)\..;%(AdditionalIncludeDirectories) + $(SvnRootDir)\common\include;$(SvnRootDir)\3rdparty\winpcap\include;%(AdditionalIncludeDirectories) NDEBUG;%(PreprocessorDefinitions) @@ -93,7 +93,7 @@ MachineX86 - $(ProjectDir)../pcap/wpcap_32;%(AdditionalLibraryDirectories) + $(SolutionDir)3rdparty\winpcap\lib;%(AdditionalLibraryDirectories) ws2_32.lib;iphlpapi.lib;wpcap.lib;packet.lib;%(AdditionalDependencies) diff --git a/plugins/dev9ghzdrk/Win32/Win32.cpp b/plugins/dev9ghzdrk/Win32/Win32.cpp index 31224e87b9..3d65280e4e 100644 --- a/plugins/dev9ghzdrk/Win32/Win32.cpp +++ b/plugins/dev9ghzdrk/Win32/Win32.cpp @@ -5,7 +5,7 @@ #include "Config.h" #include "resource.h" -#include "DEV9.h" +#include "..\DEV9.h" #include "pcap.h" #include "pcap_io.h" #include "net.h" diff --git a/plugins/dev9ghzdrk/Win32/net.cpp b/plugins/dev9ghzdrk/Win32/net.cpp index c7acdad27b..57edb104bf 100644 --- a/plugins/dev9ghzdrk/Win32/net.cpp +++ b/plugins/dev9ghzdrk/Win32/net.cpp @@ -1,5 +1,5 @@ #include "net.h" -#include "Dev9.h" +#include "..\Dev9.h" //mtfifo rx_fifo; //mtfifo tx_fifo; diff --git a/plugins/dev9ghzdrk/Win32/smap.h b/plugins/dev9ghzdrk/Win32/smap.h index 42ad1842a1..4247bc19f7 100644 --- a/plugins/dev9ghzdrk/Win32/smap.h +++ b/plugins/dev9ghzdrk/Win32/smap.h @@ -1,5 +1,5 @@ #pragma once -#include "dev9.h" +#include "..\dev9.h" u8 CALLBACK smap_read8(u32 addr); u16 CALLBACK smap_read16(u32 addr); diff --git a/plugins/dev9ghzdrk/Win32/tap-win32.cpp b/plugins/dev9ghzdrk/Win32/tap-win32.cpp index 9c4ceb4353..1223ec1dee 100644 --- a/plugins/dev9ghzdrk/Win32/tap-win32.cpp +++ b/plugins/dev9ghzdrk/Win32/tap-win32.cpp @@ -29,7 +29,7 @@ #include #include #include "tap.h" -#include "dev9.h" +#include "..\dev9.h" #include //============= diff --git a/plugins/dev9ghzdrk/pcap/wpcap_32/Packet.dll b/plugins/dev9ghzdrk/pcap/wpcap_32/Packet.dll deleted file mode 100644 index 26a4a65d779e861a65e1221cfbb268e10d7a147a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88696 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 diff --git a/plugins/dev9ghzdrk/pcap/wpcap_32/Packet.lib b/plugins/dev9ghzdrk/pcap/wpcap_32/Packet.lib deleted file mode 100644 index bc9dba853308409bd98da2d296a919d44cb00585..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8674 zcmcIp&2JM|5FaNYfj~nD`Tleus_2E1V3QzKRlZBW36X8uqgm`tS=IJ#?F}tldPS%Q z4*UzfQHcYWa-tH~9xA00w^kLm{sV{u>AZdWKKFTXaAIk)yEF6V_daIc%zK&s!m1VT ze%bwbQvJ=&F3hFU3+bzKD*saWIXk})zTWNzfE9qA8o-$c0DaE@Mkgr^?*R}RT%a`i z82LzJuPKeM0}$$OqcpM%K&bx>rP24OkJRr|n%n^(G?1k{5hrRP5?qf z?kb=i4>4 zJBonn=Im;TzNxA*U)QWRQbhsPT`HH|qUGBr%esu}Y*ZcJq%HHQe7$BH?aF+rnYD{H zPM*oECZZ}UWw&k{Cr*`6?VRmj`(fQFM`l?OP+eTv(C(I1v9OhqES0LfgLU(a_f{OMKpo)!m9m z+)h)qeIZbEGfu_Pml(TDw3&$NZ`28Ity;26s%=HUZD(B9yMtTivVGUO=eXM5ga}au z+Li=}Q`;_D-ZiUQDr*CYNDrPbukw6(9usD*2jIaOfMoI_J z%v5dt0Lvo)Z}9mZ`93~(Fw12J0IH}nIRWq-^*W~k-VLD)ZH(jdNfO}26u=BVpQ6p{ z`2Gm_KI*;2HV=`Wq1`>S^$Kla@`i5cfm6^6=b;nEU%lXFihGrtc zMtO82;jJTKgIWzYD&C5xTFQwgAcJ@7H2`gDNVmqk6WP>7N~VTHGUgc;!)007!L=&UK&D(2l;%Pl!+?}}DoAFR@pG^u;3oI+J! zl_j#r%KV7m>cZH~N%LW?t>np3i7_!sUahr=NzI0Y#r<5iB73{SZ?x6xo-a32{9hJm zQJ{(pRgdt0HO~mXR*|631<@f}COlKEBu9#-PejJd*|6}7#*SuEiXdHLDpsUu($tlh z(qufc6uyYBMkg9CIM7@ymCH1Te(0n*KbsEEoVU9(iFWws-v{geB>=M#z&`+qlLsCR|wox+#DB|XAlgyc({GR*lW$R~7*MY{lJd%KWDrwoe^ zeBV#@Z92u8TX%Q-yLTBU7#zWAXPgw#K?ZQ0wBQgv)=2zEtYbOGzX{ehejVn)UYgS8 z;$SY#?p{b7v;}eS8+M9z77`{uDM>>huaci!W+LJzzp#(+N&JM^J@oZ&W>v8|#hGq! zPa<5T$yuA9kL(_QAwb-${T$8$dq}gEW<27Ef3T16DMeR`iHP2x>_gH!wApQDM)8c$ z@Pg^Uewe--PH2+c{E^ViB*>mT9gOaHgBo6}o4lDcw}$CiGa?Du1m=P8oUhbet>C4u zn(>HZwh26`l4}Jmoid}HL$r2*rq_oOq}~}uE-H>IXrh>J1uw-mQq61dA_A)f9)XzI~ZfJk229A4^*IXB>CU~nH7 zWQev! diff --git a/plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.dll b/plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.dll deleted file mode 100644 index 1dd1f69709e730b8fc56c5288e9d6b55e6735163..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244336 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

qdRT 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%0A!zhP{X5B*&SK!H)ACjgC3kB|YhQ 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 diff --git a/plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.lib b/plugins/dev9ghzdrk/pcap/wpcap_32/wpcap.lib deleted file mode 100644 index 3c08265db78e8cbb17ae83e70a6fffcd459b8cc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17658 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 o{khiWdHyG