libtins 4.5
Loading...
Searching...
No Matches
Tins::RC4EAPOL Class Reference

Class that represents the RC4 EAPOL PDU. More...

#include <eapol.h>

Inheritance diagram for Tins::RC4EAPOL:
Tins::EAPOL Tins::PDU

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 , DOT1AD , DOT1Q , PPPOE ,
  STP , PPI , IPSEC_AH , IPSEC_ESP ,
  PKTAP , MPLS , DOT11_CONTROL_TA , VXLAN ,
  UNKNOWN = 999 , USER_DEFINED_PDU = 1000
}
 Enum which identifies each type of PDU. More...
 
typedef byte_array serialization_type
 

Public Member Functions

 RC4EAPOL ()
 Default constructor.
 
 RC4EAPOL (const uint8_t *buffer, uint32_t total_sz)
 Constructs a RC4EAPOL object from a buffer.
 
uint16_t key_length () const
 Getter for the key length field.
 
uint64_t replay_counter () const
 Getter for the replay counter field.
 
const uint8_t * key_iv () const
 Getter for the key IV field.
 
small_uint< 1 > key_flag () const
 Getter for the key flag field.
 
small_uint< 7 > key_index () const
 Getter for the key index field.
 
const uint8_t * key_sign () const
 Getter for the key signature field.
 
const key_typekey () const
 Getter for the key field.
 
void key_length (uint16_t value)
 Sets the key length field.
 
void replay_counter (uint64_t value)
 Sets the replay counter field.
 
void key_iv (const uint8_t *value)
 Sets the key IV field.
 
void key_flag (small_uint< 1 > value)
 Sets the key flag field.
 
void key_index (small_uint< 7 > value)
 Sets the key index field.
 
void key_sign (const uint8_t *value)
 Sets the key signature field.
 
void key (const key_type &value)
 Sets the key field.
 
uint32_t header_size () const
 Returns the header size.
 
PDUType pdu_type () const
 Getter for the PDU's type.
 
bool matches_flag (PDUType flag) const
 Check whether this PDU matches the specified flag.
 
RC4EAPOLclone () const
 Clones this PDU.
 
- Public Member Functions inherited from Tins::EAPOL
uint8_t version () const
 Getter for the version field.
 
uint8_t packet_type () const
 Getter for the packet type field.
 
uint16_t length () const
 Getter for the length field.
 
uint8_t type () const
 Getter for the type field.
 
void version (uint8_t value)
 Sets the version field.
 
void packet_type (uint8_t value)
 Sets the packet type field.
 
void length (uint16_t value)
 Sets the length field.
 
void type (uint8_t value)
 Sets the type field.
 
- Public Member Functions inherited from Tins::PDU
 PDU ()
 Default constructor.
 
 PDU (PDU &&rhs) TINS_NOEXCEPT
 Move constructor.
 
PDUoperator= (PDU &&rhs) TINS_NOEXCEPT
 Move assignment operator.
 
virtual ~PDU ()
 PDU destructor.
 
virtual uint32_t trailer_size () const
 Trailer's size.
 
uint32_t size () const
 The whole chain of PDU's size, including this one.
 
virtual uint32_t advertised_size () const
 The whole chain of PDU's advertised size, including this one.
 
PDUinner_pdu () const
 Getter for the inner PDU.
 
PDUparent_pdu () const
 
PDUrelease_inner_pdu ()
 Releases the inner PDU.
 
void inner_pdu (PDU *next_pdu)
 Sets the child PDU.
 
void inner_pdu (const PDU &next_pdu)
 Sets the child PDU.
 
serialization_type serialize ()
 Serializes the whole chain of PDU's, including this one.
 
template<typename T >
T * find_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
const T * find_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
T & rfind_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag.
 
template<typename T >
const T & rfind_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag.
 
virtual void send (PacketSender &sender, const NetworkInterface &iface)
 Send the stack of PDUs through a PacketSender.
 
virtual PDUrecv_response (PacketSender &sender, const NetworkInterface &iface)
 Receives a matching response for this packet.
 
virtual bool matches_response (const uint8_t *ptr, uint32_t total_sz) const
 Check whether ptr points to a valid response for this PDU.
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::RC4EAPOL
 
static const size_t key_iv_size = 16
 
static const size_t key_sign_size = 16
 
- 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.
 
static EAPOLfrom_bytes (const uint8_t *buffer, uint32_t total_sz)
 Static method to instantiate the correct EAPOL subclass based on a raw buffer.
 
- 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.
 
- Protected Member Functions inherited from Tins::PDU
 PDU (const PDU &other)
 Copy constructor.
 
PDUoperator= (const PDU &other)
 Copy assignment operator.
 
void copy_inner_pdu (const PDU &pdu)
 Copy other PDU's inner PDU(if any).
 
virtual void prepare_for_serialize ()
 Prepares this PDU for serialization.
 
void serialize (uint8_t *buffer, uint32_t total_sz)
 Serializes this PDU and propagates this action to child PDUs.
 
- Protected Attributes inherited from Tins::EAPOL
TINS_BEGIN_PACK struct Tins::EAPOL::eapol_header TINS_END_PACK
 

Detailed Description

Class that represents the RC4 EAPOL PDU.

Member Typedef Documentation

◆ key_type

std::vector<uint8_t> Tins::RC4EAPOL::key_type

The type used to store the key.

Constructor & Destructor Documentation

◆ RC4EAPOL()

Tins::RC4EAPOL::RC4EAPOL ( const uint8_t * buffer,
uint32_t total_sz )

Constructs a RC4EAPOL object from a buffer.

If there is not enough size for a RC4EAPOL header in the buffer, a malformed_packet exception is thrown.

Parameters
bufferThe buffer from which this PDU will be constructed.
total_szThe total size of the buffer.

Member Function Documentation

◆ clone()

RC4EAPOL * Tins::RC4EAPOL::clone ( ) const
inlinevirtual

Clones this PDU.

See also
PDU::clone

Implements Tins::PDU.

◆ header_size()

uint32_t Tins::RC4EAPOL::header_size ( ) const
virtual

Returns the header size.

This method overrides PDU::header_size. This size includes the payload and options size.

See also
PDU::header_size

Implements Tins::PDU.

◆ key() [1/2]

const key_type & Tins::RC4EAPOL::key ( ) const
inline

Getter for the key field.

Returns
The key field.

◆ key() [2/2]

void Tins::RC4EAPOL::key ( const key_type & value)

Sets the key field.

Parameters
valueThe new key to be set.

◆ key_flag() [1/2]

small_uint< 1 > Tins::RC4EAPOL::key_flag ( ) const
inline

Getter for the key flag field.

Returns
The key flag field.

◆ key_flag() [2/2]

void Tins::RC4EAPOL::key_flag ( small_uint< 1 > value)

Sets the key flag field.

Parameters
valueThe new key flag to be set.

◆ key_index() [1/2]

small_uint< 7 > Tins::RC4EAPOL::key_index ( ) const
inline

Getter for the key index field.

Returns
The key index field.

◆ key_index() [2/2]

void Tins::RC4EAPOL::key_index ( small_uint< 7 > value)

Sets the key index field.

Parameters
valueThe new key index to be set.

◆ key_iv() [1/2]

const uint8_t * Tins::RC4EAPOL::key_iv ( ) const
inline

Getter for the key IV field.

Returns
The key IV field.

◆ key_iv() [2/2]

void Tins::RC4EAPOL::key_iv ( const uint8_t * value)

Sets the key IV field.

Parameters
valueThe new key IV to be set.

◆ key_length() [1/2]

uint16_t Tins::RC4EAPOL::key_length ( ) const
inline

Getter for the key length field.

Returns
The key length field.

◆ key_length() [2/2]

void Tins::RC4EAPOL::key_length ( uint16_t value)

Sets the key length field.

Parameters
valueThe new key length to be set.

◆ key_sign() [1/2]

const uint8_t * Tins::RC4EAPOL::key_sign ( ) const
inline

Getter for the key signature field.

Returns
The key signature field.

◆ key_sign() [2/2]

void Tins::RC4EAPOL::key_sign ( const uint8_t * value)

Sets the key signature field.

Parameters
valueThe new key signature to be set.

◆ matches_flag()

bool Tins::RC4EAPOL::matches_flag ( PDUType flag) const
inlinevirtual

Check whether this PDU matches the specified flag.

Parameters
flagThe flag to match
See also
PDU::matches_flag

Reimplemented from Tins::PDU.

◆ pdu_type()

PDUType Tins::RC4EAPOL::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

Returns
Returns the PDUType corresponding to the PDU.

Reimplemented from Tins::EAPOL.

◆ replay_counter() [1/2]

uint64_t Tins::RC4EAPOL::replay_counter ( ) const
inline

Getter for the replay counter field.

Returns
The replay counter field.

◆ replay_counter() [2/2]

void Tins::RC4EAPOL::replay_counter ( uint64_t value)

Sets the replay counter field.

Parameters
valueThe new replay counter to be set.

Member Data Documentation

◆ key_iv_size

const size_t Tins::RC4EAPOL::key_iv_size = 16
static

The length of the key IV field

◆ key_sign_size

const size_t Tins::RC4EAPOL::key_sign_size = 16
static

The length of the key sign field

◆ pdu_flag

const PDU::PDUType Tins::RC4EAPOL::pdu_flag = PDU::RC4EAPOL
static

This PDU's flag.


The documentation for this class was generated from the following files: