|
Whisper Library
|
Used to receive packets and send TCP packets under win32. More...
Classes | |
| struct | PcapPacket |
| Packet structure as returned by pcap. More... | |
Public Types | |
| enum | RC { NORMAL_EXECUTION = 0, EMPTY_PACKET_DATA = 1, CLOSE_ON_UNOPENED_HANDLE = 2, OPEN_ON_OPENED_HANDLE = 3, NO_ADAPTERS_FOUND = 255, UNSPECIFIED_ERROR_OCCURED = -1, ADAPTER_NOT_FOUND = -2, ACCESS_ON_UNOPENED_HANDLE = -3, ERROR_RETRIEVING_ADAPTERS = -4, ERROR_OPENING_HANDLE = -5, ERROR_COMPILING_FILTER = -6, ERROR_APPLYING_FILTER = -7, OUT_OF_MEMORY = -254 } |
| Possible return codes issued by PcapWrapper Methods. | |
Public Member Functions | |
| int | adapterCount () |
| retrieve the amount of available network adapters with a valid network address | |
| std::vector< std::string > | adapterNames () |
| retrieve all adapter/device names (e.g. /dev/eth0) from network adapters with a valid network address | |
| std::string | adapterName (int adapter_id) |
| Get the name from a specific network adapter. | |
| std::vector< std::string > | adapterAddresses (int adapter_id) |
| Get all network addresses from a specific network adapter. | |
| std::string | adapterDescription (int adapter_id) |
| Get the descriptional text from a specific network adapter (under windows e.g. the name of the hardware network device, under unix often "<null>") | |
| int | adapterId (std::string adapter_value, int value_type) |
| Get the id from an adapter with a specific value \ Value Types: ADAPTER_NAME, ADAPTER_DESCRIPTION, ADAPTER_ADDRESS. | |
| std::vector< int > | lastReturnCodes () |
| Returns a pointer to the global return code buffer. | |
| void | clearReturnCodes () |
| empties the PcapWrapper's global return code buffer | |
| int | retrieveAdapters () |
| Retrieves available network devices from the (local) machine. More... | |
| int | openAdapter (std::string adapter_name, int max_packet_size, bool promiscuous_mode, int timeout) |
| Opens a live capture handle to the given device. More... | |
| int | openAdapter (int adapter_id, int max_packet_size, bool promiscuous_mode, int timeout) |
| Opens a live capture handle to the given device. More... | |
| int | closeAdapter (std::string adapter_name) |
| Closes an openend handle on the adapter with the given name/id. | |
| int | closeAdapter (int adapter_id) |
| Closes an openend handle on the adapter with the given name/id. | |
| int | freeAdapters () |
| Frees unopened adapters and closes previously opened handles. More... | |
| int | applyFilter (int adapter_id, std::string filter) |
| Applies a given filter with pcap syntax to the selected adapter. | |
| int | applyFilter (std::string adapter_name, std::string filter) |
| Applies a given filter with pcap syntax to the selected adapter. | |
| int | removeFilter (int adapter_id) |
| Removes any previously applied filter from the adapter handle. | |
| int | removeFilter (std::string adapter_name) |
| Removes any previously applied filter from the adapter handle. | |
| PcapPacket | retrievePacket (int adapter_id) |
| Retrieves the next packet from the capture device. More... | |
| PcapPacket | retrievePacket (std::string adapter_name) |
| Retrieves the next packet from the capture device. More... | |
| std::vector< bool > | retrievePacketAsVector (int adapter_id) |
| Calls retrievePacket(adapter_id) and converts the retrieved packet payload in a std::vector<bool> More... | |
| std::vector< bool > | retrievePacketAsVector (std::string adapter_name) |
| Calls retrievePacket(adapter_id) and converts the retrieved packet payload in a std::vector<bool> More... | |
| int | sendPacket (int adapter_id, unsigned char *packet_buffer, int buffer_size) |
| Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages) More... | |
| int | sendPacket (std::string adapter_name, unsigned char *packet_buffer, int buffer_size) |
| Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages) More... | |
| int | sendPacket (int adapter_id, std::vector< bool > packet_data) |
| Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages) More... | |
| int | sendPacket (std::string adapter_name, std::vector< bool > packet_data) |
| Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages) More... | |
Static Public Attributes | |
| static const int | ADAPTER_NAME = 0 |
| value type ID for the adapter name (used as parameter in adapterId(...)) | |
| static const int | ADAPTER_DESCRIPTION = 1 |
| value type ID for the adapter description (used as parameter in adapterId(...)) | |
| static const int | ADAPTER_ADDRESS = 2 |
| value type ID for the adapter address (used as parameter in adapterId(...)) | |
| static const int | DEFAULT_MAXPACKETSIZE = 65535 |
| default maximal packet size to capture entire packets (used as parameter in openAdapter(...)) | |
| static const int | RETURN_CODE_BUFFER_SIZE = 20 |
| defines the size of the last return codes-buffer (retrieved via lastReturnCodes()). | |
| static const int | TIMEOUT_WAIT_FOREVER = 0 |
| timeout value for openAdapter which can cause retrievePacket(...) and retrievePacketAsVector(...) to wait forever til packets arrive | |
Private Member Functions | |
| bool | checkForAdapterId (int adapter_id) |
| Checks if a given adapter_id exists. More... | |
| char * | ipToString (sockaddr *sockaddr, char *buffer, size_t buffer_size) |
| Converts a given socket address to a human readable string. | |
| int | adapterId (std::string value, int key, bool increment_key) |
| returns the adapter id from the adapter with the given key. | |
Private Attributes | |
|
std::vector< std::vector < std::string > > | m_adapter_data |
| Stores for each adapter its name, the description and each address. | |
| std::vector< pcap_t * > | m_adapter_handles |
| Contains all open Adapter handles for each adapter, NULL otherwise. | |
| std::vector< bpf_u_int32 > | m_adapter_netmasks |
| Contains the netmask for each adapter. | |
| pcap_if_t * | m_adapter_raw_data |
| Raw adapter data as returned from pcap_findalldevs(...) | |
| boost::circular_buffer< int > | m_last_return_codes |
| Stores the last RETURN_CODE_BUFFER_SIZE method return codes. | |
Used to receive packets and send TCP packets under win32.
All Functions needed to apply filters, select adapters and send packets are provided.
|
inlineprivate |
Checks if a given adapter_id exists.
checkForAdapterId
| int whisper_library::PcapWrapper::freeAdapters | ( | ) |
Frees unopened adapters and closes previously opened handles.
| int whisper_library::PcapWrapper::openAdapter | ( | std::string | adapter_name, |
| int | max_packet_size, | ||
| bool | promiscuous_mode, | ||
| int | timeout | ||
| ) |
Opens a live capture handle to the given device.
| adapter_name | - Name of the adapter (pcap_if_t->name) to open |
| max_packet_size | - Maximum number of bytes that should be captured from each packet. 65535 is enough for the whole packet in most networks. |
| promiscuous_mode | - Open in promiscuous mode? false: No, true: Yes. |
| timeout | - Specifies a timeout in ms. A value of 0 can cause the process to wait forever. promiscuous mode: capture all packets non-promiscuous: capture only packets directed to the application |
| int whisper_library::PcapWrapper::openAdapter | ( | int | adapter_id, |
| int | max_packet_size, | ||
| bool | promiscuous_mode, | ||
| int | timeout | ||
| ) |
Opens a live capture handle to the given device.
| adapter_id | - internal id of the adapter to open |
| max_packet_size | - Maximum number of bytes that should be captured from each packet. 65535 is enough for the whole packet in most networks. |
| promiscuous_mode | - Open in promiscuous mode? false: No, true: Yes. |
| timeout | - Specifies a timeout in ms. A value of 0 can cause the process to wait forever. promiscuous mode: capture all packets non-promiscuous: capture only packets directed to the application |
| int whisper_library::PcapWrapper::retrieveAdapters | ( | ) |
Retrieves available network devices from the (local) machine.
| PcapWrapper::PcapPacket whisper_library::PcapWrapper::retrievePacket | ( | int | adapter_id | ) |
Retrieves the next packet from the capture device.
| PcapWrapper::PcapPacket whisper_library::PcapWrapper::retrievePacket | ( | std::string | adapter_name | ) |
Retrieves the next packet from the capture device.
| std::vector< bool > whisper_library::PcapWrapper::retrievePacketAsVector | ( | int | adapter_id | ) |
Calls retrievePacket(adapter_id) and converts the retrieved packet payload in a std::vector<bool>
| std::vector< bool > whisper_library::PcapWrapper::retrievePacketAsVector | ( | std::string | adapter_name | ) |
Calls retrievePacket(adapter_id) and converts the retrieved packet payload in a std::vector<bool>
| int whisper_library::PcapWrapper::sendPacket | ( | int | adapter_id, |
| unsigned char * | packet_buffer, | ||
| int | buffer_size | ||
| ) |
Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages)
| int whisper_library::PcapWrapper::sendPacket | ( | std::string | adapter_name, |
| unsigned char * | packet_buffer, | ||
| int | buffer_size | ||
| ) |
Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages)
| int whisper_library::PcapWrapper::sendPacket | ( | int | adapter_id, |
| std::vector< bool > | packet_data | ||
| ) |
Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages)
| int whisper_library::PcapWrapper::sendPacket | ( | std::string | adapter_name, |
| std::vector< bool > | packet_data | ||
| ) |
Sends a packet using a raw socket via the WinPcap driver (Note: libcap on linux currently doesn't allow sending packages)