|
libtins
4.0
|
Class that represents the RSN EAPOL PDU. More...
#include <eapol.h>
Public Types | |
| typedef std::vector< uint8_t > | key_type |
Public Types inherited from Tins::EAPOL | |
| enum | EAPOLTYPE { RC4 = 1, RSN, EAPOL_WPA = 254 } |
Public Types inherited from Tins::PDU | |
| enum | endian_type { BE, LE } |
| enum | PDUType { RAW, ETHERNET_II, IEEE802_3, DOT3 = IEEE802_3, RADIOTAP, DOT11, DOT11_ACK, DOT11_ASSOC_REQ, DOT11_ASSOC_RESP, DOT11_AUTH, DOT11_BEACON, DOT11_BLOCK_ACK, DOT11_BLOCK_ACK_REQ, DOT11_CF_END, DOT11_DATA, DOT11_CONTROL, DOT11_DEAUTH, DOT11_DIASSOC, DOT11_END_CF_ACK, DOT11_MANAGEMENT, DOT11_PROBE_REQ, DOT11_PROBE_RESP, DOT11_PS_POLL, DOT11_REASSOC_REQ, DOT11_REASSOC_RESP, DOT11_RTS, DOT11_QOS_DATA, LLC, SNAP, IP, ARP, TCP, UDP, ICMP, BOOTP, DHCP, EAPOL, RC4EAPOL, RSNEAPOL, DNS, LOOPBACK, IPv6, ICMPv6, SLL, DHCPv6, DOT1Q, PPPOE, STP, PPI, IPSEC_AH, IPSEC_ESP, PKTAP, MPLS, UNKNOWN = 999, USER_DEFINED_PDU = 1000 } |
| Enum which identifies each type of PDU. More... | |
| typedef byte_array | serialization_type |
Public Member Functions | |
| RSNEAPOL () | |
| Creates an instance of RSNEAPOL. | |
| RSNEAPOL (const uint8_t *buffer, uint32_t total_sz) | |
| Constructs a RSNEAPOL object from a buffer. More... | |
| uint16_t | key_length () const |
| Getter for the key length field. More... | |
| uint64_t | replay_counter () const |
| Getter for the replay counter field. More... | |
| const uint8_t * | key_iv () const |
| Getter for the key IV field. More... | |
| const uint8_t * | nonce () const |
| Getter for the nonce field. More... | |
| const uint8_t * | rsc () const |
| Getter for the rsc field. More... | |
| const uint8_t * | id () const |
| Getter for the id field. More... | |
| const uint8_t * | mic () const |
| Getter for the mic field. More... | |
| uint16_t | wpa_length () const |
| Getter for the wpa length field. More... | |
| const key_type & | key () const |
| Getter for the key field. More... | |
| small_uint< 1 > | key_mic () const |
| Getter for the key mic field. More... | |
| small_uint< 1 > | secure () const |
| Getter for the secure field. More... | |
| small_uint< 1 > | error () const |
| Getter for the error field. More... | |
| small_uint< 1 > | request () const |
| Getter for the request field. More... | |
| small_uint< 1 > | encrypted () const |
| Getter for the encrypted field. More... | |
| small_uint< 3 > | key_descriptor () const |
| Getter for the key descriptor field. More... | |
| small_uint< 1 > | key_t () const |
| Getter for the key type field. More... | |
| small_uint< 2 > | key_index () const |
| Getter for the key_index field. More... | |
| small_uint< 1 > | install () const |
| Getter for the install field. More... | |
| small_uint< 1 > | key_ack () const |
| Getter for the key_ack field. More... | |
| uint32_t | header_size () const |
| Returns the header size. More... | |
| void | key_length (uint16_t value) |
| Sets the key length field. More... | |
| void | replay_counter (uint64_t value) |
| Sets the replay counter field. More... | |
| void | key_iv (const uint8_t *ptr) |
| Sets the key IV field. More... | |
| void | nonce (const uint8_t *ptr) |
| Sets the nonce field. More... | |
| void | rsc (const uint8_t *ptr) |
| Sets the rsc field. More... | |
| void | id (const uint8_t *ptr) |
| Sets the id field. More... | |
| void | mic (const uint8_t *ptr) |
| Sets the mic field. More... | |
| void | wpa_length (uint16_t length) |
| Sets the wpa length field. More... | |
| void | key (const key_type &value) |
| Sets the key field. More... | |
| void | key_mic (small_uint< 1 > value) |
| Setter for the key_mic field. More... | |
| void | secure (small_uint< 1 > value) |
| Setter for the secure field. More... | |
| void | error (small_uint< 1 > flag) |
| Setter for the error field. More... | |
| void | request (small_uint< 1 > flag) |
| Setter for the request field. More... | |
| void | encrypted (small_uint< 1 > flag) |
| Setter for the encrypted field. More... | |
| void | key_descriptor (small_uint< 3 > value) |
| Setter for the key_descriptor field. More... | |
| void | key_t (small_uint< 1 > flag) |
| Setter for the key_t field. More... | |
| void | key_index (small_uint< 2 > value) |
| Setter for the key_index field. More... | |
| void | install (small_uint< 1 > flag) |
| Setter for the install field. More... | |
| void | key_ack (small_uint< 1 > flag) |
| Setter for the key_ack field. More... | |
| PDUType | pdu_type () const |
| Getter for the PDU's type. More... | |
| bool | matches_flag (PDUType flag) const |
| Check whether this PDU matches the specified flag. More... | |
| RSNEAPOL * | clone () const |
| Clones this PDU. More... | |
Public Member Functions inherited from Tins::EAPOL | |
| uint8_t | version () const |
| Getter for the version field. More... | |
| uint8_t | packet_type () const |
| Getter for the packet type field. More... | |
| uint16_t | length () const |
| Getter for the length field. More... | |
| uint8_t | type () const |
| Getter for the type field. More... | |
| void | version (uint8_t value) |
| Sets the version field. More... | |
| void | packet_type (uint8_t value) |
| Sets the packet type field. More... | |
| void | length (uint16_t value) |
| Sets the length field. More... | |
| void | type (uint8_t value) |
| Sets the type field. More... | |
Public Member Functions inherited from Tins::PDU | |
| PDU () | |
| Default constructor. | |
| PDU (PDU &&rhs) TINS_NOEXCEPT | |
| Move constructor. More... | |
| PDU & | operator= (PDU &&rhs) TINS_NOEXCEPT |
| Move assignment operator. More... | |
| virtual | ~PDU () |
| PDU destructor. More... | |
| virtual uint32_t | trailer_size () const |
| Trailer's size. More... | |
| uint32_t | size () const |
| The whole chain of PDU's size, including this one. More... | |
| PDU * | inner_pdu () const |
| Getter for the inner PDU. More... | |
| PDU * | parent_pdu () const |
| PDU * | release_inner_pdu () |
| Releases the inner PDU. More... | |
| void | inner_pdu (PDU *next_pdu) |
| Sets the child PDU. More... | |
| void | inner_pdu (const PDU &next_pdu) |
| Sets the child PDU. More... | |
| serialization_type | serialize () |
| Serializes the whole chain of PDU's, including this one. More... | |
| template<typename T > | |
| T * | find_pdu (PDUType type=T::pdu_flag) |
| Finds and returns the first PDU that matches the given flag. More... | |
| template<typename T > | |
| const T * | find_pdu (PDUType type=T::pdu_flag) const |
| Finds and returns the first PDU that matches the given flag. More... | |
| template<typename T > | |
| T & | rfind_pdu (PDUType type=T::pdu_flag) |
| Finds and returns the first PDU that matches the given flag. More... | |
| template<typename T > | |
| const T & | rfind_pdu (PDUType type=T::pdu_flag) const |
| Finds and returns the first PDU that matches the given flag. More... | |
| virtual void | send (PacketSender &sender, const NetworkInterface &iface) |
| Send the stack of PDUs through a PacketSender. More... | |
| virtual PDU * | recv_response (PacketSender &sender, const NetworkInterface &iface) |
| Receives a matching response for this packet. More... | |
| virtual bool | matches_response (const uint8_t *ptr, uint32_t total_sz) const |
| Check whether ptr points to a valid response for this PDU. More... | |
Static Public Attributes | |
| static const PDU::PDUType | pdu_flag = PDU::RSNEAPOL |
| This PDU's flag. | |
| static const size_t | key_iv_size = 16 |
| static const size_t | nonce_size = 32 |
| static const size_t | mic_size = 16 |
| static const size_t | rsc_size = 8 |
| static const size_t | id_size = 8 |
Static Public Attributes inherited from Tins::EAPOL | |
| static const PDU::PDUType | pdu_flag = PDU::EAPOL |
| This PDU's flag. | |
Static Public Attributes inherited from Tins::PDU | |
| static const endian_type | endianness = BE |
Additional Inherited Members | |
Static Public Member Functions inherited from Tins::EAPOL | |
| static metadata | extract_metadata (const uint8_t *buffer, uint32_t total_sz) |
| Extracts metadata for this protocol based on the buffer provided. More... | |
| static EAPOL * | from_bytes (const uint8_t *buffer, uint32_t total_sz) |
| Static method to instantiate the correct EAPOL subclass based on a raw buffer. More... | |
Protected Member Functions inherited from Tins::EAPOL | |
| EAPOL (uint8_t packet_type, EAPOLTYPE type) | |
| Protected constructor that sets the packet_type and type fields. | |
| EAPOL (const uint8_t *buffer, uint32_t total_sz) | |
| Constructor which creates an EAPOL object from a buffer. More... | |
Protected Member Functions inherited from Tins::PDU | |
| PDU (const PDU &other) | |
| Copy constructor. | |
| PDU & | operator= (const PDU &other) |
| Copy assignment operator. | |
| void | copy_inner_pdu (const PDU &pdu) |
| Copy other PDU's inner PDU(if any). More... | |
| virtual void | prepare_for_serialize () |
| Prepares this PDU for serialization. More... | |
| void | serialize (uint8_t *buffer, uint32_t total_sz) |
| Serializes this PDU and propagates this action to child PDUs. More... | |
Protected Attributes inherited from Tins::EAPOL | |
| TINS_BEGIN_PACK struct Tins::EAPOL::eapol_header | TINS_END_PACK |
| typedef std::vector<uint8_t> Tins::RSNEAPOL::key_type |
The type used to store the key.
| Tins::RSNEAPOL::RSNEAPOL | ( | const uint8_t * | buffer, |
| uint32_t | total_sz | ||
| ) |
Constructs a RSNEAPOL object from a buffer.
If there is not enough size for the RSNEAPOL header, a malformed_packet exception is thrown.
| buffer | The buffer from which this PDU will be constructed. |
| total_sz | The total size of the buffer. |
|
inlinevirtual |
|
inline |
Getter for the encrypted field.
| void Tins::RSNEAPOL::encrypted | ( | small_uint< 1 > | flag | ) |
Setter for the encrypted field.
| flag | The new to be set. |
|
inline |
Getter for the error field.
| void Tins::RSNEAPOL::error | ( | small_uint< 1 > | flag | ) |
Setter for the error field.
| flag | The new to be set. |
|
virtual |
Returns the header size.
This method overrides PDU::header_size. This size includes the payload and options size.
Implements Tins::PDU.
|
inline |
Getter for the id field.
| void Tins::RSNEAPOL::id | ( | const uint8_t * | ptr | ) |
Sets the id field.
The pointer has to contain at least id_size bytes. The pointer's contents will be copied.
| ptr | The new id to be set. |
|
inline |
Getter for the install field.
| void Tins::RSNEAPOL::install | ( | small_uint< 1 > | flag | ) |
Setter for the install field.
| flag | The new to be set. |
|
inline |
Getter for the key field.
| void Tins::RSNEAPOL::key | ( | const key_type & | value | ) |
Sets the key field.
| value | The new key to be set. |
|
inline |
Getter for the key_ack field.
| void Tins::RSNEAPOL::key_ack | ( | small_uint< 1 > | flag | ) |
Setter for the key_ack field.
| flag | The new to be set. |
|
inline |
Getter for the key descriptor field.
| void Tins::RSNEAPOL::key_descriptor | ( | small_uint< 3 > | value | ) |
Setter for the key_descriptor field.
| value | The new to be set. |
|
inline |
Getter for the key_index field.
| void Tins::RSNEAPOL::key_index | ( | small_uint< 2 > | value | ) |
Setter for the key_index field.
| value | The new to be set. |
|
inline |
Getter for the key IV field.
| void Tins::RSNEAPOL::key_iv | ( | const uint8_t * | ptr | ) |
Sets the key IV field.
The input pointer has to contain at least key_iv_size bytes. The IV will be copied into this PDU.
| ptr | The new key IV to be set. |
|
inline |
Getter for the key length field.
| void Tins::RSNEAPOL::key_length | ( | uint16_t | value | ) |
Sets the key length field.
| value | The new key length to be set. |
|
inline |
| void Tins::RSNEAPOL::key_mic | ( | small_uint< 1 > | value | ) |
Setter for the key_mic field.
| value | The new to be set. |
|
inline |
Getter for the key type field.
| void Tins::RSNEAPOL::key_t | ( | small_uint< 1 > | flag | ) |
Setter for the key_t field.
| flag | The new to be set. |
|
inlinevirtual |
Check whether this PDU matches the specified flag.
| flag | The flag to match |
Reimplemented from Tins::PDU.
|
inline |
Getter for the mic field.
| void Tins::RSNEAPOL::mic | ( | const uint8_t * | ptr | ) |
Sets the mic field.
The pointer has to contain at least mic_size bytes. The pointer's contents will be copied.
| ptr | The new mic to be set. |
|
inline |
Getter for the nonce field.
| void Tins::RSNEAPOL::nonce | ( | const uint8_t * | ptr | ) |
Sets the nonce field.
The pointer has to contain at least nonce_size bytes. The pointer's contents will be copied.
| ptr | The new nonce to be set. |
|
inlinevirtual |
Getter for the PDU's type.
Reimplemented from Tins::EAPOL.
|
inline |
Getter for the replay counter field.
| void Tins::RSNEAPOL::replay_counter | ( | uint64_t | value | ) |
Sets the replay counter field.
| value | The new replay counter to be set. |
|
inline |
Getter for the request field.
| void Tins::RSNEAPOL::request | ( | small_uint< 1 > | flag | ) |
Setter for the request field.
| flag | The new to be set. |
|
inline |
Getter for the rsc field.
| void Tins::RSNEAPOL::rsc | ( | const uint8_t * | ptr | ) |
Sets the rsc field.
The pointer has to contain at least rsc_size bytes. The pointer's contents will be copied.
| ptr | The new rsc to be set. |
|
inline |
Getter for the secure field.
| void Tins::RSNEAPOL::secure | ( | small_uint< 1 > | value | ) |
Setter for the secure field.
| value | The new to be set. |
|
inline |
Getter for the wpa length field.
| void Tins::RSNEAPOL::wpa_length | ( | uint16_t | length | ) |
Sets the wpa length field.
| length | The new wpa length to be set. |
|
static |
The length of the id field
|
static |
The length of the key IV field
|
static |
The length of the mic field
|
static |
The length of the nonce field
|
static |
The length of the rsc field
1.8.11